name: Ensure CAPI images on: workflow_call: outputs: kube-1-26-image: value: ${{ jobs.produce_outputs.outputs.kube-1-26-image }} kube-1-26-version: value: ${{ jobs.produce_outputs.outputs.kube-1-26-version }} kube-1-27-image: value: ${{ jobs.produce_outputs.outputs.kube-1-27-image }} kube-1-27-version: value: ${{ jobs.produce_outputs.outputs.kube-1-27-version }} kube-1-28-image: value: ${{ jobs.produce_outputs.outputs.kube-1-28-image }} kube-1-28-version: value: ${{ jobs.produce_outputs.outputs.kube-1-28-version }} jobs: image_manifest: runs-on: ubuntu-latest outputs: manifest: ${{ steps.images.outputs.manifest }} steps: - name: Checkout uses: actions/checkout@v3 - name: Fetch image details id: images run: | VN="$(jq -r '.["azimuth-images"]' ./dependencies.json)" MANIFEST="$(curl -fsSL "https://github.com/stackhpc/azimuth-images/releases/download/${VN}/manifest.json")" echo "manifest=$(jq -c . <<< "$MANIFEST")" >> $GITHUB_OUTPUT ensure_image: runs-on: ubuntu-latest needs: [image_manifest] strategy: fail-fast: false matrix: include: - name: kube-1-26 image: ${{ fromJSON(needs.image_manifest.outputs.manifest).kubernetes-1-26-focal }} skip: false # skip: ${{ github.event.pull_request.draft }} - name: kube-1-27 image: ${{ fromJSON(needs.image_manifest.outputs.manifest).kubernetes-1-27-focal }} skip: false # skip: ${{ github.event.pull_request.draft }} - name: kube-1-28 image: ${{ fromJSON(needs.image_manifest.outputs.manifest).kubernetes-1-28-focal }} skip: false steps: - name: Checkout uses: actions/checkout@v3 if: ${{ !matrix.skip }} - name: Write cloud credential run: > echo "$CLOUD" > clouds.yml shell: bash env: CLOUD: ${{ secrets.CLOUD }} if: ${{ !matrix.skip }} - uses: actions/setup-python@v4 with: python-version: '3.9' check-latest: true if: ${{ !matrix.skip }} - name: Install OpenStack CLI run: pip install python-openstackclient if: ${{ !matrix.skip }} - name: Ensure Kubernetes image id: ensure-image uses: ./.github/actions/ensure-image with: image-name: ${{ matrix.image.name }} image-url: ${{ matrix.image.url }} if: ${{ !matrix.skip }} - name: Write matrix outputs uses: cloudposse/github-action-matrix-outputs-write@0.4.2 with: matrix-step-name: ${{ github.job }} matrix-key: ${{ matrix.name }} outputs: |- image-id: ${{ steps.ensure-image.outputs.image-id }} kube-version: ${{ matrix.image.kubernetes_version }} if: ${{ !matrix.skip }} produce_outputs: runs-on: ubuntu-latest needs: [ensure_image] outputs: kube-1-26-image: ${{ fromJSON(steps.matrix-outputs.outputs.result).image-id.kube-1-26 }} kube-1-26-version: ${{ fromJSON(steps.matrix-outputs.outputs.result).kube-version.kube-1-26 }} kube-1-27-image: ${{ fromJSON(steps.matrix-outputs.outputs.result).image-id.kube-1-27 }} kube-1-27-version: ${{ fromJSON(steps.matrix-outputs.outputs.result).kube-version.kube-1-27 }} kube-1-28-image: ${{ fromJSON(steps.matrix-outputs.outputs.result).image-id.kube-1-28 }} kube-1-28-version: ${{ fromJSON(steps.matrix-outputs.outputs.result).kube-version.kube-1-28 }} steps: - name: Read matrix outputs id: matrix-outputs uses: cloudposse/github-action-matrix-outputs-read@0.1.1 with: matrix-step-name: ensure_image