Merge pull request #470 from Roche/5606dependabot/pip/fastapi-0.112.0 #1054
This file contains 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: CI | |
on: | |
push: | |
branches: ["main"] | |
pull_request: | |
branches: ["main"] | |
workflow_dispatch: | |
workflow_call: | |
permissions: | |
contents: read | |
env: | |
FORCE_COLOR: "1" # Make tools pretty. | |
PYTHON_LATEST: "3.11" | |
POETRY_VERSION: "1.4.0" | |
POETRY_VIRTUALENVS_CREATE: false | |
jobs: | |
linting: | |
name: Linting | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_LATEST }} | |
- uses: snok/install-poetry@v1 | |
with: | |
version: ${{ env.POETRY_VERSION }} | |
- name: Install dependencies | |
run: | | |
poetry self add "poetry-dynamic-versioning[plugin]" | |
poetry install | |
- name: black | |
run: python -m black --check --diff . | |
- name: flake8 | |
run: python -m flake8 . | |
- name: isort | |
run: python -m isort --check-only -v --profile black . | |
typing: | |
name: Typing | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_LATEST }} | |
- uses: snok/install-poetry@v1 | |
with: | |
version: ${{ env.POETRY_VERSION }} | |
- name: Install dependencies | |
run: | | |
poetry self add "poetry-dynamic-versioning[plugin]" | |
poetry install | |
- name: mypy | |
run: python -m mypy src tests | |
tests: | |
name: tests on Python ${{ matrix.python-version }} / Gitlab ${{ matrix.gitlab-version }} | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.11"] | |
gitlab-version: ["16.3.3-ce.0"] | |
env: | |
GITLAB_CE_VERSION: ${{ matrix.gitlab-version }} | |
GITLAB_ROOT_PASSWORD: dummyPassword | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: snok/install-poetry@v1 | |
with: | |
version: ${{ env.POETRY_VERSION }} | |
- name: Start GitLab | |
run: docker compose -f docker-compose.tests.yml up -d --wait | |
- name: Install dependencies | |
run: | | |
poetry self add "poetry-dynamic-versioning[plugin]" | |
poetry install | |
- run: coverage run -m pytest | |
env: | |
FOXOPS_TESTS_GITLAB_ADDRESS: http://127.0.0.1:8929 | |
FOXOPS_TESTS_GITLAB_USERNAME: root | |
FOXOPS_TESTS_GITLAB_PASSWORD: ${{ env.GITLAB_ROOT_PASSWORD }} | |
- name: Check test coverage | |
run: coverage report | |
package: | |
name: Build & verify package | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_LATEST }} | |
- run: python -m pip install build twine check-wheel-contents | |
- run: python -m build --sdist --wheel . | |
- run: ls -l dist | |
- run: check-wheel-contents dist/*.whl | |
- name: Check long_description | |
run: python -m twine check dist/* | |
container: | |
permissions: | |
packages: write | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build and push | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
push: ${{ (github.event.pull_request.head.repo.full_name == github.repository) || (github.ref == 'refs/heads/main') }} | |
tags: | | |
ghcr.io/roche/foxops:${{ github.sha }} | |
docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_LATEST }} | |
- uses: snok/install-poetry@v1 | |
with: | |
version: ${{ env.POETRY_VERSION }} | |
- name: Install dependencies | |
run: | | |
poetry self add "poetry-dynamic-versioning[plugin]" | |
poetry install | |
- run: make -C docs html | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: DocumentationHTML | |
path: docs/build/html/ | |
install-dev: | |
name: Verify dev env | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_LATEST }} | |
- run: python -m pip install -e . | |
- run: python -c 'import foxops; print(foxops.__version__)' | |
build-ui: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ui | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '16.17.0' | |
- name: Install dependencies 🖥 | |
run: npm install | |
- name: Lint ui/src ✔️ | |
run: npm run lint | |
- name: Unit tests 🤞 | |
run: npm run test | |
- name: Build UI 🏰 | |
run: npm run build |