diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ebfc51fc..17f7a50b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,11 +4,16 @@ concurrency: production on: push: branches: [master] + workflow_run: + workflows: [Sith3 CI] + types: [completed] workflow_dispatch: jobs: + # Runs only if Unit tests are successful deployment: runs-on: ubuntu-latest + if: ${{github.event.workflow_run.conclusion == 'success'}} environment: production timeout-minutes: 30 @@ -29,6 +34,8 @@ jobs: username : ${{secrets.USER}} key: ${{secrets.KEY}} + script_stop: true + # See https://github.com/ae-utbm/sith3/wiki/GitHub-Actions#deployment-action script: | export PATH="$HOME/.poetry/bin:$PATH" diff --git a/.github/workflows/unittests.yml b/.github/workflows/unittests.yml index f272c9ee..8acf137d 100644 --- a/.github/workflows/unittests.yml +++ b/.github/workflows/unittests.yml @@ -1,4 +1,4 @@ -name: Unit Testing +name: Sith3 CI on: pull_request: @@ -12,36 +12,51 @@ jobs: steps: - uses: actions/checkout@v3 + # Skip unit testing if no diff on .py files + - name: Check file diff + uses: technote-space/get-diff-action@v6 + id: git-diff + with: + PATTERNS: +**/*.+(py) + - name: Set up python + if: steps.git-diff.outputs.diff uses: actions/setup-python@v4 with: python-version: '3.8' - name: Install dependencies + if: steps.git-diff.outputs.diff run: | sudo apt-get update sudo apt-get install gettext libxapian-dev libgraphviz-dev - name: Install poetry + if: steps.git-diff.outputs.diff run: | python -m pip install --upgrade pip python -m pip install poetry - name: Checking pyproject.toml syntax + if: steps.git-diff.outputs.diff run: poetry check - name: Install project + if: steps.git-diff.outputs.diff run: poetry install -E testing - name: Setup xapian index + if: steps.git-diff.outputs.diff run: | mkdir -p /dev/shm/search_indexes ln -s /dev/shm/search_indexes sith/search_indexes - name: Setup project + if: steps.git-diff.outputs.diff run: poetry run ./manage.py compilemessages - name: Launch tests and generate coverage report + if: steps.git-diff.outputs.diff run: | poetry run coverage run ./manage.py test poetry run coverage report