Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DPE-2904] Switch to self hosted runners #285

Merged
merged 41 commits into from
Nov 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
aae0623
DO NOT MERGE test self-hsoted runners
carlcsaposs-canonical Oct 30, 2023
086e1c8
Remove groups
carlcsaposs-canonical Oct 30, 2023
fe57a4b
Add group markers
carlcsaposs-canonical Oct 30, 2023
eaa88eb
fix pythonpath
carlcsaposs-canonical Oct 31, 2023
ae4ab8e
Switch to relative imports
dragomirp Nov 1, 2023
fbd411b
Switch to binary psycopg2 for test deps
dragomirp Nov 2, 2023
2a7fc5f
Merge branch 'main' into self-hosted-test
dragomirp Nov 9, 2023
49fe260
Conditionally skip tests
dragomirp Nov 9, 2023
ceb55b4
Merge branch 'main' into self-hosted-test
dragomirp Nov 9, 2023
8e3fd79
Bump timeouts
dragomirp Nov 9, 2023
8376626
Skipping fixtures and bump in timeouts
dragomirp Nov 9, 2023
24c9f8c
Juju matrix
dragomirp Nov 10, 2023
d7afbbc
Revert "Juju matrix"
dragomirp Nov 10, 2023
817c2fc
Juju2 job
dragomirp Nov 10, 2023
2a0a3d3
Revert backup changes
dragomirp Nov 10, 2023
6ca421d
Bump timeouts
dragomirp Nov 11, 2023
3f53621
Switch to dpw 6
dragomirp Nov 15, 2023
041a27f
More timeout bumps
dragomirp Nov 15, 2023
7fe7d07
Increase timeouts
dragomirp Nov 15, 2023
3efea85
Bump dpw
dragomirp Nov 16, 2023
b36e1e4
Merge branch 'main' into dpe-2904-self-hosted
dragomirp Nov 16, 2023
276aab9
Merge branch 'main' into dpe-2904-self-hosted
dragomirp Nov 16, 2023
48f74cb
Depend on unit tests
dragomirp Nov 17, 2023
60b8927
Increase timeouts
dragomirp Nov 17, 2023
b42298b
Skip additional backup test when secrets are not accessible
dragomirp Nov 17, 2023
c62d355
Even more timouts
dragomirp Nov 18, 2023
6446751
Retry getting password if no primary was found
dragomirp Nov 20, 2023
8719f03
Timeouts
dragomirp Nov 20, 2023
47319f2
Bump dpw
dragomirp Nov 21, 2023
c68a6d5
Try to preenable plpython
dragomirp Nov 21, 2023
b10669b
Merge branch 'main' into dpe-2904-self-hosted
dragomirp Nov 21, 2023
4fe0461
Add markers and cleanup tox ini
dragomirp Nov 23, 2023
6930157
Marks
dragomirp Nov 23, 2023
c9c9541
Switch to mainline workflow
dragomirp Nov 24, 2023
5fcc419
Merge branch 'main' into dpe-2904-self-hosted
dragomirp Nov 24, 2023
6e30d79
Merge branch 'main' into dpe-2904-self-hosted
dragomirp Nov 27, 2023
3ce360c
Bump actions
dragomirp Nov 27, 2023
bf0f0ef
Matrix integration
dragomirp Nov 28, 2023
3311cda
Update contributing
dragomirp Nov 28, 2023
3b20d75
Use the right workflow
dragomirp Nov 28, 2023
88af371
Bump action
dragomirp Nov 28, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 23 additions & 88 deletions .github/workflows/ci.yaml
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't seem to be a simple way to use a matrix with a reusable workflow, so I've added a two separate tasks to run the workflow for juju2 and juju3.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's possible, see here for simple example: https://github.com/canonical/mysql-operator/pull/354/files

Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ on:
jobs:
lint:
name: Lint
uses: canonical/data-platform-workflows/.github/workflows/lint.yaml@v5.1.2
uses: canonical/data-platform-workflows/.github/workflows/lint.yaml@v6.3.2

