--- name: Integration # yamllint disable-line rule:truthy on: workflow_dispatch: push: branches: - master pull_request: branches: - container-gha concurrency: group: ${{ github.workflow }}-${{ github.ref_name }} cancel-in-progress: false permissions: contents: read env: PYTHON_VERSION: "3.13" jobs: test: # TODO: Remove this if: false name: Python ${{ matrix.python-version }} runs-on: ubuntu-24.04 strategy: matrix: python-version: - "3.9" - "3.10" - "3.11" - "3.12" - "3.13" steps: - name: Setup Python uses: actions/setup-python@v5 with: python-version: "${{ matrix.python-version }}" - name: Checkout uses: actions/checkout@v4 with: persist-credentials: "false" - name: Setup cache Python uses: actions/cache@v4 with: key: "python-${{ matrix.python-version }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}" restore-keys: "python-${{ matrix.python-version }}-${{ runner.arch }}-" path: "./local/" - name: Setup venv run: make V=1 install - name: Run tests run: make V=1 ci.test theme: # TODO: Remove this if: false name: Theme runs-on: ubuntu-24.04-arm steps: - name: Checkout uses: actions/checkout@v4 with: persist-credentials: "false" - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: "./.nvmrc" - name: Setup cache Node.js uses: actions/cache@v4 with: key: "nodejs-${{ runner.arch }}-${{ hashFiles('./.nvmrc', './package.json') }}" path: "./client/simple/node_modules/" - name: Build run: make themes.all # TODO: Remove this container-build: # TODO: Uncomment # if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' name: Build (${{ matrix.arch }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - arch: amd64 os: ubuntu-24.04 emulation: false - arch: arm64 os: ubuntu-24.04-arm emulation: false - arch: armv7 os: ubuntu-24.04-arm emulation: true permissions: # Organization GHCR packages: write steps: - name: Setup Python uses: actions/setup-python@v5 with: python-version: "${{ env.PYTHON_VERSION }}" - name: Checkout uses: actions/checkout@v4 with: persist-credentials: "false" - name: Setup cache Python uses: actions/cache@v4 with: key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}" restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-" path: "./local/" - name: Setup cache container mounts uses: actions/cache@v4 with: key: "container-mounts-${{ matrix.arch }}-${{ hashFiles('./Dockerfile*') }}" restore-keys: "container-mounts-${{ matrix.arch }}-" path: | /var/tmp/buildah-cache/ /var/tmp/buildah-cache-*/ - if: ${{ matrix.emulation }} name: Setup QEMU uses: docker/setup-qemu-action@v3 - name: Login to GHCR uses: docker/login-action@v3 with: registry: "ghcr.io" username: "${{ github.repository_owner }}" password: "${{ secrets.GITHUB_TOKEN }}" - name: Build env: OVERRIDE_ARCH: "${{ matrix.arch }}" run: make ci.container.build # TODO: Remove this container-test: name: Test (${{ matrix.arch }}) runs-on: ${{ matrix.os }} needs: container-build strategy: fail-fast: false matrix: include: - arch: amd64 os: ubuntu-24.04 emulation: false - arch: arm64 os: ubuntu-24.04-arm emulation: false - arch: armv7 os: ubuntu-24.04-arm emulation: true permissions: # Organization GHCR packages: write steps: - name: Checkout uses: actions/checkout@v4 with: persist-credentials: "false" - if: ${{ matrix.emulation }} name: Setup QEMU uses: docker/setup-qemu-action@v3 - name: Login to GHCR uses: docker/login-action@v3 with: registry: "ghcr.io" username: "${{ github.repository_owner }}" password: "${{ secrets.GITHUB_TOKEN }}" - name: Test env: OVERRIDE_ARCH: "${{ matrix.arch }}" run: make ci.container.test