Skip to content

CI

CI #1032

Workflow file for this run

name: CI
on:
push:
pull_request:
release:
types:
- published
schedule:
- cron: '34 7 * * 1-5'
env:
MINIMUM_PYTHON_VERSION: '3.9'
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
precommit:
runs-on: ubuntu-latest
steps:
- name: Install Python ${{ env.MINIMUM_PYTHON_VERSION }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.MINIMUM_PYTHON_VERSION }}
- uses: actions/checkout@v4
- name: Install pre-commit
run: |
python -m pip install --upgrade pip
python -m pip install pre-commit virtualenv!=20.0.6
pre-commit install
- name: Run static code inspections
run: pre-commit run --all-files
build:
runs-on: ubuntu-latest
permissions:
# These permissions are needed to interact with GitHub's OIDC Token endpoint.
id-token: write
contents: read
strategy:
fail-fast: false # Try to work around ECS errors
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install tox-gh-actions poetry
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
- name: Pull the grand-challenge container images
run: |
sudo apt-get update
sudo apt-get install -y retry
retry -t 5 -- /bin/bash -c 'aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/diag-nijmegen/grand-challenge/web'
retry -t 5 -- docker pull public.ecr.aws/diag-nijmegen/grand-challenge/web:latest
retry -t 5 -- /bin/bash -c 'aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/diag-nijmegen/grand-challenge/http'
retry -t 5 -- docker pull public.ecr.aws/diag-nijmegen/grand-challenge/http:latest
- name: Add gc.localhost to /etc/hosts
run: sudo echo "127.0.0.1 gc.localhost\n127.0.0.1 minio.localhost" | sudo tee -a /etc/hosts
- name: Run tox
run: tox
deploy:
if: github.event_name == 'release'
needs: [precommit, build]
runs-on: ubuntu-latest
steps:
- name: Install Python ${{ env.MINIMUM_PYTHON_VERSION }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.MINIMUM_PYTHON_VERSION }}
- uses: actions/checkout@v4
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install poetry
- name: Upload to pypi
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.POETRY_PYPI_TOKEN_PYPI }}
run: |
poetry publish --build