Skip to content

Updated note on current status #183

Updated note on current status

Updated note on current status #183

name: Test and deploy
on: [ push, pull_request ]
env:
# Version required to run itwêwina:
ACTIONS_PYTHON_VERSION: 3.9
# Version required to run npm build:
ACTIONS_NODE_VERSION: 14
jobs:
# Skips deploy if [skip deploy] is present in the commit message
should-deploy:
runs-on: ubuntu-latest
outputs:
should-run: ${{ steps.ci-skip.outputs.ci-skip-not }}
if: github.repository_owner == 'UAlbertaALTLab' && github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v2
with:
# ci-skip needs to do a partial checkout
fetch-depth: '0'
- id: ci-skip
uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip deploy]'
# Run Pytest unit tests
unit-test:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: 🐍 Set up Python ${{ env.ACTIONS_PYTHON_VERSION }}
uses: actions/setup-python@v2
# actions/cache below uses this id to get the exact python version
id: setup-python
with:
python-version: ${{ env.ACTIONS_PYTHON_VERSION }}
- name: 🖥 Install system dependencies
run: sudo apt-get install -y libfoma0
- name: ☤ Install pipenv
run: python3 -m pip install pipenv==2021.11.9
# This started out life as a copy-paste from
# https://github.com/actions/cache/blob/main/examples.md#python---pipenv
- uses: actions/cache@v2
with:
path: ~/.local/share/virtualenvs
key: ${{ runner.os }}-python-${{ steps.setup-python.outputs.python-version }}-pipenv-${{ hashFiles('Pipfile.lock') }}
- name: 📥 Install dependencies
run: |
pipenv install --dev
# Install pytest plugin to show failed tests on the web
pipenv run pip install pytest-github-actions-annotate-failures
- name: Do LFS checkout
# actions/checkout@v2 has a `with: lfs: true` option, but it only
# knows how to talk to GitHub’s LFS server.
#
# These actions are automatic if you have run `git lfs install`
# even once on your dev machine.
run: git lfs install --local && git lfs fetch && git lfs checkout
- name: 🧶 Run linters/static-analysis
run: |
pipenv run mypy src
- name: 🩺 Run unit tests
env:
DEBUG: "True"
run: pipenv run test -v --cov=src --cov-report=xml
- name: Check working directory clean
run: ./libexec/check-git-status
- name: Check that generated files are up-to-date
# A few auto-generated files are checked in for convenience; ensure
# that they are up-to-date.
run: "pipenv run docker/helper.py make-yaml
&& if ! ./libexec/check-git-status ; then
echo Error: running make-yaml resulted in changed files. When
changing template files, please ensure that updated generated
files get checked in too. 1>&2 ;
exit 1 ;
fi"
- name: 📤 Upload Codecov coverage report
uses: codecov/codecov-action@v1.5.0
# Runs Cypress acceptance tests
integration-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: 🐍 Set up Python ${{ env.ACTIONS_PYTHON_VERSION }}
uses: actions/setup-python@v2
id: setup-python
with:
python-version: ${{ env.ACTIONS_PYTHON_VERSION }}
- name: Setup Node ${{ env.ACTIONS_NODE_VERSION }}
uses: actions/setup-node@v2
with:
node-version: ${{ env.ACTIONS_NODE_VERSION }}
cache: npm
- name: 🖥 Install system dependencies
run: sudo apt-get install -y libfoma0 libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb
- name: ☤ Install pipenv
run: python3 -m pip install pipenv==2021.11.9
# This started out life as a copy-paste from
# https://github.com/actions/cache/blob/main/examples.md#python---pipenv
- uses: actions/cache@v2
with:
path: ~/.local/share/virtualenvs
key: ${{ runner.os }}-python-${{ steps.setup-python.outputs.python-version }}-pipenv-${{ hashFiles('Pipfile.lock') }}
- name: 📥 Install Python dependencies
run: |
pipenv install --dev
- name: Do LFS checkout
# actions/checkout@v2 has a `with: lfs: true` option, but it only
# knows how to talk to GitHub’s LFS server.
#
# These actions are automatic if you have run `git lfs install`
# even once on your dev machine.
run: git lfs install --local && git lfs fetch && git lfs checkout
- name: 📥 Install Node dependencies
run: npm ci
trigger-deployment:
runs-on: ubuntu-latest
needs:
- should-deploy
# - unit-test
# - integration-test
if: needs.should-deploy.outputs.should-run == 'true'
steps:
- name: 🐍 Set up Python ${{ env.ACTIONS_PYTHON_VERSION }}
uses: actions/setup-python@v2
with:
python-version: ${{ env.ACTIONS_PYTHON_VERSION }}
- name: Install requests
run: pip install requests
- name: send HTTP request to deploy.altlab.dev webhook
# Be careful with spacing here.
#
# What https://yaml-multiline.info *doesn’t* warn you about: although
# `>-` means “replace newlines with spaces,” if you have an extra
# space on the next line, the newline gets preserved!
#
# So although
#
# foo: >-
# a
# a
#
# means `{ "foo": "a a" }`,
#
# foo: >-
# a
# a
#
# turns into `{ "foo": "a\n a" }` !
run: >-
curl -X POST https://deploy.altlab.dev/morphodict-backend --fail
-d '{ "secret": "${{ secrets.DEPLOY_ALTLAB_DEV_MORPHODICT_BACKEND_KEY }}" }'
-H 'Content-Type: application/json'