Check Flux CRD Updates #10
This file contains hidden or 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
| name: Check Flux CRD Updates | |
| on: | |
| schedule: | |
| # Run every Monday at 9 AM UTC | |
| - cron: '0 9 * * 1' | |
| workflow_dispatch: | |
| jobs: | |
| check-crd-updates: | |
| name: Check for Flux CRD Updates | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y curl jq | |
| - name: Check latest Flux versions | |
| id: check_versions | |
| run: | | |
| echo "Checking latest Flux component versions..." | |
| # Check source-controller | |
| SOURCE_VERSION=$(curl -s https://api.github.com/repos/fluxcd/source-controller/releases/latest | jq -r '.tag_name' | sed 's/v//') | |
| echo "source_controller_latest=$SOURCE_VERSION" >> $GITHUB_OUTPUT | |
| # Check kustomize-controller | |
| KUSTOMIZE_VERSION=$(curl -s https://api.github.com/repos/fluxcd/kustomize-controller/releases/latest | jq -r '.tag_name' | sed 's/v//') | |
| echo "kustomize_controller_latest=$KUSTOMIZE_VERSION" >> $GITHUB_OUTPUT | |
| # Check helm-controller | |
| HELM_VERSION=$(curl -s https://api.github.com/repos/fluxcd/helm-controller/releases/latest | jq -r '.tag_name' | sed 's/v//') | |
| echo "helm_controller_latest=$HELM_VERSION" >> $GITHUB_OUTPUT | |
| # Check notification-controller | |
| NOTIFICATION_VERSION=$(curl -s https://api.github.com/repos/fluxcd/notification-controller/releases/latest | jq -r '.tag_name' | sed 's/v//') | |
| echo "notification_controller_latest=$NOTIFICATION_VERSION" >> $GITHUB_OUTPUT | |
| # Check image-reflector-controller | |
| IMAGE_REFLECTOR_VERSION=$(curl -s https://api.github.com/repos/fluxcd/image-reflector-controller/releases/latest | jq -r '.tag_name' | sed 's/v//') | |
| echo "image_reflector_controller_latest=$IMAGE_REFLECTOR_VERSION" >> $GITHUB_OUTPUT | |
| # Check image-automation-controller | |
| IMAGE_AUTOMATION_VERSION=$(curl -s https://api.github.com/repos/fluxcd/image-automation-controller/releases/latest | jq -r '.tag_name' | sed 's/v//') | |
| echo "image_automation_controller_latest=$IMAGE_AUTOMATION_VERSION" >> $GITHUB_OUTPUT | |
| # Check source-watcher | |
| SOURCE_WATCHER_VERSION=$(curl -s https://api.github.com/repos/fluxcd/source-watcher/releases/latest | jq -r '.tag_name' | sed 's/v//') | |
| echo "source_watcher_latest=$SOURCE_WATCHER_VERSION" >> $GITHUB_OUTPUT | |
| echo "Latest versions:" | |
| echo " source-controller: $SOURCE_VERSION" | |
| echo " kustomize-controller: $KUSTOMIZE_VERSION" | |
| echo " helm-controller: $HELM_VERSION" | |
| echo " notification-controller: $NOTIFICATION_VERSION" | |
| echo " image-reflector-controller: $IMAGE_REFLECTOR_VERSION" | |
| echo " image-automation-controller: $IMAGE_AUTOMATION_VERSION" | |
| echo " source-watcher: $SOURCE_WATCHER_VERSION" | |
| - name: Download latest CRDs | |
| run: | | |
| mkdir -p crds_new | |
| # Download source-controller CRDs | |
| curl -L "https://github.com/fluxcd/source-controller/releases/download/v${{ steps.check_versions.outputs.source_controller_latest }}/source-controller.crds.yaml" -o crds_new/source-controller.crds.yaml | |
| # Download kustomize-controller CRDs | |
| curl -L "https://github.com/fluxcd/kustomize-controller/releases/download/v${{ steps.check_versions.outputs.kustomize_controller_latest }}/kustomize-controller.crds.yaml" -o crds_new/kustomize-controller.crds.yaml | |
| # Download helm-controller CRDs | |
| curl -L "https://github.com/fluxcd/helm-controller/releases/download/v${{ steps.check_versions.outputs.helm_controller_latest }}/helm-controller.crds.yaml" -o crds_new/helm-controller.crds.yaml | |
| # Download notification-controller CRDs | |
| curl -L "https://github.com/fluxcd/notification-controller/releases/download/v${{ steps.check_versions.outputs.notification_controller_latest }}/notification-controller.crds.yaml" -o crds_new/notification-controller.crds.yaml | |
| # Download image-reflector-controller CRDs | |
| curl -L "https://github.com/fluxcd/image-reflector-controller/releases/download/v${{ steps.check_versions.outputs.image_reflector_controller_latest }}/image-reflector-controller.crds.yaml" -o crds_new/image-reflector-controller.crds.yaml | |
| # Download image-automation-controller CRDs | |
| curl -L "https://github.com/fluxcd/image-automation-controller/releases/download/v${{ steps.check_versions.outputs.image_automation_controller_latest }}/image-automation-controller.crds.yaml" -o crds_new/image-automation-controller.crds.yaml | |
| # Download source-watcher CRDs | |
| curl -L "https://github.com/fluxcd/source-watcher/releases/download/v${{ steps.check_versions.outputs.source_watcher_latest }}/source-watcher.crds.yaml" -o crds_new/source-watcher.crds.yaml | |
| - name: Compare CRDs | |
| id: compare | |
| run: | | |
| CHANGED=false | |
| for file in crds_new/*.yaml; do | |
| filename=$(basename "$file") | |
| if [ ! -f "crds/$filename" ] || ! diff -q "crds/$filename" "$file" > /dev/null 2>&1; then | |
| echo "CRD changed: $filename" | |
| CHANGED=true | |
| fi | |
| done | |
| echo "changed=$CHANGED" >> $GITHUB_OUTPUT | |
| - name: Install kopium | |
| if: steps.compare.outputs.changed == 'true' | |
| run: cargo install kopium | |
| - name: Update CRDs and regenerate models | |
| if: steps.compare.outputs.changed == 'true' | |
| run: | | |
| # Backup current CRDs | |
| cp -r crds crds_backup | |
| # Replace with new CRDs | |
| cp crds_new/*.yaml crds/ | |
| # Regenerate models | |
| # Note: This assumes you have a script or Makefile target for regeneration | |
| # Adjust based on your actual setup | |
| echo "Regenerating models..." | |
| # Add your model regeneration command here | |
| # Example: make regenerate-models | |
| - name: Run tests | |
| if: steps.compare.outputs.changed == 'true' | |
| run: | | |
| cargo test --lib --tests --test crd_compatibility --test resource_registry --test model_compatibility | |
| - name: Create Pull Request | |
| if: steps.compare.outputs.changed == 'true' | |
| uses: peter-evans/create-pull-request@v5 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| commit-message: | | |
| chore: update Flux CRDs to latest versions | |
| - source-controller: v${{ steps.check_versions.outputs.source_controller_latest }} | |
| - kustomize-controller: v${{ steps.check_versions.outputs.kustomize_controller_latest }} | |
| - helm-controller: v${{ steps.check_versions.outputs.helm_controller_latest }} | |
| - notification-controller: v${{ steps.check_versions.outputs.notification_controller_latest }} | |
| - image-reflector-controller: v${{ steps.check_versions.outputs.image_reflector_controller_latest }} | |
| - image-automation-controller: v${{ steps.check_versions.outputs.image_automation_controller_latest }} | |
| - source-watcher: v${{ steps.check_versions.outputs.source_watcher_latest }} | |
| title: "chore: Update Flux CRDs to latest versions" | |
| body: | | |
| This PR updates Flux CRDs to the latest versions. | |
| **Updated Components:** | |
| - source-controller: v${{ steps.check_versions.outputs.source_controller_latest }} | |
| - kustomize-controller: v${{ steps.check_versions.outputs.kustomize_controller_latest }} | |
| - helm-controller: v${{ steps.check_versions.outputs.helm_controller_latest }} | |
| - notification-controller: v${{ steps.check_versions.outputs.notification_controller_latest }} | |
| - image-reflector-controller: v${{ steps.check_versions.outputs.image_reflector_controller_latest }} | |
| - image-automation-controller: v${{ steps.check_versions.outputs.image_automation_controller_latest }} | |
| - source-watcher: v${{ steps.check_versions.outputs.source_watcher_latest }} | |
| **Changes:** | |
| - Updated CRD files | |
| - Regenerated models with kopium | |
| - All tests passing | |
| **Auto-generated by GitHub Actions** | |
| branch: update-flux-crds | |
| delete-branch: true |