generated from canonical/template-operator
-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use reusable integration test workflow (#354)
- Loading branch information
1 parent
8afdce6
commit f8f49dd
Showing
22 changed files
with
155 additions
and
366 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,12 +16,9 @@ on: | |
jobs: | ||
lint: | ||
name: Lint | ||
uses: canonical/data-platform-workflows/.github/workflows/lint.yaml@v4.2.3 | ||
uses: canonical/data-platform-workflows/.github/workflows/lint.yaml@v6.1.1 | ||
|
||
unit-test: | ||
strategy: | ||
matrix: | ||
juju-version: ["2.9", "3.1"] | ||
name: Unit test charm | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 5 | ||
|
@@ -34,10 +31,6 @@ jobs: | |
pipx install poetry | ||
- name: Run tests | ||
run: tox run -e unit | ||
env: | ||
# This env var is only to indicate Juju version to "simulate" in the unit tests | ||
# No libjuju is being actually used in unit testing | ||
LIBJUJU_VERSION_SPECIFIER: ${{ matrix.juju-version }} | ||
- name: Upload Coverage to Codecov | ||
uses: codecov/codecov-action@v3 | ||
|
||
|
@@ -60,151 +53,36 @@ jobs: | |
|
||
build: | ||
name: Build charm | ||
uses: canonical/data-platform-workflows/.github/workflows/build_charms_with_cache.yaml@v4.2.3 | ||
uses: canonical/data-platform-workflows/.github/workflows/build_charms_with_cache.yaml@v6.1.1 | ||
with: | ||
charmcraft-snap-revision: 1349 # version 2.3.0 | ||
permissions: | ||
actions: write # Needed to manage GitHub Actions cache | ||
|
||
gh-hosted-collect-integration-tests: | ||
name: (GH hosted) Collect integration test groups | ||
needs: | ||
- lint | ||
- unit-test | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Install tox & poetry | ||
run: | | ||
pipx install tox | ||
pipx install poetry | ||
- name: Select test stability level | ||
id: select-test-stability | ||
run: | | ||
if [[ "${{ github.event_name }}" == "schedule" ]] | ||
then | ||
echo Running unstable and stable tests | ||
echo "mark_expression=" >> "$GITHUB_OUTPUT" | ||
else | ||
echo Skipping unstable tests | ||
echo "mark_expression=not unstable" >> "$GITHUB_OUTPUT" | ||
fi | ||
- name: Collect test groups | ||
id: collect-groups | ||
run: tox run -e integration -- tests/integration -m '${{ steps.select-test-stability.outputs.mark_expression }}' --collect-groups | ||
outputs: | ||
groups: ${{ steps.collect-groups.outputs.groups }} | ||
|
||
gh-hosted-integration-test: | ||
integration-test: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
groups: ${{ fromJSON(needs.gh-hosted-collect-integration-tests.outputs.groups) }} | ||
ubuntu-versions: | ||
# Update whenever charmcraft.yaml is changed | ||
- series: jammy | ||
bases-index: 0 | ||
juju-snap-channel: ["2.9/stable", "3.1/stable"] | ||
include: | ||
- juju-snap-channel: "3.1/stable" | ||
agent-version: "3.1.6" | ||
libjuju-version: "3.2.0.1" | ||
- juju-snap-channel: "2.9/stable" | ||
agent-version: "2.9.45" | ||
libjuju-version: "2.9.44.1" | ||
exclude: | ||
# Disabling HA tests, as long as we want to have a limited pipeline on Juju3 | ||
- juju-snap-channel: "3.1/stable" | ||
groups: | ||
job_name: "high_availability/test_replication.py | group 1" | ||
- juju-snap-channel: "3.1/stable" | ||
groups: | ||
job_name: "high_availability/test_replication.py | group 2" | ||
- juju-snap-channel: "3.1/stable" | ||
groups: | ||
job_name: "high_availability/test_replication.py | group 3" | ||
- juju-snap-channel: "3.1/stable" | ||
groups: | ||
job_name: "high_availability/test_self_healing.py | group 1" | ||
- juju-snap-channel: "3.1/stable" | ||
groups: | ||
job_name: "high_availability/test_upgrade.py | group 1" | ||
- juju-snap-channel: "3.1/stable" | ||
groups: | ||
job_name: "high_availability/test_upgrade_from_stable.py | group 1" | ||
name: ${{ matrix.juju-snap-channel }} - (GH hosted) ${{ matrix.groups.job_name }} | ${{ matrix.ubuntu-versions.series }} | ||
juju: | ||
- agent: 2.9.45 | ||
libjuju: ^2 | ||
- agent: 3.1.6 | ||
name: Integration test charm | ${{ matrix.juju.agent }} | ||
needs: | ||
- lint | ||
- unit-test | ||
- build | ||
- gh-hosted-collect-integration-tests | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 120 | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Install tox & poetry | ||
run: | | ||
pipx install tox | ||
pipx install poetry | ||
- name: Free disk space | ||
run: | | ||
echo "Free disk space before cleanup" | ||
df -T | ||
# free space in the runner | ||
sudo rm -rf /usr/share/dotnet | ||
sudo rm -rf /opt/ghc | ||
sudo rm -rf /usr/local/share/boost | ||
sudo rm -rf "$AGENT_TOOLSDIRECTORY" | ||
echo "Free disk space after cleanup" | ||
df -T | ||
- name: Setup operator environment | ||
uses: charmed-kubernetes/actions-operator@main | ||
with: | ||
provider: lxd | ||
bootstrap-options: "--agent-version ${{ matrix.agent-version }}" | ||
juju-channel: ${{ matrix.juju-snap-channel }} | ||
- name: Update python-libjuju version | ||
if: ${{ matrix.libjuju-version == '2.9.44.1' }} | ||
run: poetry add --lock --group integration juju@'${{ matrix.libjuju-version }}' | ||
- name: Download packed charm(s) | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: ${{ needs.build.outputs.artifact-name }} | ||
- name: Free up disk space | ||
run: | | ||
# From https://github.com/actions/runner-images/issues/2840#issuecomment-790492173 | ||
sudo rm -rf /usr/share/dotnet | ||
sudo rm -rf /opt/ghc | ||
sudo rm -rf /usr/local/share/boost | ||
sudo rm -rf "$AGENT_TOOLSDIRECTORY" | ||
- name: Select test stability level | ||
id: select-test-stability | ||
run: | | ||
if [[ "${{ github.event_name }}" == "schedule" ]] | ||
then | ||
echo Running unstable and stable tests | ||
echo "mark_expression=" >> "$GITHUB_OUTPUT" | ||
else | ||
echo Skipping unstable tests | ||
echo "mark_expression=not unstable" >> "$GITHUB_OUTPUT" | ||
fi | ||
- name: Free space in runner | ||
run: | | ||
# free space in the runner | ||
sudo rm -rf /usr/share/dotnet | ||
sudo rm -rf /opt/ghc | ||
sudo rm -rf /usr/local/share/boost | ||
sudo rm -rf "$AGENT_TOOLSDIRECTORY" | ||
- name: Run integration tests | ||
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-charm-series="${{ matrix.ubuntu-versions.series }}" --mysql-charm-bases-index="${{ matrix.ubuntu-versions.bases-index }}" | ||
env: | ||
LIBJUJU_VERSION_SPECIFIER: ${{ matrix.libjuju-version }} | ||
SECRETS_FROM_GITHUB: | | ||
{ | ||
"AWS_ACCESS_KEY": "${{ secrets.AWS_ACCESS_KEY }}", | ||
"AWS_SECRET_KEY": "${{ secrets.AWS_SECRET_KEY }}", | ||
"GCP_ACCESS_KEY": "${{ secrets.GCP_ACCESS_KEY }}", | ||
"GCP_SECRET_KEY": "${{ secrets.GCP_SECRET_KEY }}", | ||
} | ||
uses: canonical/data-platform-workflows/.github/workflows/[email protected] | ||
with: | ||
artifact-name: ${{ needs.build.outputs.artifact-name }} | ||
cloud: lxd | ||
juju-agent-version: ${{ matrix.juju.agent }} | ||
libjuju-version-constraint: ${{ matrix.juju.libjuju }} | ||
secrets: | ||
integration-test: | | ||
{ | ||
"AWS_ACCESS_KEY": "${{ secrets.AWS_ACCESS_KEY }}", | ||
"AWS_SECRET_KEY": "${{ secrets.AWS_SECRET_KEY }}", | ||
"GCP_ACCESS_KEY": "${{ secrets.GCP_ACCESS_KEY }}", | ||
"GCP_SECRET_KEY": "${{ secrets.GCP_SECRET_KEY }}", | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.