@@ -14,155 +14,65 @@ jobs:
1414 - uses : actions/checkout@v4
1515 with :
1616 token : ${{ secrets.GITHUB_TOKEN }}
17-
17+
1818 - name : Install Rust
1919 uses : dtolnay/rust-toolchain@stable
20-
21- - name : Install dependencies
22- run : |
23- sudo apt-get update
24- sudo apt-get install -y curl jq
25-
26- - name : Check latest Flux versions
27- id : check_versions
28- run : |
29- echo "Checking latest Flux component versions..."
30-
31- # Check source-controller
32- SOURCE_VERSION=$(curl -s https://api.github.com/repos/fluxcd/source-controller/releases/latest | jq -r '.tag_name' | sed 's/v//')
33- echo "source_controller_latest=$SOURCE_VERSION" >> $GITHUB_OUTPUT
34-
35- # Check kustomize-controller
36- KUSTOMIZE_VERSION=$(curl -s https://api.github.com/repos/fluxcd/kustomize-controller/releases/latest | jq -r '.tag_name' | sed 's/v//')
37- echo "kustomize_controller_latest=$KUSTOMIZE_VERSION" >> $GITHUB_OUTPUT
38-
39- # Check helm-controller
40- HELM_VERSION=$(curl -s https://api.github.com/repos/fluxcd/helm-controller/releases/latest | jq -r '.tag_name' | sed 's/v//')
41- echo "helm_controller_latest=$HELM_VERSION" >> $GITHUB_OUTPUT
42-
43- # Check notification-controller
44- NOTIFICATION_VERSION=$(curl -s https://api.github.com/repos/fluxcd/notification-controller/releases/latest | jq -r '.tag_name' | sed 's/v//')
45- echo "notification_controller_latest=$NOTIFICATION_VERSION" >> $GITHUB_OUTPUT
46-
47- # Check image-reflector-controller
48- IMAGE_REFLECTOR_VERSION=$(curl -s https://api.github.com/repos/fluxcd/image-reflector-controller/releases/latest | jq -r '.tag_name' | sed 's/v//')
49- echo "image_reflector_controller_latest=$IMAGE_REFLECTOR_VERSION" >> $GITHUB_OUTPUT
50-
51- # Check image-automation-controller
52- IMAGE_AUTOMATION_VERSION=$(curl -s https://api.github.com/repos/fluxcd/image-automation-controller/releases/latest | jq -r '.tag_name' | sed 's/v//')
53- echo "image_automation_controller_latest=$IMAGE_AUTOMATION_VERSION" >> $GITHUB_OUTPUT
54-
55- # Check source-watcher
56- SOURCE_WATCHER_VERSION=$(curl -s https://api.github.com/repos/fluxcd/source-watcher/releases/latest | jq -r '.tag_name' | sed 's/v//')
57- echo "source_watcher_latest=$SOURCE_WATCHER_VERSION" >> $GITHUB_OUTPUT
58-
59- echo "Latest versions:"
60- echo " source-controller: $SOURCE_VERSION"
61- echo " kustomize-controller: $KUSTOMIZE_VERSION"
62- echo " helm-controller: $HELM_VERSION"
63- echo " notification-controller: $NOTIFICATION_VERSION"
64- echo " image-reflector-controller: $IMAGE_REFLECTOR_VERSION"
65- echo " image-automation-controller: $IMAGE_AUTOMATION_VERSION"
66- echo " source-watcher: $SOURCE_WATCHER_VERSION"
67-
68- - name : Download latest CRDs
69- run : |
70- mkdir -p crds_new
71-
72- # Download source-controller CRDs
73- 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
74-
75- # Download kustomize-controller CRDs
76- 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
77-
78- # Download helm-controller CRDs
79- 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
80-
81- # Download notification-controller CRDs
82- 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
83-
84- # Download image-reflector-controller CRDs
85- 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
86-
87- # Download image-automation-controller CRDs
88- 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
89-
90- # Download source-watcher CRDs
91- 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
92-
93- - name : Compare CRDs
94- id : compare
95- run : |
96- CHANGED=false
97-
98- for file in crds_new/*.yaml; do
99- filename=$(basename "$file")
100- if [ ! -f "crds/$filename" ] || ! diff -q "crds/$filename" "$file" > /dev/null 2>&1; then
101- echo "CRD changed: $filename"
102- CHANGED=true
103- fi
104- done
105-
106- echo "changed=$CHANGED" >> $GITHUB_OUTPUT
107-
20+
10821 - name : Install kopium
109- if : steps.compare.outputs.changed == 'true'
11022 run : cargo install kopium
111-
112- - name : Update CRDs and regenerate models
113- if : steps.compare.outputs.changed == 'true'
23+
24+ - name : Fetch latest CRDs and regenerate models
25+ run : make update-flux
26+
27+ - name : Run integration tests
28+ run : make test-integration
29+
30+ - name : Check for changes
31+ id : changes
11432 run : |
115- # Backup current CRDs
116- cp -r crds crds_backup
117-
118- # Replace with new CRDs
119- cp crds_new/*.yaml crds/
120-
121- # Regenerate models
122- # Note: This assumes you have a script or Makefile target for regeneration
123- # Adjust based on your actual setup
124- echo "Regenerating models..."
125- # Add your model regeneration command here
126- # Example: make regenerate-models
127-
128- - name : Run tests
129- if : steps.compare.outputs.changed == 'true'
33+ if git diff --quiet; then
34+ echo "changed=false" >> "$GITHUB_OUTPUT"
35+ echo "No CRD or model changes detected."
36+ else
37+ echo "changed=true" >> "$GITHUB_OUTPUT"
38+ echo "Changed files:"
39+ git diff --name-only
40+ fi
41+
42+ - name : Read updated versions from manifest
43+ if : steps.changes.outputs.changed == 'true'
44+ id : manifest
13045 run : |
131- cargo test --lib --tests --test crd_compatibility --test resource_registry --test model_compatibility
132-
46+ {
47+ echo "versions<<EOF"
48+ jq -r '.flux_versions | to_entries[] | "- \(.key): \(.value)"' manifest.json
49+ echo "EOF"
50+ } >> "$GITHUB_OUTPUT"
51+
13352 - name : Create Pull Request
134- if : steps.compare .outputs.changed == 'true'
53+ if : steps.changes .outputs.changed == 'true'
13554 uses : peter-evans/create-pull-request@v5
13655 with :
13756 token : ${{ secrets.GITHUB_TOKEN }}
138- commit-message : |
139- chore: update Flux CRDs to latest versions
140-
141- - source-controller: v${{ steps.check_versions.outputs.source_controller_latest }}
142- - kustomize-controller: v${{ steps.check_versions.outputs.kustomize_controller_latest }}
143- - helm-controller: v${{ steps.check_versions.outputs.helm_controller_latest }}
144- - notification-controller: v${{ steps.check_versions.outputs.notification_controller_latest }}
145- - image-reflector-controller: v${{ steps.check_versions.outputs.image_reflector_controller_latest }}
146- - image-automation-controller: v${{ steps.check_versions.outputs.image_automation_controller_latest }}
147- - source-watcher: v${{ steps.check_versions.outputs.source_watcher_latest }}
148- title : " chore: Update Flux CRDs to latest versions"
57+ commit-message : " chore: update Flux CRDs to latest versions"
58+ title : " chore: update Flux CRDs to latest versions"
14959 body : |
150- This PR updates Flux CRDs to the latest versions.
151-
152- **Updated Components :**
153- - source-controller: v ${{ steps.check_versions .outputs.source_controller_latest }}
154- - kustomize-controller: v${{ steps.check_versions.outputs.kustomize_controller_latest }}
155- - helm-controller: v${{ steps.check_versions.outputs.helm_controller_latest }}
156- - notification-controller: v${{ steps.check_versions.outputs.notification_controller_latest }}
157- - image-reflector-controller: v${{ steps.check_versions.outputs.image_reflector_controller_latest }}
158- - image-automation-controller: v${{ steps.check_versions.outputs.image_automation_controller_latest }}
159- - source-watcher: v${{ steps.check_versions.outputs.source_watcher_latest }}
160-
161- **Changes :**
162- - Updated CRD files
163- - Regenerated models with kopium
164- - All tests passing
165-
166- ** Auto-generated by GitHub Actions**
60+ This PR updates Flux CRDs to the latest versions and regenerates Rust models .
61+
62+ **Updated components :**
63+ ${{ steps.manifest .outputs.versions }}
64+
65+ **Files changed:**
66+ - `scripts/fetch-crds.sh` — updated version manifest
67+ - `crds/*.yaml` — updated CRD definitions
68+ - `src/models/_generated/` — regenerated Rust models
69+ - `manifest.json` — updated version manifest
70+
71+ **Validation :**
72+ - ✅ CRDs fetched and models regenerated via `make update-flux`
73+ - ✅ Build verified via `cargo check`
74+ - ✅ Integration tests passing via `make test-integration`
75+
76+ > Auto-generated by GitHub Actions
16777 branch : update-flux-crds
16878 delete-branch : true
0 commit comments