From 877fc242352292434d704a5ba32e12834fff38f0 Mon Sep 17 00:00:00 2001 From: djpbessems Date: Wed, 5 Jun 2024 10:33:01 +1000 Subject: [PATCH] build: Attempt initial actions workflow --- .gitea/workflows/actions.yaml | 115 ++++++++++++++++++++++++++++++++++ .yamllint.yaml | 4 ++ 2 files changed, 119 insertions(+) create mode 100644 .gitea/workflows/actions.yaml create mode 100644 .yamllint.yaml diff --git a/.gitea/workflows/actions.yaml b/.gitea/workflows/actions.yaml new file mode 100644 index 0000000..7ce6d70 --- /dev/null +++ b/.gitea/workflows/actions.yaml @@ -0,0 +1,115 @@ +name: Container & Helm chart +on: [push] + +jobs: + linting: + name: Linting + runs-on: dind-rootless + steps: + - name: yamllint + uses: bewuethr/yamllint-action@v1 + with: + config-file: .yamllint.yaml + + semrel_dryrun: + name: Semantic Release (Dry-run) + runs-on: dind-rootless + outputs: + version: ${{ steps.sem_rel.outputs.version }} + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 20 + - name: Install dependencies + run: | + npm install \ + semantic-release \ + @semantic-release/commit-analyzer \ + @semantic-release/exec + - name: Semantic Release (dry-run) + id: sem_rel + run: | + npx semantic-release \ + --package @semantic-release/exec \ + --package semantic-release \ + --branches ${{ gitea.refname }} \ + --tag-format 'v${version}' \ + --dry-run \ + --plugins @semantic-release/commit-analyzer,@semantic-release/exec \ + --analyzeCommits @semantic-release/commit-analyzer \ + --verifyRelease @semantic-release/exec \ + --verifyReleaseCmd 'echo "version=${nextRelease.version}" >> $GITHUB_OUTPUT' + env: + GIT_CREDENTIALS: ${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_APIKEY }} + - name: Assert semantic release output + run: | + [[ -z "${{ steps.sem_rel.outputs.version }}" ]] && { + echo 'No release tag - exiting'; exit 1 + } || { + echo 'Release tag set correctly: ${{ steps.sem_rel.outputs.version }}'; exit 0 + } + + build_image: + name: Container image + container: catthehacker/ubuntu:act-latest + runs-on: dind-rootless + needs: [semrel_dryrun, linting] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup `packer` + uses: hashicorp/setup-packer@main + id: setup + with: + version: "latest" + - name: Run `packer init` + id: init + run: packer init -upgrade ./packer + # - name: Run `packer validate` + # id: validate + # run: | + # packer validate \ + # -only=vsphere-iso.bootstrap \ + # -var vm_name=${DRONE_BUILD_NUMBER}-${DRONE_COMMIT_SHA:0:10}-$(openssl rand -hex 3) \ + # -var docker_username=$${DOCKER_USERNAME} \ + # -var docker_password=$${DOCKER_PASSWORD} \ + # -var repo_username=$${REPO_USERNAME} \ + # -var repo_password=$${REPO_PASSWORD} \ + # -var ssh_password=$${SSH_PASSWORD} \ + # -var vsphere_password=$${VSPHERE_PASSWORD} \ + # -var k8s_version=$K8S_VERSION \ + # -var appliance_version=$APPLIANCE_VERSION \ + # ./packer + # - name: Build Artifact + # run: packer build -color=false -on-error=abort ./image.pkr.hcl + + # semrel: + # name: Semantic Release + # runs-on: dind-rootless + # needs: [build_container, build_chart] + # steps: + # - name: Check out repository code + # uses: actions/checkout@v3 + # - name: Setup Node + # uses: actions/setup-node@v3 + # with: + # node-version: 20 + # - name: Install dependencies + # run: | + # npm install \ + # semantic-release \ + # @semantic-release/changelog \ + # @semantic-release/commit-analyzer \ + # @semantic-release/git \ + # @semantic-release/release-notes-generator + # - name: Semantic Release + # run: | + # npx semantic-release \ + # --branches ${{ gitea.refname }} \ + # --tag-format 'v${version}' \ + # --plugins @semantic-release/commit-analyzer,@semantic-release/release-notes-generator,@semantic-release/changelog,@semantic-release/git + # env: + # GIT_CREDENTIALS: ${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_APIKEY }} diff --git a/.yamllint.yaml b/.yamllint.yaml new file mode 100644 index 0000000..7b7fa1b --- /dev/null +++ b/.yamllint.yaml @@ -0,0 +1,4 @@ +extends: relaxed + +rules: + line-length: disable