From 6f2992c59601cd9f49776e8a008103f02e60ff7c Mon Sep 17 00:00:00 2001 From: Dragomir Penev Date: Sat, 21 Mar 2026 21:18:46 +0200 Subject: [PATCH 1/4] Update actions --- .github/workflows/ci.yaml | 12 ++++++------ .github/workflows/release.yaml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index aab9ef71..c6ff9fd1 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -24,7 +24,7 @@ jobs: libs-version: [0, 1] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install tox # TODO: Consider replacing with custom image on self-hosted runner OR pinning version run: python3 -m pip install tox @@ -46,7 +46,7 @@ jobs: juju-version: {libjuju-version: "2.9.49.1"} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install tox # TODO: Consider replacing with custom image on self-hosted runner OR pinning version run: python3 -m pip install tox @@ -138,7 +138,7 @@ jobs: timeout-minutes: 120 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup k8s controller if: ${{ 'microk8s' == matrix.tests.provider }} # TODO: Replace with custom image on self-hosted runner @@ -157,7 +157,7 @@ jobs: juju-channel: ${{ matrix.juju-version.juju-snap-channel }} charmcraft-channel: "2.x/stable" - name: Download packed charm(s) - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: ${{ needs.build.outputs.artifact-name }} - name: Select tests @@ -224,7 +224,7 @@ jobs: timeout-minutes: 120 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup k8s controller if: ${{ 'microk8s' == matrix.tests.provider }} # TODO: Replace with custom image on self-hosted runner @@ -243,7 +243,7 @@ jobs: juju-channel: ${{ matrix.juju-version.juju-snap-channel }} charmcraft-channel: "3.x/stable" - name: Download packed charm(s) - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: ${{ needs.build.outputs.artifact-name }} - name: Select tests diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 1d3bd31b..7779097a 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -18,7 +18,7 @@ jobs: timeout-minutes: 60 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Install charmcraft From 255884899c43243c400539b3842087ee1af24307 Mon Sep 17 00:00:00 2001 From: Dragomir Penev Date: Sat, 21 Mar 2026 22:21:06 +0200 Subject: [PATCH 2/4] Try to use concierge --- .github/workflows/ci.yaml | 41 ++++++++++++++++----------------------- concierge.yaml | 21 ++++++++++++++++++++ 2 files changed, 38 insertions(+), 24 deletions(-) create mode 100644 concierge.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c6ff9fd1..dec7876a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -139,23 +139,20 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6 + - name: Setup concierge + run: | + sudo snap install --classic concierge + sudo concierge prepare --juju-channel "${{ matrix.juju-version.juju-snap-channel}}" --extra-debs tox + sudo snap install charmcraft --channel 2.x/stable --classic - name: Setup k8s controller if: ${{ 'microk8s' == matrix.tests.provider }} # TODO: Replace with custom image on self-hosted runner - uses: charmed-kubernetes/actions-operator@main - with: - provider: microk8s - channel: "1.35-strict/stable" - bootstrap-options: "--agent-version ${{ matrix.juju-version.juju-bootstrap-option }}" - juju-channel: ${{ matrix.juju-version.juju-snap-channel }} - charmcraft-channel: "2.x/stable" + run: | + juju switch concierge-microk8s - name: Setup lxd controller if: ${{ 'lxd' == matrix.tests.provider }} - uses: charmed-kubernetes/actions-operator@main - with: - provider: lxd - juju-channel: ${{ matrix.juju-version.juju-snap-channel }} - charmcraft-channel: "2.x/stable" + run: | + juju switch concierge-lxd - name: Download packed charm(s) uses: actions/download-artifact@v8 with: @@ -225,23 +222,19 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6 + - name: Setup concierge + run: | + sudo snap install --classic concierge + sudo concierge prepare --juju-channel "3.6/stable" --extra-debs tox --extra-snaps "charmcraft/3.x/stable" - name: Setup k8s controller if: ${{ 'microk8s' == matrix.tests.provider }} # TODO: Replace with custom image on self-hosted runner - uses: charmed-kubernetes/actions-operator@main - with: - provider: microk8s - channel: "1.35-strict/stable" - bootstrap-options: "--agent-version ${{ matrix.juju-version.juju-bootstrap-option }}" - juju-channel: ${{ matrix.juju-version.juju-snap-channel }} - charmcraft-channel: "3.x/stable" + run: | + juju switch concierge-microk8s - name: Setup lxd controller if: ${{ 'lxd' == matrix.tests.provider }} - uses: charmed-kubernetes/actions-operator@main - with: - provider: lxd - juju-channel: ${{ matrix.juju-version.juju-snap-channel }} - charmcraft-channel: "3.x/stable" + run: | + juju switch concierge-lxd - name: Download packed charm(s) uses: actions/download-artifact@v8 with: diff --git a/concierge.yaml b/concierge.yaml new file mode 100644 index 00000000..3426aa1f --- /dev/null +++ b/concierge.yaml @@ -0,0 +1,21 @@ +juju: + model-defaults: + logging-config: =INFO; unit=DEBUG +providers: + lxd: + enable: true + bootstrap: true + channel: latest/stable + microk8s: + enable: true + bootstrap: true + addons: + - dns + - hostpath-storage + - rbac +host: + snaps: + jhack: + channel: latest/edge + connections: + - jhack:dot-local-share-juju snapd From 3fcf3462d713a554c510f712575e35a74c8be050 Mon Sep 17 00:00:00 2001 From: Dragomir Penev Date: Sun, 22 Mar 2026 13:44:32 +0200 Subject: [PATCH 3/4] Disable logging errors --- tests/v0/integration/conftest.py | 2 +- tests/v1/integration/conftest.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/v0/integration/conftest.py b/tests/v0/integration/conftest.py index 32674fb7..a3fdca29 100644 --- a/tests/v0/integration/conftest.py +++ b/tests/v0/integration/conftest.py @@ -165,7 +165,7 @@ async def without_errors(ops_test: OpsTest, request): # To be executed after the tests now = datetime.now().strftime("%H:%M:%S.%f")[:-3] yield - whitelist = [] + whitelist = ["sending log message: websocket: close 1005 (no status): websocket: close sent"] if "log_errors_allowed" in request.keywords: for marker in [ mark for mark in request.node.iter_markers() if mark.name == "log_errors_allowed" diff --git a/tests/v1/integration/conftest.py b/tests/v1/integration/conftest.py index 351a4552..61bbbde3 100644 --- a/tests/v1/integration/conftest.py +++ b/tests/v1/integration/conftest.py @@ -164,7 +164,7 @@ async def without_errors(ops_test: OpsTest, request): # To be executed after the tests now = datetime.now().strftime("%H:%M:%S.%f")[:-3] yield - whitelist = [] + whitelist = ["sending log message: websocket: close 1005 (no status): websocket: close sent"] if "log_errors_allowed" in request.keywords: for marker in [ mark for mark in request.node.iter_markers() if mark.name == "log_errors_allowed" From e036aeab2b1bacd9ad54eead9236465081bf2d8f Mon Sep 17 00:00:00 2001 From: Dragomir Penev Date: Tue, 14 Apr 2026 11:41:22 +0300 Subject: [PATCH 4/4] Downgrade runners --- .github/workflows/ci.yaml | 4 ++-- tests/v0/integration/conftest.py | 2 +- tests/v1/integration/conftest.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index dec7876a..563259c6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -134,7 +134,7 @@ jobs: needs: - lint - unit-test - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 timeout-minutes: 120 steps: - name: Checkout @@ -217,7 +217,7 @@ jobs: needs: - lint - unit-test - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 timeout-minutes: 120 steps: - name: Checkout diff --git a/tests/v0/integration/conftest.py b/tests/v0/integration/conftest.py index a3fdca29..32674fb7 100644 --- a/tests/v0/integration/conftest.py +++ b/tests/v0/integration/conftest.py @@ -165,7 +165,7 @@ async def without_errors(ops_test: OpsTest, request): # To be executed after the tests now = datetime.now().strftime("%H:%M:%S.%f")[:-3] yield - whitelist = ["sending log message: websocket: close 1005 (no status): websocket: close sent"] + whitelist = [] if "log_errors_allowed" in request.keywords: for marker in [ mark for mark in request.node.iter_markers() if mark.name == "log_errors_allowed" diff --git a/tests/v1/integration/conftest.py b/tests/v1/integration/conftest.py index 61bbbde3..351a4552 100644 --- a/tests/v1/integration/conftest.py +++ b/tests/v1/integration/conftest.py @@ -164,7 +164,7 @@ async def without_errors(ops_test: OpsTest, request): # To be executed after the tests now = datetime.now().strftime("%H:%M:%S.%f")[:-3] yield - whitelist = ["sending log message: websocket: close 1005 (no status): websocket: close sent"] + whitelist = [] if "log_errors_allowed" in request.keywords: for marker in [ mark for mark in request.node.iter_markers() if mark.name == "log_errors_allowed"