--- name: Integration # yamllint disable-line rule:truthy on: push: branches: - master pull_request: branches: - master concurrency: group: ${{ github.workflow }}-${{ github.ref_name }} cancel-in-progress: false permissions: contents: read env: PYTHON_VERSION: "3.13" jobs: test: 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: name: Theme runs-on: ubuntu-24.04-arm 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 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: 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 venv run: make V=1 install - name: Build run: make themes.all dockers: name: Docker if: github.ref == 'refs/heads/master' needs: - test - theme env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} runs-on: ubuntu-24.04 steps: - name: Checkout if: env.DOCKERHUB_USERNAME != null uses: actions/checkout@v4 with: # make sure "make docker.push" can get the git history fetch-depth: '0' - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' architecture: 'x64' - name: Cache Python dependencies id: cache-python uses: actions/cache@v4 with: path: | ./local ./.nvm ./node_modules key: python-ubuntu-20.04-3.12-${{ hashFiles('requirements*.txt', 'setup.py','.nvmrc', 'package.json') }} - name: Set up QEMU if: env.DOCKERHUB_USERNAME != null uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx if: env.DOCKERHUB_USERNAME != null uses: docker/setup-buildx-action@v1 - name: Login to DockerHub if: env.DOCKERHUB_USERNAME != null uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push if: env.DOCKERHUB_USERNAME != null run: make -e GIT_URL=$(git remote get-url origin) docker.buildx