Skip to content

Commit

Permalink
chore(github): update workflows for the 500x time this week
Browse files Browse the repository at this point in the history
  • Loading branch information
buroa committed Dec 25, 2023
1 parent daaaf78 commit 145d8b6
Show file tree
Hide file tree
Showing 3 changed files with 213 additions and 132 deletions.
69 changes: 57 additions & 12 deletions .github/workflows/flux-diff.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,39 +4,73 @@ name: Flux Diff
on:
pull_request:
branches: ["master"]
paths: ["kubernetes/**.yaml"]
paths: ["kubernetes/**"]

concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true

jobs:
changed-files:
name: Changed Files
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.changed-files.outputs.all_changed_and_modified_files }}
steps:
- name: Generate Token
uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: "${{ secrets.BOT_APP_ID }}"
private-key: "${{ secrets.BOT_APP_PRIVATE_KEY }}"

- name: Checkout
uses: actions/checkout@v4
with:
token: "${{ steps.app-token.outputs.token }}"

- name: Get Changed Files
id: changed-files
uses: tj-actions/changed-files@v41
with:
files: kubernetes/**
dir_names: true
dir_names_max_depth: 2
json: true
escape_json: false

- name: List All Changed Files
run: echo "${{ steps.changed-files.outputs.all_changed_and_modified_files }}"

flux-diff:
name: Flux Diff
runs-on: ubuntu-latest
needs: ["changed-files"]
permissions:
pull-requests: write
strategy:
matrix:
path: ["kubernetes"]
paths: ${{ fromJSON(needs.changed-files.outputs.matrix) }}
resources: ["helmrelease", "kustomization"]
max-parallel: 4
fail-fast: false
steps:
- name: Generate Token
uses: actions/create-github-app-token@2986852ad836768dfea7781f31828eb3e17990fa # v1.6.2
uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: "${{ secrets.BOT_APP_ID }}"
private-key: "${{ secrets.BOT_APP_PRIVATE_KEY }}"

- name: Checkout Live Branch
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Checkout Default Branch
uses: actions/checkout@v4
with:
token: "${{ steps.app-token.outputs.token }}"
ref: master
ref: "${{ github.event.repository.default_branch }}"
path: default

- name: Checkout PR branch
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Checkout Pull Request Branch
uses: actions/checkout@v4
with:
token: "${{ steps.app-token.outputs.token }}"
path: pull
Expand All @@ -48,8 +82,8 @@ jobs:
--log-level DEBUG
diff ${{ matrix.resources }}
--unified 6
--path-orig /github/workspace/default/${{ matrix.path }}
--path /github/workspace/pull/${{ matrix.path }}
--path-orig /github/workspace/default/${{ matrix.paths }}
--path /github/workspace/pull/${{ matrix.paths }}
--strip-attrs "helm.sh/chart,checksum/config,app.kubernetes.io/version,chart"
--limit-bytes 10000
--all-namespaces
Expand All @@ -66,12 +100,23 @@ jobs:
- if: ${{ steps.diff.outputs.diff != '' }}
name: Add comment
uses: mshick/add-pr-comment@7c0890544fb33b0bdd2e59467fbacb62e028a096 # v2.8.1
uses: mshick/[email protected]
with:
repo-token: "${{ steps.app-token.outputs.token }}"
message-id: "${{ github.event.pull_request.number }}/${{ matrix.path }}/${{ matrix.resources }}"
message-id: "${{ github.event.pull_request.number }}/${{ matrix.paths }}/${{ matrix.resources }}"
message-failure: Diff was not successful
message: |
```diff
${{ steps.diff.outputs.diff }}
```
# Summarize matrix https://github.community/t/status-check-for-a-matrix-jobs/127354/7
flux-diff-success:
if: ${{ always() }}
needs: ["flux-diff"]
name: Flux Diff Successful
runs-on: ubuntu-latest
steps:
- if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
name: Check matrix status
run: exit 1
120 changes: 0 additions & 120 deletions .github/workflows/flux-hr-image-test.yaml

This file was deleted.

156 changes: 156 additions & 0 deletions .github/workflows/flux-image-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
---
name: Flux Image Test

on:
pull_request:
branches: ["master"]
paths: ["kubernetes/**"]

concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true

jobs:
changed-files:
name: Changed Files
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.changed-files.outputs.all_changed_and_modified_files }}
steps:
- name: Generate Token
uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: "${{ secrets.BOT_APP_ID }}"
private-key: "${{ secrets.BOT_APP_PRIVATE_KEY }}"

- name: Checkout
uses: actions/checkout@v4
with:
token: "${{ steps.app-token.outputs.token }}"

- name: Get Changed Files
id: changed-files
uses: tj-actions/changed-files@v41
with:
files: kubernetes/**
dir_names: true
dir_names_max_depth: 2
json: true
escape_json: false

- name: List All Changed Files
run: echo "${{ steps.changed-files.outputs.all_changed_and_modified_files }}"

extract-images:
name: Extract Images
runs-on: ubuntu-latest
needs: ["changed-files"]
permissions:
pull-requests: write
strategy:
matrix:
paths: ${{ fromJSON(needs.changed-files.outputs.matrix) }}
max-parallel: 4
fail-fast: false
outputs:
matrix: ${{ steps.extract-images.outputs.images }}
steps:
- name: Generate Token
uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: "${{ secrets.BOT_APP_ID }}"
private-key: "${{ secrets.BOT_APP_PRIVATE_KEY }}"

- name: Setup System Tools
shell: bash
run: sudo apt-get -qq update && sudo apt-get -qq install --no-install-recommends -y curl git

- name: Setup Workflow Tools
uses: jdx/rtx-action@v1
with:
install: true
cache: true
rtx_toml: |
[tools]
flux2 = "latest"
yq = "latest"
- name: Checkout Default Branch
uses: actions/checkout@v4
with:
token: "${{ steps.app-token.outputs.token }}"
ref: "${{ github.event.repository.default_branch }}"
path: default

- name: Checkout Pull Request Branch
uses: actions/checkout@v4
with:
token: "${{ steps.app-token.outputs.token }}"
path: pull

- name: Gather Images in Default Branch
uses: docker://ghcr.io/allenporter/flux-local:pr-472
with:
args: >-
get cluster
--path /github/workspace/default/${{ matrix.paths }}
--enable-images
--output yaml
--output-file default.yaml
- name: Gather Images in Pull Request Branch
uses: docker://ghcr.io/allenporter/flux-local:pr-472
with:
args: >-
get cluster
--path /github/workspace/pull/${{ matrix.paths }}
--enable-images
--output yaml
--output-file pull.yaml
- name: Filter Default Branch Results
shell: bash
run: |
yq -r '[.. | .images? | select(. != null)] | flatten | sort | unique | .[]' \
default.yaml > default.txt
- name: Filter Pull Request Branch Results
shell: bash
run: |
yq -r '[.. | .images? | select(. != null)] | flatten | sort | unique | .[]' \
pull.yaml > pull.txt
- name: Compare Default and Pull Request Images
id: extract-images
shell: bash
run: |
images=$(jo -a $(grep -vf default.txt pull.txt))
echo "images=${images}" >> $GITHUB_OUTPUT
echo "${images}"
test-images:
if: ${{ needs.extract-images.outputs.matrix != '[]' }}
name: Test images
runs-on: ubuntu-latest
needs: ["extract-images"]
strategy:
matrix:
images: ${{ fromJSON(needs.extract-images.outputs.matrix) }}
max-parallel: 4
fail-fast: false
steps:
- name: Test Images
run: docker pull ${{ matrix.images }}

# Summarize matrix https://github.community/t/status-check-for-a-matrix-jobs/127354/7
test-images-success:
if: ${{ always() }}
needs: ["test-images"]
name: Test Images Successful
runs-on: ubuntu-latest
steps:
- if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
name: Check matrix status
run: exit 1

0 comments on commit 145d8b6

Please sign in to comment.