-
Notifications
You must be signed in to change notification settings - Fork 43
167 lines (152 loc) · 8.07 KB
/
project-codeflare-release.yml
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
# This workflow will build and release all components of the CodeFlare project
name: Project CodeFlare Release
on:
workflow_dispatch:
inputs:
operator-version:
description: 'CodeFlare operator version to be released (for example: v0.0.0)'
required: true
replaces:
description: 'The previous operator semantic version that this release replaces (for example: v0.0.0)'
required: true
codeflare-sdk-version:
description: 'Version of CodeFlare-SDK to be released (for example: v0.0.0)'
required: true
appwrapper-version:
description: 'Tested version of AppWrapper (for example: v0.0.0)'
required: true
kuberay-version:
description: 'Tested version of KubeRay (for example: v0.0.0)'
required: true
kueue-version:
description: 'Tested version of Kueue (for example: v0.0.0)'
required: true
is-stable:
description: 'Select if the built images should be tagged as stable'
required: true
type: boolean
codeflare-repository-organization:
description: 'GitHub organization/user containing repositories used for release'
required: true
default: 'project-codeflare'
quay-organization:
description: 'Quay organization used to push the built images to'
required: true
default: 'project-codeflare'
community-operators-prod-organization:
description: 'Owner of target community-operators-prod repository used to open a PR against'
required: true
default: 'redhat-openshift-ecosystem'
jobs:
release-parameters:
runs-on: ubuntu-latest
steps:
- name: Release Parameters
run: |
echo "Below are the release parameters set for the workflow:"
echo "Operator Version: ${{ github.event.inputs.operator-version }}"
echo "Replaces: ${{ github.event.inputs.replaces }}"
echo "CodeFlare SDK Version: ${{ github.event.inputs.codeflare-sdk-version }}"
echo "Tested AppWrapper Version: ${{ github.event.inputs.appwrapper-version }}"
echo "Tested KubeRay Version: ${{ github.event.inputs.kuberay-version }}"
echo "Tested Kueue Version: ${{ github.event.inputs.kueue-version }}"
echo "Is Stable: ${{ github.event.inputs.is-stable }}"
echo "CodeFlare Repository Organization: ${{ github.event.inputs.codeflare-repository-organization }}"
echo "Quay Organization: ${{ github.event.inputs.quay-organization }}"
echo "Community Operators Prod Organization: ${{ github.event.inputs.community-operators-prod-organization }}"
release-codeflare-sdk:
needs: [check-appwrapper-version, check-kuberay-version, check-kueue-version]
runs-on: ubuntu-latest
steps:
- name: Check if Codeflare SDK release does exist
run: |
status_code=$(curl -s -o /dev/null -w "%{http_code}" https://github.com/project-codeflare/codeflare-sdk/releases/tag/${{ github.event.inputs.codeflare-sdk-version }})
if [[ "$status_code" == "200" ]]; then
echo "SDK release with version ${{ github.event.inputs.codeflare-sdk-version }} already exist. Will not create SDK release."
fi
echo "SDK_RELEASE_STATUS_CODE=$status_code" >> $GITHUB_ENV
- name: Release CodeFlare SDK
run: |
semver_version="${{ github.event.inputs.codeflare-sdk-version }}"
plain_version="${semver_version:1}"
gh workflow run release.yaml --repo ${{ github.event.inputs.codeflare-repository-organization }}/codeflare-sdk --ref ${{ github.ref }} --field release-version=${plain_version} --field is-stable=${{ github.event.inputs.is-stable }} --field quay-organization=${{ github.event.inputs.quay-organization }}
env:
GITHUB_TOKEN: ${{ secrets.CODEFLARE_MACHINE_ACCOUNT_TOKEN }}
shell: bash
if: ${{ env.SDK_RELEASE_STATUS_CODE != '200' }}
- name: Wait for CodeFlare SDK run to finish
run: |
# wait for a while for Run to be started
sleep 5
run_id=$(gh run list --workflow release.yaml --repo ${{ github.event.inputs.codeflare-repository-organization }}/codeflare-sdk --limit 1 --json databaseId --jq .[].databaseId)
gh run watch ${run_id} --repo ${{ github.event.inputs.codeflare-repository-organization }}/codeflare-sdk --interval 10 --exit-status
env:
GITHUB_TOKEN: ${{ secrets.CODEFLARE_MACHINE_ACCOUNT_TOKEN }}
shell: bash
if: ${{ env.SDK_RELEASE_STATUS_CODE != '200' }}
release-codeflare-operator:
needs: [release-codeflare-sdk]
runs-on: ubuntu-latest
steps:
- name: Release CodeFlare operator
run: |
gh workflow run tag-and-build.yml --repo ${{ github.event.inputs.codeflare-repository-organization }}/codeflare-operator \
--ref ${{ github.ref }} \
--field is-stable=${{ github.event.inputs.is-stable }} \
--field version=${{ github.event.inputs.operator-version }} \
--field replaces=${{ github.event.inputs.replaces }} \
--field codeflare-sdk-version=${{ github.event.inputs.codeflare-sdk-version }} \
--field appwrapper-version=${{ github.event.inputs.appwrapper-version }} \
--field kuberay-version=${{ github.event.inputs.kuberay-version }} \
--field kueue-version=${{ github.event.inputs.kueue-version }} \
--field quay-organization=${{ github.event.inputs.quay-organization }} \
--field community-operators-prod-fork-organization=${{ github.event.inputs.codeflare-repository-organization }} \
--field community-operators-prod-organization=${{ github.event.inputs.community-operators-prod-organization }}
env:
GITHUB_TOKEN: ${{ secrets.CODEFLARE_MACHINE_ACCOUNT_TOKEN }}
shell: bash
- name: Wait for CodeFlare operator run to finish
run: |
# wait for a while for Run to be started
sleep 5
run_id=$(gh run list --workflow tag-and-build.yml --repo ${{ github.event.inputs.codeflare-repository-organization }}/codeflare-operator --limit 1 --json databaseId --jq .[].databaseId)
gh run watch ${run_id} --repo ${{ github.event.inputs.codeflare-repository-organization }}/codeflare-operator --interval 10 --exit-status
env:
GITHUB_TOKEN: ${{ secrets.CODEFLARE_MACHINE_ACCOUNT_TOKEN }}
shell: bash
check-appwrapper-version:
runs-on: ubuntu-latest
steps:
- name: Check if AppWrapper release exists
run: |
status_code=$(curl -s -o /dev/null -w "%{http_code}" https://github.com/project-codeflare/appwrapper/releases/tag/${{ github.event.inputs.appwrapper-version }})
if [[ "$status_code" == "200" ]]; then
echo "AppWrapper release with version ${{ github.event.inputs.appwrapper-version }} exists and available to use."
else
echo "AppWrapper release with version ${{ github.event.inputs.appwrapper-version }} does not exist. Please select an existing version."
exit 1
fi
check-kuberay-version:
runs-on: ubuntu-latest
steps:
- name: Check if KubeRay release exists
run: |
status_code=$(curl -s -o /dev/null -w "%{http_code}" https://github.com/ray-project/kuberay/releases/tag/${{ github.event.inputs.kuberay-version }})
if [[ "$status_code" == "200" ]]; then
echo "KubeRay release with version ${{ github.event.inputs.kuberay-version }} exists and available to use."
else
echo "KubeRay release with version ${{ github.event.inputs.kuberay-version }} does not exist. Please select an existing version."
exit 1
fi
check-kueue-version:
runs-on: ubuntu-latest
steps:
- name: Check if Kueue release exists
run: |
status_code=$(curl -s -o /dev/null -w "%{http_code}" https://github.com/kubernetes-sigs/kueue/releases/tag/${{ github.event.inputs.kueue-version }})
if [[ "$status_code" == "200" ]]; then
echo "Kueue release with version ${{ github.event.inputs.kueue-version }} exists and available to use."
else
echo "Kueue release with version ${{ github.event.inputs.kueue-version }} does not exist. Please select an existing version."
exit 1
fi