-
Notifications
You must be signed in to change notification settings - Fork 4
168 lines (134 loc) · 8.55 KB
/
Copy pathcheck-crd-updates.yml
File metadata and controls
168 lines (134 loc) · 8.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
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