Apply suggestions from code review #3224
Workflow file for this run
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: Unittests | |
on: push | |
jobs: | |
run-unittests: | |
# Run on merge to main, where the commit name starts with "Bump version:" (for bump2version) | |
# if: "startsWith(github.event.head_commit.message, 'Bump version:')" | |
runs-on: ubuntu-latest | |
env: | |
DOCKER_BUILDKIT: 1 | |
BUILDKIT_PROGRESS: plain | |
CLOUDSDK_CORE_DISABLE_PROMPTS: 1 | |
# used for generating API | |
SM_DOCKER: samplemetadata:dev | |
defaults: | |
run: | |
shell: bash -eo pipefail -l {0} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: "temurin" # See 'Supported distributions' for available options | |
java-version: "17" | |
- name: Setup build env | |
run: | | |
set -euxo pipefail | |
pip install -r requirements-dev.txt | |
pip install -r requirements.txt | |
# openapi-generator | |
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.3.0/openapi-generator-cli-5.3.0.jar -O openapi-generator-cli.jar | |
# liquibase connector | |
pushd db/ | |
wget https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/3.0.3/mariadb-java-client-3.0.3.jar | |
popd | |
# liquibase | |
# Temporarily disable due to removed liquibase 4.22.0, re-enable when liquibase release again | |
# VERSION=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/liquibase/liquibase/releases/latest | grep -o "v.*" | sed s/'>.*'//g | sed s/'v'//g | sed 's/"//g') | |
VERSION=4.21.1 | |
curl -L https://github.com/liquibase/liquibase/releases/download/v${VERSION}/liquibase-${VERSION}.zip --output liquibase-${VERSION}.zip | |
unzip -o -d liquibase liquibase-${VERSION}.zip | |
echo "$(pwd)/liquibase" >> $GITHUB_PATH | |
- name: "build image" | |
run: | | |
docker build \ | |
--build-arg SM_ENVIRONMENT=local \ | |
--tag $SM_DOCKER \ | |
-f deploy/api/Dockerfile \ | |
. | |
- name: "build deployable API" | |
run: | | |
export OPENAPI_COMMAND="java -jar openapi-generator-cli.jar" | |
python regenerate_api.py | |
pip install . | |
- name: "Run unit tests" | |
id: runtests | |
run: | | |
coverage run -m unittest discover -p 'test*.py' -s '.' | |
rc=$? | |
coverage xml | |
echo "rc=$rc" >> $GITHUB_OUTPUT | |
- name: "Upload coverage report" | |
uses: codecov/codecov-action@v3 | |
with: | |
files: ./coverage.xml | |
- name: "build web front-end" | |
run: | | |
set -eo pipefail | |
pushd web | |
# installs package-lock, not what it thinks it should be | |
npm ci | |
npm run build | |
# eventually run web front-end tests | |
popd | |
- name: Fail if tests are not passing | |
if: ${{ steps.runtests.outputs.rc != 0 }} | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
core.setFailed('Unit tests failed with rc = ${{ steps.runtests.outputs.rc }}') |