Merge pull request #426 from sillsdev/machine #262
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: "CI Build: E2E tests" | |
on: | |
push: | |
branches: | |
- "main" | |
workflow_dispatch: | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
timeout-minutes: 45 | |
env: | |
SERVAL_CLIENT_ID: ${{ secrets.SERVAL_CLIENT_ID }} | |
SERVAL_CLIENT_SECRET: ${{ secrets.SERVAL_CLIENT_SECRET }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
ClearML_AccessKey: ${{ secrets.ClearML_AccessKey }} | |
ClearML_SecretKey: ${{ secrets.ClearML_SecretKey }} | |
SERVAL_HOST_URL: http://localhost | |
SERVAL_AUTH_URL: https://sil-appbuilder.auth0.com | |
# ASPNETCORE_ENVIRONMENT: Development | |
steps: | |
- uses: actions/checkout@v3 | |
# get version of machine.py - MACHINE_PY_IMAGE will force the docker compose to use the proper version of machine.py | |
- name: Install regctl | |
uses: iarekylew00t/regctl-installer@v1 | |
- name: Getr Version of Machine.py | |
run: echo "MACHINE_PY_IMAGE=ghcr.io/sillsdev/machine.py:$(regctl image config ghcr.io/sillsdev/machine.py | jq -r ".config.Labels[\"org.opencontainers.image.version\"]")" >> $GITHUB_ENV | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: 6.0.x | |
- name: Check if there is a corresponding branch in Machine | |
id: find_matching_branch | |
continue-on-error: true | |
if: ${{ github.ref_name }} != "main" | |
run: cd .. && git clone https://github.com/sillsdev/machine.git --branch ${{ github.ref_name }} && dotnet build machine && dotnet build serval | |
- name: Get Machine | |
if: steps.find_matching_branch.outcome != 'success' | |
run: cd .. && mkdir machine_testing_dir && cd machine_testing_dir && git clone https://github.com/sillsdev/machine.git && cd machine && dotnet build && cd ../../serval && dotnet build && export MACHINE_TESTING_DIR="../machine_testing_dir/machine" && docker compose -f "docker-compose.yml" up -d && sleep 20 #separate repos to guarantee failures when grpc or data access is not up to date | |
- name: Start containers | |
if: steps.find_matching_branch.outcome == 'success' | |
run: docker compose -f "docker-compose.yml" up -d && sleep 20 #allow time for mongo to start up properly | |
- name: Debug network | |
run: docker ps -a && docker logs --since 10m serval_cntr && docker logs --since 10m echo_cntr && docker logs --since 10m machine-engine-cntr && docker logs --since 10m serval-mongo-1 && docker logs --since 10m machine-job-cntr | |
- name: Pre-Test | |
run: sudo mkdir -p /var/lib/serval && sudo chmod 777 /var/lib/serval | |
- name: Test | |
run: dotnet test --no-build --verbosity normal --filter "TestCategory!=slow&TestCategory=E2E" --collect:"Xplat Code Coverage" | |
- name: Upload coverage reports to Codecov | |
uses: codecov/codecov-action@v3 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
- name: Debug network (Post test) | |
if: ${{ failure() }} | |
run: docker ps -a && docker logs --since 10m serval_cntr && docker logs --since 10m echo_cntr && docker logs --since 10m machine-engine-cntr && docker logs --since 10m serval-mongo-1 && docker logs --since 10m machine-job-cntr | |
- name: Stop containers | |
if: ${{ success() || failure() }} | |
run: docker compose down |