unit-test:
name: Unit test charm
Expand All @@ -42,100 +42,35 @@ jobs:

build:
name: Build charm
uses: canonical/data-platform-workflows/.github/workflows/build_charms_with_cache.yaml@v5.1.2
uses: canonical/data-platform-workflows/.github/workflows/build_charms_with_cache.yaml@v6.3.2
permissions:
actions: write # Needed to manage GitHub Actions cache

gh-hosted-integration-test:

integration-test:
strategy:
fail-fast: false
matrix:
tox-environment:
- backup-integration
- charm-integration
- database-relation-integration
- db-relation-integration
- db-admin-relation-integration
- ha-replication-integration
- ha-self-healing-integration
- ha-restore-cluster-integration
- password-rotation-integration
- plugins-integration
- tls-integration
- upgrade-integration
- upgrade-from-stable-integration
juju-snap-channel: ["2.9/stable", "3.1/stable"]
exclude:
# Admin tests need landscape on juju 2
- tox-environment: db-admin-relation-integration
juju-snap-channel: "3.1/stable"
include:
- juju-snap-channel: "3.1/stable"
agent-version: "3.1.6"
libjuju-version: "3.2.2"
exclude-mark: "juju2"
- juju-snap-channel: "2.9/stable"
agent-version: "2.9.45"
libjuju-version: "2.9.45.0"
exclude-mark: "juju3"
name: ${{ matrix.juju-snap-channel }} - (GH hosted) ${{ matrix.tox-environment }}
juju:
- agent: 2.9.45
libjuju: ^2
- agent: 3.1.6
name: Integration test charm | ${{ matrix.juju.agent }}
needs:
- lint
- unit-test
- build
runs-on: ubuntu-latest
timeout-minutes: 120
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install tox & poetry
run: |
pipx install tox
pipx install poetry
- 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: 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.juju-snap-channel == '2.9/stable' }}
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: 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=and not unstable" >> "$GITHUB_OUTPUT"
fi
- name: Select test secret usage
id: select-test-secrets
if: ${{ github.event.pull_request.head.repo.full_name != 'canonical/postgresql-operator' }}
run: |
echo Skipping tests using secrets
echo "mark_secrets=and not uses_secrets" >> "$GITHUB_OUTPUT"
- name: Run integration tests
run: tox run -e ${{ matrix.tox-environment }} -- -m 'not ${{ matrix.exclude-mark }} ${{ steps.select-test-secrets.outputs.mark_secrets }} ${{ steps.select-test-stability.outputs.mark_expression }}' --keep-models
env:
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 }}",
}
4 changes: 2 additions & 2 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ jobs:

build:
name: Build charm
uses: canonical/data-platform-workflows/.github/workflows/build_charm_without_cache.yaml@v5.1.2
uses: canonical/data-platform-workflows/.github/workflows/build_charm_without_cache.yaml@v6.3.2

release:
name: Release charm
needs:
- ci-tests
- build
uses: canonical/data-platform-workflows/.github/workflows/release_charm.yaml@v5.1.2
uses: canonical/data-platform-workflows/.github/workflows/release_charm.yaml@v6.3.2
with:
channel: 14/edge
artifact-name: ${{ needs.build.outputs.artifact-name }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sync_issue_to_jira.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:
sync:
name: Sync GitHub issue to Jira
uses: canonical/data-platform-workflows/.github/workflows/sync_issue_to_jira.yaml@v5.1.2
uses: canonical/data-platform-workflows/.github/workflows/sync_issue_to_jira.yaml@v6.3.2
with:
jira-base-url: https://warthogs.atlassian.net
jira-project-key: DPE
Expand Down
4 changes: 3 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,11 @@ tox # runs 'lint' and 'unit' environments
Build the charm in this git repository using:

```shell
charmcraft pack
tox -e build
```

The tox build environment assumes that there is a preinstalled [poetry](https://python-poetry.org/) on the system.

### Deploy

```bash
Expand Down
Loading