feat(container): update app-template to v3.6.1 #267
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json | |
name: "Pre-pull Images" | |
on: | |
pull_request: | |
branches: ["main"] | |
paths: | |
- kubernetes/**/apps/** | |
- kubernetes/**/flux/** | |
- kubernetes/shared/** | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
HOMEBREW_NO_ANALYTICS: "1" | |
jobs: | |
changed-clusters: | |
name: Changed Clusters | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.changed-clusters.outputs.all_changed_and_modified_files }} | |
steps: | |
- name: Get Secrets | |
uses: bitwarden/sm-action@v2 | |
with: | |
access_token: ${{ secrets.BW_ACCESS_TOKEN }} | |
secrets: | | |
a1ebf68f-7c5c-4c55-a84f-b25500fe34e7 > BOT_APP_ID | |
e04c3c7c-5f88-4261-88de-b25500fed32b > BOT_APP_PRIVATE_KEY | |
- name: Generate Token | |
uses: actions/create-github-app-token@v1 | |
id: app-token | |
with: | |
app-id: ${{ env.BOT_APP_ID }} | |
private-key: ${{ env.BOT_APP_PRIVATE_KEY }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ steps.app-token.outputs.token }} | |
fetch-depth: 0 | |
- name: Get Changed Clusters | |
id: changed-clusters | |
uses: tj-actions/changed-files@v45 | |
with: | |
files: kubernetes/** | |
files_ignore: kubernetes/shared/** | |
dir_names: true | |
dir_names_max_depth: 2 | |
matrix: true | |
- name: List All Changed Clusters | |
run: echo ${{ steps.changed-clusters.outputs.all_changed_and_modified_files }} | |
extract-images: | |
name: Extract Images | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
branches: ["default", "pull"] | |
paths: ${{ fromJSON(needs.changed-clusters.outputs.matrix) }} | |
fail-fast: false | |
outputs: | |
default: ${{ steps.extract-images.outputs.default }} | |
pull: ${{ steps.extract-images.outputs.pull }} | |
steps: | |
- name: Get Secrets | |
uses: bitwarden/sm-action@v2 | |
with: | |
access_token: ${{ secrets.BW_ACCESS_TOKEN }} | |
secrets: | | |
a1ebf68f-7c5c-4c55-a84f-b25500fe34e7 > BOT_APP_ID | |
e04c3c7c-5f88-4261-88de-b25500fed32b > BOT_APP_PRIVATE_KEY | |
- name: Generate Token | |
uses: actions/create-github-app-token@v1 | |
id: app-token | |
with: | |
app-id: ${{ env.BOT_APP_ID }} | |
private-key: ${{ env.BOT_APP_PRIVATE_KEY }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
token: "${{ steps.app-token.outputs.token }}" | |
ref: "${{ matrix.branches == 'default' && github.event.repository.default_branch || '' }}" | |
- name: Grab Cluster Name | |
run: | | |
cluster="${{ matrix.paths }}" | |
cluster="${cluster/kubernetes\//}" | |
echo "cluster=${cluster^^}" >> $GITHUB_ENV | |
- name: Gather Images | |
uses: docker://ghcr.io/allenporter/flux-local:v7.0.0 | |
with: | |
args: >- | |
get cluster | |
--path /github/workspace/kubernetes/${{ env.cluster }}/flux | |
--enable-images | |
--output yaml | |
--output-file images.yaml | |
- name: Extract Images | |
id: extract-images | |
run: | | |
images=$(yq --indent=0 --output-format=json \ | |
'[.. | .images? | select(. != null)] | flatten | sort | unique' images.yaml \ | |
) | |
echo "${{ matrix.branches }}=${images}" >> $GITHUB_OUTPUT | |
compare-images: | |
name: Compare Images | |
runs-on: ubuntu-latest | |
needs: ["extract-images"] | |
outputs: | |
images: ${{ steps.compare-images.outputs.images }} | |
steps: | |
- name: Compare Images | |
id: compare-images | |
run: | | |
images=$(jq --compact-output --null-input \ | |
--argjson f1 '${{ needs.extract-images.outputs.default }}' \ | |
--argjson f2 '${{ needs.extract-images.outputs.pull }}' \ | |
'$f2 - $f1' \ | |
) | |
echo "images=${images}" >> $GITHUB_OUTPUT | |
pre-pull-images: | |
if: ${{ needs.compare-images.outputs.images != '[]' }} | |
name: Pre-pull Images | |
runs-on: ["gha-runner-scale-set"] | |
needs: ["compare-images"] | |
strategy: | |
matrix: | |
images: ${{ fromJSON(needs.compare-images.outputs.images) }} | |
paths: ${{ fromJSON(needs.extract-images.outputs.paths) }} | |
max-parallel: 4 | |
fail-fast: false | |
steps: | |
- name: Grab Cluster Name | |
run: | | |
cluster="${{ matrix.paths }}" | |
cluster="${cluster/kubernetes\//}" | |
echo "cluster=${cluster^^}" >> $GITHUB_ENV | |
- name: Set TALOSCONFIG UUID based on cluster | |
id: set_talosconfig_uuid | |
run: | | |
if [ "${{ env.cluster }}" == "MAIN" ]; then | |
echo "TALOSCONFIG_UUID=3e024961-ec9a-46e4-b288-b25e0176d5ad" >> $GITHUB_ENV | |
elif [ "${{ env.cluster }}" == "UTILITY" ]; then | |
echo "TALOSCONFIG_UUID=9d84521d-69b6-4f2a-b533-b25e0176dee7" >> $GITHUB_ENV | |
else | |
echo "TALOSCONFIG_UUID=default-uuid" >> $GITHUB_ENV | |
fi | |
- name: Get Secrets | |
uses: bitwarden/sm-action@v2 | |
with: | |
access_token: ${{ secrets.BW_ACCESS_TOKEN }} | |
secrets: | | |
${{ env.TALOSCONFIG_UUID }} > TALOSCONFIG_BASE64 | |
- name: Write talosconfig | |
id: talosconfig | |
uses: timheuer/base64-to-file@v1 | |
with: | |
encodedString: "${{ env.TALOSCONFIG_BASE64 }}" | |
fileName: talosconfig | |
- name: Setup Homebrew | |
uses: Homebrew/actions/setup-homebrew@master | |
- name: Setup Workflow Tools | |
run: brew install siderolabs/tap/talosctl | |
- name: Pre-pull Image | |
env: | |
TALOSCONFIG: ${{ steps.talosconfig.outputs.filePath }} | |
run: | | |
NODE=$(talosctl config info --output json | jq --raw-output '.nodes[]' | shuf -n 1) | |
talosctl -n $NODE image pull ${{ matrix.images }} | |
# Summarize matrix https://git.luolix.topmunity/t/status-check-for-a-matrix-jobs/127354/7 | |
pre-pull-images-success: | |
if: ${{ always() }} | |
needs: ["pre-pull-images"] | |
name: Pre-pull Images Successful | |
runs-on: ubuntu-latest | |
steps: | |
- if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }} | |
name: Check matrix status | |
run: exit 1 |