Reimplement shell scripts in typescript #463
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
name: Test Operator Setup | |
on: | |
push: | |
branches: [main, concierge] | |
pull_request: | |
branches: [main, concierge] | |
jobs: | |
Inclusive-naming-check: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: woke | |
uses: canonical-web-and-design/inclusive-naming@main | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
reporter: github-pr-check | |
fail-on-error: true | |
charmcraft: | |
runs-on: ubuntu-latest | |
outputs: | |
channel: ${{ steps.charmcraft.outputs.channel }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Load charmcraft channel | |
id: charmcraft | |
run: echo "channel=$(cat tests/.charmcraft-channel)" >> $GITHUB_OUTPUT | |
test-python-pre-installed: | |
name: Test pre-installed-python environment | |
runs-on: ubuntu-latest | |
needs: [charmcraft] | |
strategy: | |
fail-fast: false | |
matrix: | |
python: | |
- '3.8' | |
- '3.10' | |
- '3.12' | |
tox: | |
- '4.18.0' | |
- '' | |
steps: | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- uses: ./ | |
with: | |
provider: lxd | |
channel: latest/stable | |
juju-channel: 3/stable | |
tox-version: ${{ matrix.tox }} | |
charmcraft-channel: ${{ needs.charmcraft.outputs.channel }} | |
- name: Run Tests | |
run: | | |
tox -e tests -- -k "not k8s" | |
exit $? | |
test-lxd: | |
name: Test lxd environment | |
needs: [charmcraft] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
lxd: | |
- '5.21' | |
- '6.1' | |
- 'latest' | |
os: | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
- ubuntu-24.04 | |
juju: | |
- '2.9/stable' | |
- '3.5/stable' | |
- '3/stable' | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Install Python | |
if: ${{ ! contains(fromJson('["ubuntu-20.04", "ubuntu-22.04"]'), matrix.os) }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- uses: ./ | |
with: | |
provider: lxd | |
channel: ${{ matrix.lxd }}/stable | |
juju-channel: ${{ matrix.juju }} | |
charmcraft-channel: ${{ needs.charmcraft.outputs.channel }} | |
- name: Run Tests for != 2.x | |
if : ${{ startsWith(matrix.juju, 2) != true }} | |
run: | | |
tox -e tests -- -k "not k8s" | |
exit $? | |
- name: Run 2.9 Tests | |
if : ${{ startsWith(matrix.juju, 2) == true }} | |
run: | | |
tox -e 2.9-tests -- -k "not k8s" | |
exit $? | |
test-microk8s-strict: | |
name: Test microk8s strict | |
needs: [charmcraft] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
- ubuntu-24.04 | |
channel: | |
- 1.28-strict/stable | |
- 1.27-strict/stable | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Install Python | |
if: ${{ ! contains(fromJson('["ubuntu-20.04", "ubuntu-22.04"]'), matrix.os) }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- uses: ./ | |
with: | |
provider: microk8s | |
channel: ${{ matrix.channel }} | |
charmcraft-channel: ${{ needs.charmcraft.outputs.channel }} | |
- name: Run Tests | |
run: | | |
tox -e tests -- -k "not machine" | |
test-microk8s-classic: | |
name: Test microk8s classic | |
needs: [charmcraft] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
- ubuntu-24.04 | |
channel: | |
- 1.28/stable | |
- latest/stable | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Install Python | |
if: ${{ ! contains(fromJson('["ubuntu-20.04", "ubuntu-22.04"]'), matrix.os) }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- uses: ./ | |
with: | |
provider: microk8s | |
channel: ${{ matrix.channel }} | |
juju-channel: 2.9/stable | |
charmcraft-channel: ${{ needs.charmcraft.outputs.channel }} | |
- name: Run Tests | |
run: | | |
tox -e 2.9-tests -- -k "not machine" | |
test-microk8s-default-addons: | |
name: Test default addons are enabled by microk8s provider. | |
needs: [charmcraft] | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- uses: ./ | |
with: | |
provider: microk8s | |
channel: 1.28-strict/stable | |
charmcraft-channel: ${{ needs.charmcraft.outputs.channel }} | |
- name: Run Tests | |
run: | | |
tox -e tests -- -k "addons" --addons "storage dns rbac" | |
test-microstack: | |
runs-on: self-hosted | |
needs: [charmcraft] | |
name: Test microstack environment | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- uses: ./ | |
with: | |
provider: microstack | |
charmcraft-channel: ${{ needs.charmcraft.outputs.channel }} | |
- name: Run Tests | |
run: | | |
tox -e tests -- -k "not k8s" | |
test-vSphere: | |
runs-on: self-hosted | |
needs: [charmcraft] | |
name: Test vSphere environment | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- uses: ./ | |
with: | |
provider: vsphere | |
credentials-yaml: ${{ secrets.CREDENTIALS_YAML }} | |
clouds-yaml: ${{ secrets.CLOUDS_YAML }} | |
bootstrap-options: "--model-default datastore=vsanDatastore --model-default primary-network=VLAN_2764 --bootstrap-image=juju-ci-root/templates/jammy-test-template --bootstrap-series=jammy" | |
bootstrap-constraints: "arch=amd64 cores=2 mem=4G" | |
charmcraft-channel: ${{ needs.charmcraft.outputs.channel }} | |
- name: Run Tests | |
run: | | |
tox -e tests -- -k "not k8s" | |
test-multi-controller: | |
name: Test microk8s next to lxd | |
needs: [charmcraft] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
- ubuntu-24.04 | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Install Python | |
if: ${{ ! contains(fromJson('["ubuntu-20.04", "ubuntu-22.04"]'), matrix.os) }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- name: Setup k8s controller | |
uses: ./ | |
with: | |
provider: microk8s | |
channel: 1.28-strict/stable | |
charmcraft-channel: ${{ needs.charmcraft.outputs.channel }} | |
- name: Save k8s controller name | |
id: k8s-controller | |
# The `CONTROLLER_NAME` envvar is set by this actions | |
run: echo "name=$CONTROLLER_NAME" >> $GITHUB_OUTPUT | |
- name: Setup lxd controller | |
uses: ./ | |
with: | |
provider: lxd | |
- name: Save lxd controller name | |
id: lxd-controller | |
# The `CONTROLLER_NAME` envvar is set by this action | |
run: echo "name=$CONTROLLER_NAME" >> $GITHUB_OUTPUT | |
- name: Test we can switch to the controllers | |
run: | | |
set -eu | |
juju switch ${{ steps.k8s-controller.outputs.name }} | |
juju switch ${{ steps.lxd-controller.outputs.name }} |