| name: ci | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| on: | |
| push: | |
| branches: | |
| - 'main' | |
| tags: | |
| - 'v*' | |
| pull_request: | |
| env: | |
| DOCKER_BUILDKIT: 1 | |
| FORCE_COLOR: 1 | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| - | |
| name: Setup Python | |
| uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0 | |
| with: | |
| python-version: '3.x' | |
| - | |
| name: Install ruff | |
| run: pip install -U ruff==0.1.8 | |
| - | |
| name: Run ruff | |
| run: ruff docker tests | |
| build: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| - | |
| name: Setup Python | |
| uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0 | |
| with: | |
| python-version: '3.x' | |
| - | |
| name: Build | |
| run: pip3 install build && python -m build . | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 | |
| with: | |
| name: dist | |
| path: dist | |
| unit-tests: | |
| runs-on: ubuntu-24.04 | |
| strategy: | |
| matrix: | |
| python-version: | |
| - '3.8' | |
| - '3.9' | |
| - '3.10' | |
| - '3.11' | |
| - '3.12' | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| - | |
| name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| allow-prereleases: true | |
| - | |
| name: Install dependencies | |
| run: | | |
| python3 -m pip install --upgrade pip | |
| pip3 install '.[ssh,dev]' | |
| - | |
| name: Run unit tests | |
| run: | | |
| docker logout | |
| rm -rf ~/.docker | |
| py.test -v --cov=docker tests/unit | |
| integration-tests: | |
| runs-on: ubuntu-24.04 | |
| strategy: | |
| matrix: | |
| variant: | |
| - integration-dind | |
| - integration-dind-ssl | |
| - integration-dind-ssh | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - | |
| name: Run ${{ matrix.variant }} | |
| run: | | |
| docker logout | |
| rm -rf ~/.docker | |
| make ${{ matrix.variant }} | |
| arm64-integration-tests: | |
| runs-on: ubuntu-24.04-arm | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - | |
| name: Run integration-dind | |
| run: | | |
| docker logout | |
| rm -rf ~/.docker | |
| make integration-dind |