Feat: Add packer verify Github Actions workflow
[releng/builder.git] / .github / workflows / gerrit-packer-verify.yaml
diff --git a/.github/workflows/gerrit-packer-verify.yaml b/.github/workflows/gerrit-packer-verify.yaml
deleted file mode 100644 (file)
index 84d0b1b..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
----
-name: Packer Verify
-
-# yamllint disable-line rule:truthy
-on:
-  workflow_dispatch:
-    inputs:
-      GERRIT_BRANCH:
-        description: "Branch that change is against"
-        required: true
-        type: string
-        default: master
-      GERRIT_CHANGE_ID:
-        description: "The ID for the change"
-        required: true
-        type: string
-      GERRIT_CHANGE_NUMBER:
-        description: "The Gerrit number"
-        required: true
-        type: string
-      GERRIT_CHANGE_URL:
-        description: "URL to the change"
-        required: true
-        type: string
-      GERRIT_EVENT_TYPE:
-        description: "Type of Gerrit event"
-        required: true
-        type: string
-      GERRIT_PATCHSET_NUMBER:
-        description: "The patch number for the change"
-        required: true
-        type: string
-      GERRIT_PATCHSET_REVISION:
-        description: "The revision sha"
-        required: true
-        type: string
-      GERRIT_PROJECT:
-        description: "Project in Gerrit"
-        required: true
-        type: string
-        default: releng/builder
-      GERRIT_REFSPEC:
-        description: "Gerrit refspec of change"
-        required: true
-        type: string
-        default: master
-
-env:
-  OS_CLOUD: "vex"
-  PACKER_VERSION: "1.9.1"
-
-concurrency:
-  group: packer-${{ github.event.inputs.GERRIT_CHANGE_ID || github.run_id }}
-  cancel-in-progress: true
-
-jobs:
-  prepare:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Clear votes
-        uses: lfit/gerrit-review-action@v0.4
-        with:
-          host: ${{ vars.GERRIT_SERVER }}
-          username: ${{ vars.GERRIT_SSH_USER }}
-          key: ${{ secrets.GERRIT_SSH_PRIVKEY }}
-          known_hosts: ${{ vars.GERRIT_KNOWN_HOSTS }}
-          gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }}
-          gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }}
-          vote-type: clear
-          comment-only: true
-      - name: Allow replication
-        run: sleep 10s
-
-  packer-validator:
-    needs: prepare
-    runs-on: ubuntu-latest
-    steps:
-      - uses: lfit/checkout-gerrit-change-action@v0.4
-        with:
-          gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
-          delay: "0s"
-      - name: Clone git submodules
-        run: git submodule update --init
-      - name: Setup packer
-        uses: hashicorp/setup-packer@main
-        id: setup
-        with:
-          version: ${{ env.PACKER_VERSION }}
-      - name: Create cloud-env file required for packer
-        id: create-cloud-env-file
-        shell: bash
-        run: |
-          echo "${{ secrets.CLOUDS_ENV_B64 }}" | base64 --decode > "${GITHUB_WORKSPACE}/cloud-env.pkrvars.hcl"
-      - name: Create cloud.yaml file for openstack client
-        id: create-cloud-yaml-file
-        shell: bash
-        run: |
-          mkdir -p "$HOME/.config/openstack"
-          echo "${{ secrets.CLOUDS_YAML_B64 }}" | base64 --decode > "$HOME/.config/openstack/clouds.yaml"
-      - uses: actions/setup-python@v4
-        id: setup-python
-        with:
-          python-version: "3.11"
-      - name: Install openstack deps
-        id: install-openstack-deps
-        run: |
-          python -m pip install --upgrade pip
-          pip install python-openstackclient
-          pip freeze
-      - uses: dorny/paths-filter@v2
-        id: changes
-        with:
-          base: ${{ inputs.GERRIT_BRANCH }}
-          ref: ${{ inputs.GERRIT_PATCHSET_REVISION }}
-          filters: |
-            src:
-              - 'packer/**'
-      - if: steps.changes.outputs.src == 'true'
-        run: |
-          set -x
-          cd packer
-
-          varfiles=(common-packer/vars/*.pkrvars.hcl)
-          templates=(templates/*.pkr.hcl)
-
-          mkdir -p "${GITHUB_WORKSPACE}/logs"
-          PACKER_LOGS_DIR="${GITHUB_WORKSPACE}/logs"
-
-          for varfile in "${varfiles[@]}"; do
-              if [[ "$varfile" == *"cloud-env.json"* ]] || \
-                 [[ "$varfile" == "vars/*.json" ]] || \
-                 [[ "$varfile" == *"cloud-env.pkrvars.hcl"* ]] || \
-                 [[ "$varfile" == *"cloud-env-aws.pkrvars.hcl"* ]] || \
-                 [[ "$varfile" == "vars/*.pkrvars.hcl" ]]; then
-                  continue
-              fi
-
-              echo "-----> Test var: $varfile"
-              for template in "${templates[@]}"; do
-                  if [[ "$template" == *"variables.pkr.hcl"* ]] || \
-                     [[ "$template" == *"variables.auto.pkr.hcl"* ]]; then
-                      continue
-                  fi
-
-                  if [[ "${template#*.}" == "pkr.hcl" ]]; then
-                      echo "packer init $template ..."
-                      packer init "$template"
-                  fi
-
-                  export PACKER_LOG="yes"
-                  export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log"
-                  if output=$(OS_CLOUD=${{ env.OS_CLOUD }} packer validate \
-                                  -var-file="${GITHUB_WORKSPACE}/cloud-env.pkrvars.hcl" \
-                                  -var-file="$varfile" "$template"); then
-                      echo "$template: $output"
-                  else
-                      echo "$template: $output"
-                      exit 1
-                  fi
-              done
-          done
-
-  vote:
-    if: ${{ always() }}
-    needs: [prepare, packer-validator]
-    runs-on: ubuntu-latest
-    steps:
-      - uses: technote-space/workflow-conclusion-action@v3
-      - name: Set vote
-        uses: lfit/gerrit-review-action@v0.4
-        with:
-          host: ${{ vars.GERRIT_SERVER }}
-          username: ${{ vars.GERRIT_SSH_USER }}
-          key: ${{ secrets.GERRIT_SSH_PRIVKEY }}
-          known_hosts: ${{ vars.GERRIT_KNOWN_HOSTS }}
-          gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }}
-          gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }}
-          vote-type: ${{ env.WORKFLOW_CONCLUSION }}
-          comment-only: true