Skip to content

Commit

Permalink
feat(github): better workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
buroa committed Dec 31, 2024
1 parent 137ebe4 commit 87ee6c0
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 51 deletions.
30 changes: 15 additions & 15 deletions .github/workflows/flux-diff.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,47 +29,47 @@ jobs:
app-id: "${{ secrets.BOT_APP_ID }}"
private-key: "${{ secrets.BOT_APP_PRIVATE_KEY }}"

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

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

- name: Diff Resources
uses: docker://ghcr.io/allenporter/flux-local:v6.1.1
with:
args: >-
diff ${{ matrix.resources }}
--unified 6
--path-orig /github/workspace/default/kubernetes/flux
--path /github/workspace/pull/kubernetes/flux
--path ${{ github.workspace }}/pull/kubernetes/flux
--path-orig ${{ github.workspace }}/default/kubernetes/flux
--strip-attrs "helm.sh/chart,checksum/config,app.kubernetes.io/version,chart"
--limit-bytes 10000
--all-namespaces
--sources "${{ github.event.repository.name }}"
--sources "k8s-gitops"
--output-file diff.patch
- name: Generate Diff
id: diff
run: |
cat diff.patch;
{
echo 'diff<<EOF'
cat diff.patch
echo EOF
echo 'diff<<EOF'
cat diff.patch
echo EOF
} >> "$GITHUB_OUTPUT";
{
echo "### Diff"
echo '```diff'
cat diff.patch
echo '```'
echo "### Diff"
echo '```diff'
cat diff.patch
echo '```'
} >> "$GITHUB_STEP_SUMMARY"
- if: ${{ steps.diff.outputs.diff != '' }}
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/helm-repository-sync.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ jobs:
uses: Homebrew/actions/setup-homebrew@master

- name: Setup Workflow Tools
run: brew install fluxcd/tap/flux yq
shell: bash
run: brew install fluxcd/tap/flux

- name: Generate Token
uses: actions/create-github-app-token@v1
Expand All @@ -40,7 +41,7 @@ jobs:
fetch-depth: 0

- if: ${{ github.event.inputs.helmRepoNamespace == '' && github.event.inputs.helmRepoName == '' }}
name: Get changed files
name: Get Changed Files
id: changed-files
uses: tj-actions/changed-files@v45
with:
Expand Down
94 changes: 60 additions & 34 deletions .github/workflows/pre-pull-images.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,81 +11,106 @@ concurrency:
cancel-in-progress: true

jobs:
extract-images:
name: Extract Images
default-images:
name: Default Images
runs-on: ubuntu-latest
permissions:
pull-requests: write
outputs:
matrix: ${{ steps.extract-images.outputs.images }}
images: ${{ steps.extract-images.outputs.images }}
steps:
- name: Setup Homebrew
uses: Homebrew/actions/setup-homebrew@master

- name: Setup Workflow Tools
run: brew install jo yq

- 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 Default Branch
- name: Checkout
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
- name: Gather Images
uses: docker://ghcr.io/allenporter/flux-local:v6.1.1
with:
args: >-
get cluster
--path /github/workspace/default/kubernetes/flux
--path ${{ github.workspace }}/kubernetes/flux
--enable-images
--output yaml
--output-file default.yaml
--output-file images.yaml
- name: Gather Images in Pull Request Branch
- name: Filter Images
shell: bash
run: |
yq -r '[.. | .images? | select(. != null)] | flatten | sort | unique | .[]' \
images.yaml > images.txt
- name: Extract Images
id: extract-images
shell: bash
run: |
images=$(jq --compact-output --raw-input --null-input '[inputs]' images.txt)
echo "images=${images}" >> $GITHUB_OUTPUT
pull-request-images:
name: Pull Request Images
runs-on: ubuntu-latest
outputs:
images: ${{ 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: Checkout
uses: actions/checkout@v4
with:
token: "${{ steps.app-token.outputs.token }}"

- name: Gather Images
uses: docker://ghcr.io/allenporter/flux-local:v6.1.1
with:
args: >-
get cluster
--path /github/workspace/pull/kubernetes/flux
--path ${{ github.workspace }}/kubernetes/flux
--enable-images
--output yaml
--output-file pull.yaml
--output-file images.yaml
- name: Filter Default Branch Results
- name: Filter Images
shell: bash
run: |
yq -r '[.. | .images? | select(. != null)] | flatten | sort | unique | .[]' \
default.yaml > default.txt
images.yaml > images.txt
- name: Filter Pull Request Branch Results
- name: Extract Images
id: extract-images
shell: bash
run: |
yq -r '[.. | .images? | select(. != null)] | flatten | sort | unique | .[]' \
pull.yaml > pull.txt
images=$(jq --compact-output --raw-input --null-input '[inputs]' images.txt)
echo "images=${images}" >> $GITHUB_OUTPUT
extract-images:
name: Extract Images
runs-on: ubuntu-latest
needs: ["default-images", "pull-request-images"]
outputs:
matrix: ${{ steps.extract-images.outputs.images }}
steps:
- name: Compare Default and Pull Request Images
id: extract-images
shell: bash
run: |
images=$(jo -a $(grep -vf default.txt pull.txt))
images=$(jq --compact-output --null-input \
--argjson f1 '${{ needs.default-images.outputs.images }}' \
--argjson f2 '${{ needs.pull-request-images.outputs.images }}' \
'$f2 - $f1' \
)
echo "images=${images}" >> $GITHUB_OUTPUT
echo "${images}"
echo "### Images" >> $GITHUB_STEP_SUMMARY
echo "${images}" | jq --raw-output 'to_entries[] | "* \(.value)"' >> $GITHUB_STEP_SUMMARY
pre-pull-images:
if: ${{ needs.extract-images.outputs.matrix != '[]' }}
Expand All @@ -102,6 +127,7 @@ jobs:
uses: Homebrew/actions/setup-homebrew@master

- name: Setup Workflow Tools
shell: bash
run: brew install siderolabs/tap/talosctl

- name: Pre-pull Image
Expand Down

0 comments on commit 87ee6c0

Please sign in to comment.