-
Notifications
You must be signed in to change notification settings - Fork 174
141 lines (133 loc) · 4.5 KB
/
ci-cd.yaml
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
# This workflow:
# - lints the chart, runs tests and verifies documentation is up to date
# Additionally if the event isn't a pull-request (and hence a merge/push to main):
# - sync README to gh-pages branch
# - release a new chart version if the version isn't already released
name: CI/CD
on:
push:
branches:
- main
pull_request:
# Cancel previous PR builds.
concurrency:
# Cancel all workflow runs except latest within a concurrency group. This is achieved by defining a concurrency group for the PR.
# Non-PR builds have singleton concurrency groups.
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.number || github.sha }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up chart-testing
uses: helm/[email protected]
- name: Lint charts
run: ct lint --charts=charts/trino,charts/gateway --validate-maintainers=false
test:
runs-on: ubuntu-latest
name: test ${{ matrix.label }}
strategy:
fail-fast: false
matrix:
include:
- { label: default, args: '' }
# last Trino version that requires JDK 21
- { label: 446, args: '-a "--set image.tag=446"' }
# last Trino version that requires JDK 17
- { label: 435, args: '-a "--set image.tag=435"' }
# skip cleanup to test deploying multiple releases in a single namespace
- { label: overrides, args: '-s -t default,overrides' }
- { label: gateway, args: '-t gateway' }
steps:
- uses: actions/checkout@v4
- name: Set up Helm
uses: azure/setup-helm@v4
with:
version: v3.16.1
- name: Set up chart-testing
uses: helm/[email protected]
- name: Create kind cluster
uses: helm/[email protected]
with:
version: v0.24.0
- name: Run trino tests
run: ./test.sh ${{ matrix.args }}
test-gateway:
runs-on: ubuntu-latest
name: test ${{ matrix.label }}
strategy:
fail-fast: false
matrix:
include:
- { label: default, args: '' }
steps:
- uses: actions/checkout@v4
- name: Set up Helm
uses: azure/setup-helm@v4
with:
version: v3.16.1
- name: Set up chart-testing
uses: helm/[email protected]
- name: Create kind cluster
uses: helm/[email protected]
with:
version: v0.24.0
- name: Run gateway tests
run: ./gateway-tests/test.sh ${{ matrix.args }}
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.x'
- uses: pre-commit/[email protected]
# Everything above is CI, everything here and below is for releases and runs only on non-pull-request events
sync-readme:
needs: [lint, test, docs]
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
steps:
- name: Checkout main
uses: actions/checkout@v4
with:
path: main
- name: Checkout gh-pages
uses: actions/checkout@v4
with:
ref: gh-pages
path: gh-pages
- name: Copy all README files from main to gh-pages
run: |
cd main
# cp --parents preserves directory structure
find . -name 'README.md' -exec cp --parents '{}' "../gh-pages/" ';'
- name: Commit changes to gh-pages and push
run: |
cd gh-pages
git add .
git config user.name "GITHUB_ACTOR"
git config user.email "[email protected]"
# Commit only if changes exist to avoid failure in this step
git diff-index --quiet HEAD || git commit --signoff -m "Sync READMEs from main"
git push
release:
needs: [lint, test, docs, sync-readme]
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "[email protected]"
- name: Release charts
uses: helm/[email protected]
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
CR_GENERATE_RELEASE_NOTES: true
# If we didn't bump the chart version then we can skip the release
CR_SKIP_EXISTING: true