Skip to content

Merge pull request #6198 from microting/dependabot/npm_and_yarn/eform… #5050

Merge pull request #6198 from microting/dependabot/npm_and_yarn/eform…

Merge pull request #6198 from microting/dependabot/npm_and_yarn/eform… #5050

name: Master/Stable
on:
push:
branches: [ master, stable, angular15, angular16, angular17 ]
paths-ignore:
- '*.md'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker image
id: build
run: docker build . -t microtingas/frontend-container:latest --build-arg GITVERSION=1.0.0 --build-arg SENTRY_AUTH_TOKEN=${{secrets.SENTRY_AUTH_TOKEN}}
shell: bash
- run: docker save microtingas/frontend-container:latest -o container.tar
- uses: actions/upload-artifact@v3
with:
name: container
path: container.tar
test:
needs: build
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
test: [a,b,c,d,e,f,g,h,i,j]
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: container
- run: docker load -i container.tar
- name: Create docker network
run: docker network create --driver bridge --attachable data
- name: Start MariaDB
run: |
docker pull mariadb:10.8
docker run --name mariadbtest --network data -e MYSQL_ROOT_PASSWORD=secretpassword -p 3306:3306 -d mariadb:10.8
- name: Start rabbitmq
run: |
docker pull rabbitmq:latest
docker run -d --hostname my-rabbit --name some-rabbit --network data -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password rabbitmq:latest
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 20
- name: yarn install
run: cd eform-client && yarn install
- name: Create errorShots directory
run: mkdir eform-client/errorShots
- name: Start the newly build Docker container
id: docker-run
run: docker run --name my-container -p 4200:5000 --network data microtingas/frontend-container:latest "/ConnectionString=host=mariadbtest;Database=420_Angular;user=root;password=secretpassword;port=3306;Convert Zero Datetime = true;SslMode=none;" > docker_run_log 2>&1 &
- name: Sleep 15 seconds
run: sleep 15
- name: Get standard output
run: cat docker_run_log
- name: Pretest changes to work with Docker container
run: sed -i 's/localhost/mariadbtest/g' eform-client/e2e/Constants/DatabaseConfigurationConstants.ts
- name: DB Configuration
uses: cypress-io/github-action@v4
with:
start: echo 'hi'
wait-on: "http://localhost:4200"
wait-on-timeout: 120
browser: chrome
record: false
spec: cypress/e2e/db/*
config-file: cypress.config.ts
working-directory: eform-client
command-prefix: "--"
- name: testheadless2${{matrix.test}}
run: cd eform-client && npm run testheadless2${{matrix.test}}
- name: ${{matrix.test}} test
uses: cypress-io/github-action@v5
with:
start: echo 'hi'
wait-on: "http://localhost:4200"
wait-on-timeout: 120
browser: chrome
record: false
spec: cypress/e2e/${{matrix.test}}/*
config-file: cypress.config.ts
working-directory: eform-client
command-prefix: "--"
- name: Stop the newly build Docker container
if: ${{ always() }}
continue-on-error: true
run: docker stop my-container
- name: Get standard output
run: |
cat docker_run_log
result=`cat docker_run_log | grep "Now listening on: http://0.0.0.0:5000" -m 1 | wc -l`
if [ $result -ne 1 ];then exit 1; fi
- name: Stop mariadb
if: ${{ always() }}
continue-on-error: true
run: docker stop mariadbtest
- name: Stop rabbitmq
if: ${{ always() }}
continue-on-error: true
run: docker stop some-rabbit
- name: Remove old network
if: ${{ always() }}
continue-on-error: true
run: docker network rm data
- name: cleanup
if: ${{ always() }}
run: docker container prune --force
- name: The job has failed
if: ${{ failure() }}
run: |
cat docker_run_log
- name: Archive screenshot artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: error Screenshots ${{matrix.test}}
path: |
eform-client/chrome*.png
retention-days: 2
- name: Archive video artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: error Screenshots ${{matrix.test}}
path: |
eform-client/cypress/videos/*.mp4
retention-days: 2
test-dotnet:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Create docker network
run: docker network create --driver bridge --attachable data
- name: Start MariaDB
run: |
docker pull mariadb:latest
docker run --name mariadbtest --network data -e MYSQL_ROOT_PASSWORD=secretpassword -p 3306:3306 -d mariadb:latest
- name: Start rabbitmq
run: |
docker pull rabbitmq:latest
docker run -d --hostname my-rabbit --name some-rabbit --network data -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password rabbitmq:latest
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: 8.0.x
- name: Install dependencies
run: dotnet restore eFormAPI/eFormAPI.sln
- name: Build
run: dotnet build eFormAPI/eFormAPI.sln
- name: Unit Tests
run: dotnet test --no-restore -c Release -v n eFormAPI/eFormAPI.Web.Tests/eFormAPI.Web.Tests.csproj
- name: Integration Tests
run: dotnet test --no-restore -c Release -v n eFormAPI/eFormAPI.Web.Integration.Tests/eFormAPI.Web.Integration.Tests.csproj