Skip to content

Contributions custom #909

Contributions custom

Contributions custom #909

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- master
release:
types:
- created
env:
DEBIAN_FRONTEND: noninteractive
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
flake8:
name: Check python linting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Install dependencies
run: |
echo "${{ github.event_name }}! ${{ github.event.action }}"
python -m pip install flake8 -c dev-requirements.txt
- name: Lint with flake8
run: |
flake8 georiviere
- name: Not evaluated values in migration files
run: |
test $(ls georiviere/*/migrations/*.py | xargs grep -l srid | xargs grep -L SRID | wc -l) -eq 0
doc_build:
name: Sphinx doc is building
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Install dependencies
run: |
pip install -r docs/requirements.txt
- name: Build html docs
run: |
cd docs
make html
unittests:
name: Unit tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Prepare tests settings
run: |
cp .env.dist .env
sed -i 's/^\(POSTGRES_PASSWORD=\).*/\1ci_test/' .env
sed -i 's/^\(POSTGRES_DB=\).*/\1ci_test/' .env
sed -i 's/^\(POSTGRES_USER=\).*/\1ci_test/' .env
cat .env
- name: Build Docker image
run: |
docker-compose build --build-arg UID=$UID
- name: Check no pending migrations
run: |
docker-compose run --rm web ./manage.py makemigrations --check
- name: Run tests
run: |
docker-compose run --rm web ./manage.py compilemessages
docker-compose run --rm web bash -c "coverage run ./manage.py test && coverage xml -o var/coverage.xml"
- uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: var/coverage.xml
verbose: true
fail_ci_if_error: true # optional (default = false)
build-and-push-dev-image:
runs-on: ubuntu-latest
permissions:
packages: write # required to publish docker image
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
if: ${{(github.base_ref == 'develop')}}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-and-push-image:
runs-on: ubuntu-latest
needs: [flake8, doc_build, unittests]
permissions:
packages: write # required to publish docker image
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
if: ${{ (github.event_name == 'release' && github.event.action == 'created') || (github.ref == 'refs/heads/master' && github.event_name != 'pull_request')}}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
attach_install_release:
runs-on: ubuntu-latest
needs: [ build-and-push-image ]
permissions:
contents: write # required to attach zip to release
if: ${{ github.event_name == 'release' && github.event.action == 'created' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Prepare install.zip
run: |
cd install
mkdir -p georiviere/var
cp * ./georiviere 2>/dev/null || :
cp .env.dist ./georiviere
zip -r ../install.zip georiviere/
- name: Attach zip archive as release binary
uses: skx/github-action-publish-binaries@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: 'install.zip'