@@ -9,9 +9,13 @@ concurrency:
9
9
on :
10
10
pull_request :
11
11
schedule :
12
- - cron : ' 53 0 * * *' # Daily at 00:53 UTC
12
+ - cron : ' 53 0 * * *' # Daily at 00:53 UTC
13
13
# Triggered on push to branch "main" by .github/workflows/release.yaml
14
14
workflow_call :
15
+ outputs :
16
+ artifact-prefix :
17
+ description : build_charm.yaml `artifact-prefix` output
18
+ value : ${{ jobs.build.outputs.artifact-prefix }}
15
19
16
20
jobs :
17
21
lint :
31
35
unit-test :
32
36
name : Unit test charm
33
37
runs-on : ubuntu-22.04 # TODO: use ubuntu-latest after fixing pathlib issue on python 3.12
34
- timeout-minutes : 5
38
+ timeout-minutes : 20
35
39
steps :
36
40
- name : Checkout
37
41
uses : actions/checkout@v4
@@ -66,116 +70,17 @@ jobs:
66
70
67
71
build :
68
72
name : Build charm
69
- uses :
canonical/data-platform-workflows/.github/workflows/[email protected]
70
- with :
71
- # Use of cache blocked by https://github.com/canonical/charmcraft/issues/1456
72
- # Details: https://github.com/canonical/charmcraftcache/issues/3
73
- cache : false
74
- # Remove prefix when cache enabled
75
- # Needed to avoid conflict with artifact name on release CI
76
- artifact-prefix : ci-packed-charm-cache-false-.
73
+ uses :
canonical/data-platform-workflows/.github/workflows/[email protected]
77
74
78
- gh-hosted-collect-integration-tests :
79
- name : (GH hosted) Collect integration test groups
80
- needs :
81
- - lint
82
- - unit-test
83
- runs-on : ubuntu-latest
84
- steps :
85
- - name : Checkout
86
- uses : actions/checkout@v4
87
- - name : Install tox & poetry
88
- run : |
89
- pipx install tox
90
- pipx install poetry
91
- - name : Select test stability level
92
- id : select-test-stability
93
- run : |
94
- if [[ "${{ github.event_name }}" == "schedule" ]]
95
- then
96
- echo Running unstable and stable tests
97
- echo "mark_expression=" >> "$GITHUB_OUTPUT"
98
- else
99
- echo Skipping unstable tests
100
- echo "mark_expression=not unstable" >> "$GITHUB_OUTPUT"
101
- fi
102
- - name : Collect test groups
103
- id : collect-groups
104
- run : tox run -e integration -- tests/integration -m '${{ steps.select-test-stability.outputs.mark_expression }}' --collect-groups
105
- outputs :
106
- groups : ${{ steps.collect-groups.outputs.groups }}
107
-
108
- gh-hosted-integration-test :
109
- strategy :
110
- fail-fast : false
111
- matrix :
112
- groups : ${{ fromJSON(needs.gh-hosted-collect-integration-tests.outputs.groups) }}
113
- ubuntu-versions :
114
- # Update whenever charmcraft.yaml is changed
115
- - series : focal
116
- bases-index : 0
117
- - series : jammy
118
- bases-index : 1
119
- juju-snap-channel : ["2.9/stable", "3.6/stable"]
120
- include :
121
- - juju-snap-channel : " 3.6/stable"
122
- agent-version : " 3.6.1"
123
- libjuju-version : " 3.6.0.0"
124
- - juju-snap-channel : " 2.9/stable"
125
- agent-version : " 2.9.51"
126
- libjuju-version : " 2.9.49.0"
127
- exclude :
128
- - groups : {path_to_test_file: tests/integration/test_data_integrator.py}
129
- ubuntu-versions : {series: focal}
130
- - groups : {path_to_test_file: tests/integration/test_hacluster.py}
131
- ubuntu-versions : {series: focal}
132
- name : ${{ matrix.juju-snap-channel }} - (GH hosted) ${{ matrix.groups.job_name }} | ${{ matrix.ubuntu-versions.series }}
75
+ integration-test :
76
+ name : Integration test charm
133
77
needs :
134
78
- lint
135
79
- unit-test
136
80
- build
137
- - gh-hosted-collect-integration-tests
138
- runs-on : ubuntu-latest
139
- timeout-minutes : 120
140
- steps :
141
- - name : Checkout
142
- uses : actions/checkout@v4
143
- - name : Install tox & poetry
144
- run : |
145
- pipx install tox
146
- pipx install poetry
147
- - name : Setup operator environment
148
- uses : charmed-kubernetes/actions-operator@main
149
- with :
150
- provider : lxd
151
- bootstrap-options : " --agent-version ${{ matrix.agent-version }}"
152
- juju-channel : ${{ matrix.juju-snap-channel }}
153
- - name : Update python-libjuju version
154
- if : ${{ matrix.libjuju-version == '2.9.49.0' }}
155
- run : poetry add --lock --group integration juju@'${{ matrix.libjuju-version }}'
156
- - name : Download packed charm(s)
157
- uses : actions/download-artifact@v4
158
- with :
159
- pattern : ${{ needs.build.outputs.artifact-prefix }}-*
160
- merge-multiple : true
161
- - name : Select test stability level
162
- id : select-test-stability
163
- run : |
164
- if [[ "${{ github.event_name }}" == "schedule" ]]
165
- then
166
- echo Running unstable and stable tests
167
- echo "mark_expression=" >> "$GITHUB_OUTPUT"
168
- else
169
- echo Skipping unstable tests
170
- echo "mark_expression=not unstable" >> "$GITHUB_OUTPUT"
171
- fi
172
- - name : Run integration tests
173
- run : tox run -e integration -- "${{ matrix.groups.path_to_test_file }}" --group="${{ matrix.groups.group_number }}" -m '${{ steps.select-test-stability.outputs.mark_expression }}' --mysql-router-charm-series=${{ matrix.ubuntu-versions.series }} --mysql-router-charm-bases-index=${{ matrix.ubuntu-versions.bases-index }}
174
- env :
175
- LIBJUJU_VERSION_SPECIFIER : ${{ matrix.libjuju-version }}
176
- SECRETS_FROM_GITHUB : |
177
- {
178
- "UBUNTU_PRO_TOKEN" : "${{ secrets.UBUNTU_PRO_TOKEN }}",
179
- "LANDSCAPE_ACCOUNT_NAME": "${{ secrets.LANDSCAPE_ACCOUNT_NAME }}",
180
- "LANDSCAPE_REGISTRATION_KEY": "${{ secrets.LANDSCAPE_REGISTRATION_KEY }}",
181
- }
81
+ uses : ./.github/workflows/integration_test.yaml
82
+ with :
83
+ artifact-prefix : ${{ needs.build.outputs.artifact-prefix }}
84
+ secrets : inherit
85
+ permissions :
86
+ contents : write # Needed for Allure Report
0 commit comments