1
- name : Release the Shield Operator
1
+ name : Build and Push the Shield Operator
2
2
3
3
on :
4
- workflow_dispatch :
5
- inputs :
6
- release_version :
7
- description : ' The version of the operator to release '
8
- required : true
9
- type : string
4
+ push :
5
+ branches :
6
+ - main
7
+ paths :
8
+ - ' rh-shield-operator/Makefile ' # Updated by the release pipelines
9
+
10
10
jobs :
11
- build-and-push :
12
- name : Build and Push the Operator Images
11
+ determine-operator-version :
12
+ name : Determine the Operator Version
13
+ runs-on : ubuntu-latest
14
+ outputs :
15
+ release_version : ${{ steps.get-operator-version.outputs.release_version }}
16
+ steps :
17
+ - name : Checkout charts repo
18
+ uses : actions/checkout@v4
19
+ with :
20
+ fetch-depth : ' 1'
21
+
22
+ - name : Get Operator Version
23
+ id : get-operator-version
24
+ run : |
25
+ VERSION=$(awk '/^VERSION/{print $3}' Makefile)
26
+ echo "Discovered release version is $VERSION"
27
+ echo "release_version=$VERSION" >> $GITHUB_OUTPUT
28
+ working-directory : rh-shield-operator
29
+
30
+ build-operator :
31
+ name : Build the Operator Image
13
32
runs-on : ubuntu-latest
14
33
steps :
15
- - name : Checkout
34
+ - name : Checkout charts repo
16
35
uses : actions/checkout@v4
17
36
with :
18
37
fetch-depth : ' 1'
@@ -24,10 +43,111 @@ jobs:
24
43
username : ${{ secrets.QUAY_RH_SHIELD_OPERATOR_USERNAME }}
25
44
password : ${{ secrets.QUAY_RH_SHIELD_OPERATOR_PASSWORD }}
26
45
27
- - name : Build and Push Operator and Bundle Images
28
- env :
29
- IMAGE_TAG_BASE : ${{ secrets.QUAY_RH_SHIELD_OPERATOR_IMAGE_TAG_BASE }}
30
- VERSION : ${{ github.event.inputs.release_version }}
46
+ - name : Build and Push Operator Image
47
+ id : build-operator
31
48
run : |
32
- make docker-build docker-push bundle-build bundle-push
49
+ make docker-build docker-push
50
+ working-directory : rh-shield-operator
51
+
52
+ build-operator-bundle :
53
+ name : Build the Operator Bundle
54
+ runs-on : ubuntu-latest
55
+ needs :
56
+ - build-operator
57
+ - determine-operator-version
58
+ steps :
59
+ - name : Checkout charts repo
60
+ uses : actions/checkout@v4
61
+ with :
62
+ fetch-depth : ' 1'
63
+
64
+ - name : Login to Docker registry
65
+ uses : docker/login-action@v3
66
+ with :
67
+ registry : quay.io
68
+ username : ${{ secrets.QUAY_RH_SHIELD_OPERATOR_USERNAME }}
69
+ password : ${{ secrets.QUAY_RH_SHIELD_OPERATOR_PASSWORD }}
70
+
71
+ - name : Generate Bundle Content
72
+ # When using 'USE_IMAGE_DIGEST', the 'make bundle' command inspects the live operator image from the registry
73
+ # to generate the image digest. As a result, this step must be after the operator image has been
74
+ # generated and pushed to the registry.
75
+ run : |
76
+ USE_IMAGE_DIGESTS=true make bundle
77
+ working-directory : rh-shield-operator
78
+
79
+ - name : Set Labels and Annotations required for Certification on the Bundle
80
+ uses : mikefarah/yq@v4
81
+ with :
82
+ cmd : |
83
+ yq e -i '.metadata.name |= sub("rh-shield-operator", "sysdig-shield-operator")' rh-shield-operator/bundle/manifests/rh-shield-operator.clusterserviceversion.yaml
84
+ yq e -i '.annotations."operators.operatorframework.io.bundle.package.v1" |= sub("rh-shield-operator", "sysdig-shield-operator")' rh-shield-operator/bundle/metadata/annotations.yaml
85
+ yq e -i '.metadata.annotations.containerImage = (.spec.relatedImages[] | select(.name == "manager").image)' rh-shield-operator/bundle/manifests/rh-shield-operator.clusterserviceversion.yaml
86
+ yq e -i '.metadata.annotations += {
87
+ "features.operators.openshift.io/cnf": "false",
88
+ "features.operators.openshift.io/cni": "false",
89
+ "features.operators.openshift.io/csi": "false",
90
+ "features.operators.openshift.io/disconnected": "false",
91
+ "features.operators.openshift.io/fips-compliant": "false",
92
+ "features.operators.openshift.io/proxy-aware": "false",
93
+ "features.operators.openshift.io/tls-profiles": "false",
94
+ "features.operators.openshift.io/token-auth-aws": "false",
95
+ "features.operators.openshift.io/token-auth-azure": "false",
96
+ "features.operators.openshift.io/token-auth-gcp": "false"
97
+ }' rh-shield-operator/bundle/manifests/rh-shield-operator.clusterserviceversion.yaml
98
+ yq e -i '.annotations."com.redhat.openshift.versions" = "v4.8-v4.17"' rh-shield-operator/bundle/metadata/annotations.yaml
99
+
100
+ - name : Open Pull Request for Bundle update
101
+ uses : peter-evans/create-pull-request@v7
102
+ id : open-pr
103
+ with :
104
+ token : ${{ secrets.TOOLS_JENKINS_ADMIN_ACCESS_GITHUB_TOKEN }}
105
+ commit-message : |
106
+ "chore(rh-shield-operator): update bundle for rh-shield-operator:v${{ steps.determine-operator-version.outputs.release_version }}"
107
+ title : |
108
+ "chore(rh-shield-operator): update bundle for rh-shield-operator:v${{ steps.determine-operator-version.outputs.release_version }}"
109
+ body : |
110
+ This is an automated pull request that is generated as a part of the rh-shield-operator release pipeline.
111
+ The changes here update the bundle metadata using the newly published Operator image to generate the
112
+ image checksum, as well as adjusting some metadata that is required for certification.
113
+
114
+ - name : Wait for Pull Request to be merged
115
+
116
+ with :
117
+ command : gh pr view ${{ steps.open-pr.outputs.pull-request-number }} --json state -q .state | grep MERGED
118
+ attempt_limit : 240 # Results in 2 hours of waiting
119
+ attempt_delay : 30000 # 30 seconds
120
+
121
+ - name : Build and Push Bundle Image
122
+ run : |
123
+ make bundle-build bundle-push
124
+ working-directory : rh-shield-operator
125
+
126
+ certify-operator-image :
127
+ name : Certify the Operator Image with Preflight
128
+ runs-on : ubuntu-latest
129
+ needs :
130
+ - build-operator
131
+ - determine-operator-version
132
+ steps :
133
+ - name : Checkout charts repo
134
+ uses : actions/checkout@v4
135
+ with :
136
+ fetch-depth : ' 1'
137
+
138
+ - name : Install Preflight
139
+ uses : redhat-actions/openshift-tools-installer@v1
140
+ with :
141
+ source : " github"
142
+ preflight : " latest"
143
+ github_pat : ${{ secrets.GITHUB_TOKEN }}
144
+
145
+ - name : Run Preflight checks
146
+ run : |
147
+ IMAGE_TAG_BASE=$(awk '/^IMAGE_TAG_BASE/{print $3}' Makefile)
148
+
149
+ preflight check container \
150
+ $IMAGE_TAG_BASE:v${{ needs.determine-operator-version.outputs.release_version }} \
151
+ --pyxis-api-token ${{ secrets.RH_SHIELD_OPERATOR_PYXIS_API_TOKEN }} \
152
+ --certification-project-id ${{ secrets.RH_SHIELD_OPERATOR_CERTIFICATION_PROJECT_ID }}
33
153
working-directory : rh-shield-operator
0 commit comments