This repository has been archived by the owner on Jan 12, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
185 lines (171 loc) · 6.92 KB
/
CI.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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
name: CI
on:
# allow manual dispatch
workflow_dispatch:
# always execute docker build when something is pushed to master or release-* branches
push:
branches:
- "master"
# in addition, execute for pull requests to those branches
pull_request:
branches:
- "master"
- "release-[0-9]*"
defaults:
run:
shell: bash
env:
VERSION_FILE: "x-release-please-version.json"
jobs:
############################################################################
# Prepare CI Run (determine version, git sha, datetime, ...) #
############################################################################
prepare_ci_run:
name: Prepare CI Run
uses: keptn/gh-automation/.github/workflows/[email protected]
############################################################################
# Unit tests #
############################################################################
unit-tests:
name: Unit Tests
runs-on: ubuntu-20.04
steps:
- name: Check out repository
uses: actions/[email protected]
- name: Unit tests
uses: ./.github/actions/unit-tests
############################################################################
# Use version of release please if gh ref is a release-please pr branch #
############################################################################
verify-next-version:
needs: prepare_ci_run
name: Verify next version
runs-on: ubuntu-20.04
env:
VERSION: ${{ needs.prepare_ci_run.outputs.VERSION }}
outputs:
NEXT-VERSION: ${{ steps.verify-next-version.outputs.NEXT-VERSION }}
steps:
- name: Checkout repo
uses: actions/[email protected]
- name: Overwrite version variable from prepare_ci_run in case of a release-please-branch
id: verify-next-version
run: |
echo "Note: GITHUB_REF_HEADS=${GITHUB_HEAD_REF}"
if [[ "${GITHUB_HEAD_REF}" == "release-please-"* ]]; then
# Release PR: extract version from x-release-please-version.json
RELEASEPLEASE_VERSION=$(jq -r '."x-release-please-version"' ${{ env.VERSION_FILE }})
echo "NEXT-VERSION=${RELEASEPLEASE_VERSION}-rc" >> $GITHUB_OUTPUT
else
echo "NEXT-VERSION=${VERSION}" >> $GITHUB_OUTPUT
fi
############################################################################
# Build Helm Charts #
############################################################################
helm_charts_build:
needs:
- prepare_ci_run
- verify-next-version
name: Build Helm Charts
runs-on: ubuntu-20.04
env:
BRANCH: ${{ needs.prepare_ci_run.outputs.BRANCH }}
VERSION: ${{ needs.verify-next-version.outputs.NEXT-VERSION }}
DATETIME: ${{ needs.prepare_ci_run.outputs.DATETIME }}
GIT_SHA: ${{ needs.prepare_ci_run.outputs.GIT_SHA }}
steps:
- name: Checkout Code
uses: actions/[email protected]
- name: Load CI Environment from .ci_env
id: load_ci_env
uses: c-py/action-dotenv-to-setenv@v4
with:
env-file: .ci_env
- name: Build Helm Chart
id: build_helm_chart
run: |
if [[ "$BRANCH" == "master" ]]; then
# use VERSION.DATETIME for the image tag (e.g., nightly build)
./gh-actions-scripts/build_helm_chart.sh "${VERSION}" "${VERSION}.${DATETIME}" "${IMAGE}"
else
# just use VERSION for the image tag
./gh-actions-scripts/build_helm_chart.sh "${VERSION}" "${VERSION}" "${IMAGE}"
fi
- name: Upload Helm Chart as an artifact
id: upload_helm_chart
uses: actions/upload-artifact@v3
with:
name: installer
path: installer/*.tgz
############################################################################
# Build Docker Image #
############################################################################
docker_build:
needs:
- prepare_ci_run
- verify-next-version
- unit-tests
name: Docker Build
runs-on: ubuntu-20.04
env:
BRANCH: ${{ needs.prepare_ci_run.outputs.BRANCH }}
VERSION: ${{ needs.verify-next-version.outputs.NEXT-VERSION }}
DATETIME: ${{ needs.prepare_ci_run.outputs.DATETIME }}
GIT_SHA: ${{ needs.prepare_ci_run.outputs.GIT_SHA }}
steps:
- name: Checkout Code
uses: actions/[email protected]
- name: Load CI Environment from .ci_env
id: load_ci_env
uses: c-py/action-dotenv-to-setenv@v4
with:
env-file: .ci_env
- name: Docker Build
id: docker_build
uses: keptn/gh-automation/.github/actions/[email protected]
with:
TAGS: |
${{ env.DOCKER_ORGANIZATION }}/${{ env.IMAGE }}:${{ env.VERSION }}
${{ env.DOCKER_ORGANIZATION }}/${{ env.IMAGE }}:${{ env.VERSION }}.${{ env.DATETIME }}
BUILD_ARGS: |
version=${{ env.VERSION }}
REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
PUSH: ${{(github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event.pull_request.head.repo.full_name == github.repository)}}
- id: report_docker_build_to_pr
name: Report Docker Build to PR
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
uses: marocchino/sticky-pull-request-comment@v2
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
recreate: true
header: test
message: |
The following Docker Images have been built:
${{ fromJSON(steps.docker_build.outputs.BUILD_METADATA)['image.name'] }}
store-output-in-build-config:
name: "Store output of last step in build-config.env"
needs:
- prepare_ci_run
- verify-next-version
runs-on: ubuntu-20.04
steps:
- name: Create build config file
env:
BRANCH: ${{ needs.prepare_ci_run.outputs.BRANCH }}
BRANCH_SLUG: ${{ needs.prepare_ci_run.outputs.BRANCH_SLUG }}
VERSION: ${{ needs.verify-next-version.outputs.NEXT-VERSION }}
DATETIME: ${{ needs.prepare_ci_run.outputs.DATETIME }}
GIT_SHA: ${{ needs.prepare_ci_run.outputs.GIT_SHA }}
run: |
echo "BRANCH=${BRANCH}" >> build-config.env
echo "BRANCH_SLUG=${BRANCH_SLUG}" >> build-config.env
echo "VERSION=${VERSION}" >> build-config.env
echo "DATETIME=${DATETIME}" >> build-config.env
echo "GIT_SHA=${GIT_SHA}" >> build-config.env
- name: Upload build config as artifact
id: upload_build_config
uses: actions/upload-artifact@v3
with:
name: build-config
path: build-config.env