description: "Branch that change is against"
required: true
type: string
- default: master
GERRIT_CHANGE_ID:
description: "The ID for the change"
required: true
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"
+ PACKER_VERSION: "1.8.6"
concurrency:
group: ${{ github.event.inputs.GERRIT_CHANGE_ID || github.run_id }}
needs: prepare
runs-on: ubuntu-latest
steps:
- - uses: lfit/checkout-gerrit-change-action@v0.4
+ - uses: lfit/checkout-gerrit-change-action@v0.3
with:
gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
delay: "0s"
needs: prepare
runs-on: ubuntu-latest
steps:
- - uses: lfit/checkout-gerrit-change-action@v0.4
+ - uses: lfit/checkout-gerrit-change-action@v0.3
with:
gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
delay: "0s"
needs: prepare
runs-on: ubuntu-latest
steps:
- - uses: lfit/checkout-gerrit-change-action@v0.4
+ - uses: lfit/checkout-gerrit-change-action@v0.3
with:
gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
delay: "0s"
needs: prepare
runs-on: ubuntu-latest
steps:
- - uses: lfit/checkout-gerrit-change-action@v0.4
+ - uses: lfit/checkout-gerrit-change-action@v0.3
with:
gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
delay: "0s"
run: >-
pipx run tox
- packer-validator:
+ packer-validation:
needs: prepare
runs-on: ubuntu-latest
steps:
- - uses: lfit/checkout-gerrit-change-action@v0.4
+ - uses: lfit/checkout-gerrit-change-action@v0.3
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
+ env:
+ AUTH_URL: ${{ secrets.cloud_auth_url }}
+ CLOUD_ENV: "packer/cloud-env.json"
with:
+ cloud_auth_url: "https://auth.vexxhost.net/v3/"
+ cloud_tenant: ${{ secrets.cloud_tenant }}
+ cloud_user: ${{ secrets.cloud_user }}
+ cloud_network: ${{ secrets.cloud_network }}
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
+ cloud_pass: ${{ secrets.cloud_pass }}
+ dicrectory: packer
+ file_name: cloud-env.json
+ fail_on_empty: true
+ - name: Clone git submodules
+ run: git submodule update --init
- uses: dorny/paths-filter@v2
id: changes
with:
- base: ${{ inputs.GERRIT_BRANCH }}
- ref: ${{ inputs.GERRIT_REFSPEC }}
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"
+ varfiles=(vars/*.json common-packer/vars/*.json)
+ templates=(templates/*.json)
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
+ # cloud-env.json is a file containing credentials which is pulled in via
+ # CLOUDENV variable so skip it here. Also handle the case where a project
+ # has not vars/*.json file.
+ if [[ "$varfile" == *"cloud-env.json"* ]] || [[ "$varfile" == 'vars/*.json' ]]; then
continue
fi
- echo "-----> Test var: $varfile"
+ echo "-----> Testing varfile: $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
+ if output=$(packer validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then
echo "$template: $output"
else
echo "$template: $output"
pre-commit,
jjb-validation,
tox-verify,
- packer-validator,
+ packer-validation,
]
runs-on: ubuntu-latest
steps: