Attempt to fix tests #379
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: test_fastapi_server | |
on: | |
push: | |
paths: | |
- fastapi_server/** | |
- .github/workflows/test_fastapi_server.yml | |
pull_request: | |
branches: | |
- master | |
- develop | |
env: | |
SUBDIRECTORY: fastapi_server | |
IMAGENAME: fastapi_server | |
VERSION_NUMBER: 1.1.1 | |
jobs: | |
run_pre_commit_checks: | |
name: pre_commit_check_py${{ matrix.python-version }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ['3.10', '3.11', '3.12'] | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 5 | |
steps: | |
- uses: actions/checkout@v4 | |
# https://earthly.dev/get-earthly | |
- name: Install Earthly | |
run: sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/latest/download/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete' | |
- name: Install | |
working-directory: ${{ env.SUBDIRECTORY }} | |
run: earthly +install-dev --verbose true --PYTHONVERSION=${{ matrix.python-version }} | |
- name: Run code checks | |
working-directory: ${{ env.SUBDIRECTORY }} | |
run: earthly +pre-commit --verbose true --PYTHONVERSION=${{ matrix.python-version }} | |
test_backend: | |
name: test_backend_py${{ matrix.python-version }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ['3.10', '3.11', '3.12'] | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 5 | |
services: | |
# TODO Add minio service | |
postgres: | |
image: postgres:16-alpine | |
ports: | |
- 5432:5432 | |
env: | |
POSTGRES_USER: root | |
POSTGRES_PASSWORD: root | |
POSTGRES_DB: postgres_test | |
# Set health checks to wait until postgres has started | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up npm for prisma | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install poetry | |
run: | | |
pip install poetry==1.8 --no-cache-dir | |
- name: Make poetry use local .venv folder | |
working-directory: ${{ env.SUBDIRECTORY }} | |
run: poetry config virtualenvs.in-project true | |
- name: Install packages | |
working-directory: ${{ env.SUBDIRECTORY }} | |
run: | | |
poetry install | |
- name: Generate prisma types | |
working-directory: ${{ env.SUBDIRECTORY }} | |
run: | | |
poetry run prisma generate | |
# - name: Set up python env | |
# working-directory: ${{ env.SUBDIRECTORY }} | |
# run: | | |
# echo "PYTHONPATH=$PYTHONPATH:$(pwd):$(pwd)/src" >> $GITHUB_ENV | |
- name: Run pytest | |
working-directory: ${{ env.SUBDIRECTORY }} | |
run: | | |
poetry run python -m pytest test | |
build_and_deploy_docker_image: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build docker image | |
working-directory: ${{ env.SUBDIRECTORY }} | |
run: | | |
docker build -t burnysc2/${{ env.IMAGENAME }}:latest . | |
docker build -t burnysc2/${{ env.IMAGENAME }}:latest_dev . | |
docker build -t burnysc2/${{ env.IMAGENAME }}:${{ env.VERSION_NUMBER}} . | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- id: wait-for-jobs | |
uses: yogeshlonkar/wait-for-jobs@v0 | |
with: | |
gh-token: ${{ secrets.GITHUB_TOKEN }} | |
jobs: | | |
pre_commit_check_py3.10 | |
pre_commit_check_py3.11 | |
pre_commit_check_py3.12 | |
test_backend_py3.10 | |
test_backend_py3.11 | |
test_backend_py3.12 | |
- name: Upload docker image (develop) | |
if: github.ref == 'refs/heads/develop' && github.event_name == 'push' | |
run: | | |
docker push burnysc2/${{ env.IMAGENAME }}:latest_dev | |
docker push burnysc2/${{ env.IMAGENAME }}:${{ env.VERSION_NUMBER}} | |
- name: Upload docker image (master) | |
if: github.ref == 'refs/heads/master' && github.event_name == 'push' | |
run: docker push burnysc2/${{ env.IMAGENAME }}:latest | |
deploy_backend: | |
if: github.ref == 'refs/heads/develop' | |
needs: [build_and_deploy_docker_image] | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
runs-on: ${{ matrix.os }} | |
env: | |
USERNAME: fastapidev | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Update docker-compose.yml | |
uses: appleboy/[email protected] | |
with: | |
host: ${{ secrets.HOST }} | |
port: 22 | |
username: ${{ env.USERNAME }} | |
key: ${{ secrets.FASTAPISERVERDEVKEY }} | |
passphrase: '' | |
source: "fastapi_server/docker-compose.yml" | |
target: /home/${{ env.USERNAME }}/ | |
strip_components: 1 | |
# overwrite: true | |
- name: Update docker image on server and restart server | |
uses: appleboy/[email protected] | |
with: | |
host: ${{ secrets.HOST }} | |
port: 22 | |
username: ${{ env.USERNAME }} | |
key: ${{ secrets.FASTAPISERVERDEVKEY }} | |
passphrase: '' | |
script: | | |
cd /home/${{ env.USERNAME }} | |
docker compose --profile prod pull | |
docker compose --profile "*" down | |
docker compose --profile prod up -d |