small improvements after release #81
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: e2e | |
on: | |
pull_request: | |
types: [ opened, reopened, synchronize ] | |
jobs: | |
e2e-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up JDK 21 for x64 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '21' | |
distribution: 'temurin' | |
architecture: x64 | |
- name: Setup Gradle 8.6 | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
gradle-version: 8.6 | |
- name: Build and run e2e-tests | |
id: e2e | |
env: | |
PROFILE: docker | |
PREFIX: qaguru | |
ARCH: amd64 | |
FRONT: niffler-ng-client | |
ALLURE_DOCKER_API: ${{ secrets.ALLURE_DOCKER_API }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
BUILD_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
HEAD_COMMIT_MESSAGE: ${{ github.event.pull_request.head.sha || github.sha }} | |
EXECUTION_TYPE: github | |
run: | | |
: # build backends with profile `docker`, only for testing | |
bash ./gradlew jibDockerBuild -x :niffler-e-2-e-tests:test || exit 1 | |
: # pull browser (see browsers.json) | |
docker pull selenoid/vnc_chrome:127.0 | |
: # run e2e tests | |
docker compose -f docker-compose.test.yml up -d | |
docker ps -a | |
docker wait niffler-e-2-e | |
exit_code=$(docker inspect -f '{{.State.ExitCode}}' niffler-e-2-e) | |
echo "e2e_exit_code=$exit_code" >> $GITHUB_OUTPUT | |
echo "### Test logs ###" | |
docker logs niffler-e-2-e | |
docker compose -f docker-compose.test.yml down | |
docker system prune -a -f | |
if [ "$exit_code" -eq "0" ]; then | |
echo "Tests passed successfully!" | |
exit 0 | |
else | |
echo "Tests failed!" | |
exit 1 | |
fi | |
- name: Add comment to PR with link to allure | |
if: always() | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const issues = await github.rest.pulls.list({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
state: 'open', | |
head: `${context.repo.owner}:${context.ref.replace('refs/heads/', '')}` | |
}) | |
const pr = context.issue.number || issues.data[0].number | |
const exitCode = ${{ steps.e2e.outputs.e2e_exit_code }} | |
const message = exitCode == '0' ? | |
'✅ TEST RUN PASSED ✅ There is the [report](https://allure.niffler-stage.qa.guru/api/allure-docker-service/projects/niffler-ng/reports/latest/index.html)\n🕓 All reports [history](https://allure.niffler-stage.qa.guru/allure-docker-service-ui/projects/niffler-ng)' : | |
'🔴 TEST RUN FAILED 🔴 There is the [report](https://allure.niffler-stage.qa.guru/api/allure-docker-service/projects/niffler-ng/reports/latest/index.html)\n🕓 All reports [history](https://allure.niffler-stage.qa.guru/allure-docker-service-ui/projects/niffler-ng)' | |
github.rest.issues.createComment({ | |
issue_number: pr, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: message | |
}) | |
collect-versions: | |
needs: e2e-tests | |
uses: ./.github/workflows/versions.yml | |
with: | |
runner: niffler-stage-runner | |
deploy-services: | |
runs-on: niffler-stage-runner | |
needs: collect-versions | |
steps: | |
- name: Push required props to GITHUB_ENV | |
run: | | |
echo "PROFILE=staging" >> $GITHUB_ENV | |
echo "PREFIX=${{ vars.DOCKER_HUB_ACC }}" >> $GITHUB_ENV | |
echo "VAULT_TOKEN=${{ secrets.VAULT_TOKEN }}" >> $GITHUB_ENV | |
echo "AUTH_VER=${{ needs.collect-versions.outputs.auth-ver }}" >> $GITHUB_ENV | |
echo "CURRENCY_VER=${{ needs.collect-versions.outputs.currency-ver }}" >> $GITHUB_ENV | |
echo "GATEWAY_VER=${{ needs.collect-versions.outputs.gateway-ver }}" >> $GITHUB_ENV | |
echo "SPEND_VER=${{ needs.collect-versions.outputs.spend-ver }}" >> $GITHUB_ENV | |
echo "USERDATA_VER=${{ needs.collect-versions.outputs.userdata-ver }}" >> $GITHUB_ENV | |
echo "FRONT_VER=${{ needs.collect-versions.outputs.front-ver }}" >> $GITHUB_ENV | |
echo "FRONT_IMAGE=niffler-ng-client" >> $GITHUB_ENV | |
- name: Summary info | |
run: | | |
echo "### niffler-auth version will be used: ${{ env.PREFIX }}/niffler-auth-${{ env.PROFILE }}:${{ env.AUTH_VER }}" | |
echo "### niffler-currency version will be used: ${{ env.PREFIX }}/niffler-currency-${{ env.PROFILE }}:${{ env.CURRENCY_VER }}" | |
echo "### niffler-gateway version will be used: ${{ env.PREFIX }}/niffler-gateway-${{ env.PROFILE }}:${{ env.GATEWAY_VER }}" | |
echo "### niffler-spend version will be used: ${{ env.PREFIX }}/niffler-spend-${{ env.PROFILE }}:${{ env.SPEND_VER }}" | |
echo "### niffler-userdata version will be used: ${{ env.PREFIX }}/niffler-userdata-${{ env.PROFILE }}:${{ env.USERDATA_VER }}" | |
echo "### niffler-front version will be used: ${{ env.PREFIX }}/${{ env.FRONT_IMAGE }}-${{ env.PROFILE }}:${{ env.FRONT_VER }}" | |
echo "### java version ###" | |
java -version | |
- name: Check changes path | |
uses: dorny/paths-filter@v3 | |
id: changes | |
with: | |
filters: | | |
auth: | |
- 'niffler-auth/**' | |
currency: | |
- 'niffler-currency/**' | |
gateway: | |
- 'niffler-gateway/**' | |
spend: | |
- 'niffler-spend/**' | |
userdata: | |
- 'niffler-userdata/**' | |
frontend: | |
- 'niffler-ng-client/**' | |
- name: Docker login | |
run: | | |
docker login --username ${{ vars.DOCKER_HUB_ACC }} --password "${{ secrets.DOCKER_HUB_PASSWORD }}" | |
- name: build auth & deploy to staging | |
if: steps.changes.outputs.auth == 'true' | |
working-directory: ./ | |
run: | | |
pwd | |
bash ./gradlew :niffler-auth:jib -x :niffler-e-2-e-tests:test | |
docker compose -f docker-compose.ci.yml pull auth.niffler.dc | |
docker compose -f docker-compose.ci.yml stop auth.niffler.dc && docker compose -f docker-compose.ci.yml up -d --no-deps auth.niffler.dc | |
docker system prune -a -f | |
echo "Deploy auth to staging done!" | |
- name: build currency & deploy to staging | |
if: steps.changes.outputs.currency == 'true' | |
working-directory: ./ | |
run: | | |
pwd | |
bash ./gradlew :niffler-currency:jib -x :niffler-e-2-e-tests:test | |
docker compose -f docker-compose.ci.yml pull currency.niffler.dc | |
docker compose -f docker-compose.ci.yml stop currency.niffler.dc && docker compose -f docker-compose.ci.yml up -d --no-deps currency.niffler.dc | |
docker system prune -a -f | |
echo "Deploy currency to staging done!" | |
- name: build gateway & deploy to staging | |
if: steps.changes.outputs.gateway == 'true' | |
working-directory: ./ | |
run: | | |
pwd | |
bash ./gradlew :niffler-gateway:jib -x :niffler-e-2-e-tests:test | |
docker compose -f docker-compose.ci.yml pull gateway.niffler.dc | |
docker compose -f docker-compose.ci.yml stop gateway.niffler.dc && docker compose -f docker-compose.ci.yml up -d --no-deps gateway.niffler.dc | |
docker system prune -a -f | |
echo "Deploy gateway to staging done!" | |
- name: build spend & deploy to staging | |
if: steps.changes.outputs.spend == 'true' | |
working-directory: ./ | |
run: | | |
pwd | |
bash ./gradlew :niffler-spend:jib -x :niffler-e-2-e-tests:test | |
docker compose -f docker-compose.ci.yml pull spend.niffler.dc | |
docker compose -f docker-compose.ci.yml stop spend.niffler.dc && docker compose -f docker-compose.ci.yml up -d --no-deps spend.niffler.dc | |
docker system prune -a -f | |
echo "Deploy spend to staging done!" | |
- name: build userdata & deploy to staging | |
if: steps.changes.outputs.userdata == 'true' | |
working-directory: ./ | |
run: | | |
pwd | |
bash ./gradlew :niffler-userdata:jib -x :niffler-e-2-e-tests:test | |
docker compose -f docker-compose.ci.yml pull userdata.niffler.dc | |
docker compose -f docker-compose.ci.yml stop userdata.niffler.dc && docker compose -f docker-compose.ci.yml up -d --no-deps userdata.niffler.dc | |
docker system prune -a -f | |
echo "Deploy userdata to staging done!" | |
- name: build frontend & deploy to staging | |
if: steps.changes.outputs.frontend == 'true' | |
working-directory: ./niffler-ng-client | |
run: | | |
pwd | |
IMAGE_TAG="${{ env.PREFIX }}/${{ env.FRONT_IMAGE }}-${{ env.PROFILE }}" | |
docker build --build-arg NPM_COMMAND=build:staging --build-arg VERSION=${{ env.FRONT_VER }} -t ${IMAGE_TAG}:${{ env.FRONT_VER }} -t ${IMAGE_TAG}:latest . | |
docker push ${IMAGE_TAG}:${{ env.FRONT_VER }} | |
docker push ${IMAGE_TAG}:latest | |
cd ../ || exit 1 | |
docker compose -f docker-compose.ci.yml pull frontend.niffler.dc | |
docker compose -f docker-compose.ci.yml stop frontend.niffler.dc && docker compose -f docker-compose.ci.yml up -d --no-deps frontend.niffler.dc | |
docker system prune -a -f | |
echo "Deploy frontend to staging done!" |