Repository navigation
Remove no longer needed type ignore comments for setproctitle #2142
Workflow file for this run
This file contains hidden or 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: Build and Release | |
| on: | |
| push: | |
| concurrency: | |
| group: build-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| DOCKERHUB_NAMESPACE: closeio | |
| PROJECT: sync-engine | |
| jobs: | |
| static-code-analysis: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - uses: astral-sh/setup-uv@v10.0.1 | |
| with: | |
| python-version: '3.12.3' | |
| - name: Install dependencies | |
| run: uv sync --locked | |
| - name: Formatting (ruff) | |
| run: uv run ruff format --check . | |
| - name: Linting (ruff) | |
| run: uv run ruff check --no-cache --output-format github . | |
| - name: Mypy | |
| run: uv run mypy | |
| build: | |
| runs-on: ${{ matrix.runs-on }} | |
| strategy: | |
| matrix: | |
| include: | |
| - arch: amd64 | |
| runs-on: ubuntu-24.04 | |
| - arch: arm64 | |
| runs-on: gh-arm64-runners | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Prepare environment | |
| run: | | |
| if [ "$(git log -1 --pretty=%B | head -n 1 | grep '#notests')" ]; then | |
| echo 'SKIP_TESTS="1"' >> $GITHUB_ENV | |
| fi | |
| if [ "$(git log -1 --pretty=%B | head -n 1 | grep '#nobuildcache')" ]; then | |
| echo 'BUILD_CACHE_BUST=${{ github.sha }}' >> $GITHUB_ENV | |
| fi | |
| BUILD_WEEK=$(date +%Y-%V) | |
| echo "BUILD_WEEK=${BUILD_WEEK}" >> $GITHUB_ENV | |
| DOCKER_IMAGE_TAG=${{ env.DOCKERHUB_NAMESPACE }}/${{ env.PROJECT }}:${{ github.sha }} | |
| if [ "${{ matrix.arch }}" = "arm64" ]; then | |
| DOCKER_IMAGE_TAG="${DOCKER_IMAGE_TAG}-arm64" | |
| fi | |
| echo "DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG}" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Set up Docker context for Buildx | |
| id: buildx-context | |
| run: | | |
| docker context create container-builder | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v4 | |
| with: | |
| version: latest | |
| endpoint: container-builder | |
| # Dependabot runs have no Docker Hub credentials; they pull anonymously and never push. | |
| - name: Login to DockerHub | |
| if: github.actor != 'dependabot[bot]' | |
| uses: docker/login-action@v4 | |
| with: | |
| username: ${{ vars.PRIVATE_RW_DOCKER_USERNAME }} | |
| password: ${{ secrets.PRIVATE_RW_DOCKER_PASSWORD }} | |
| - name: Build and push sync-engine images | |
| uses: docker/build-push-action@v7 | |
| with: | |
| platforms: linux/${{ matrix.arch }} | |
| push: false | |
| load: true | |
| tags: | | |
| ${{ env.DOCKER_IMAGE_TAG }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| build-args: | | |
| BUILD_CACHE_BUST=${{ env.BUILD_CACHE_BUST }} | |
| BUILD_WEEK=${{ env.BUILD_WEEK }} | |
| - name: Run tests | |
| run: | | |
| docker tag ${{ env.DOCKER_IMAGE_TAG }} ${{ env.PROJECT }}_app | |
| if [[ -z $SKIP_TESTS ]]; then | |
| docker compose run app bash -ec ' | |
| bin/wait-for-it.sh mysql:3306 \ | |
| && NYLAS_ENV=test pytest --cov-report= --cov=inbox tests/ \ | |
| && coverage html -d pythoncov | |
| ' | |
| else | |
| echo Skipping tests | |
| fi | |
| if: ${{ matrix.arch == 'amd64' }} | |
| - name: Push image | |
| if: github.actor != 'dependabot[bot]' | |
| run: | | |
| docker push ${{ env.DOCKER_IMAGE_TAG }} |