refactor: Consolidate donation modal code (#940) #1570
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: Validate | |
on: | |
pull_request: | |
branches: [main] | |
push: | |
branches: main | |
env: | |
DOCKER_APP_IMAGE_NAME: 'ghcr.io/hasadna/open-bus-map-search/open-bus-map-search' | |
DOCKER_APP_IMAGE_TAG: 'latest' | |
jobs: | |
local-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: make sure no yarn.json is added | |
run: | | |
if [ -f yarn.json ]; then | |
echo "::error file=yarn.json::yarn.json is being added" | |
exit 1 | |
fi | |
- name: make sure no package-lock.json is removed | |
run: | | |
if [ ! -f package-lock.json ]; then | |
echo "::error file=package-lock.json::package-lock.json is being removed" | |
exit 1 | |
fi | |
- name: make sure package-lock.json is updated | |
run: | | |
if ! npm ci; then | |
echo "::error file=package-lock.json::package-lock.json is not updated" | |
exit 1 | |
fi | |
- name: lint | |
run: npm run lint | |
- name: madge | |
run: npx madge --extensions js,ts --circular . | |
- name: unit tests | |
run: npm run test:unit | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build and Export Docker image | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
tags: ${{ env.DOCKER_APP_IMAGE_NAME }}:${{ env.DOCKER_APP_IMAGE_TAG }} | |
outputs: type=docker, dest=/tmp/docker-image.tar | |
- name: Save Docker image | |
uses: actions/upload-artifact@v4 | |
with: | |
name: docker-image | |
path: /tmp/docker-image.tar | |
test: | |
runs-on: ubuntu-latest | |
needs: build | |
env: | |
APPLITOOLS_API_KEY: ${{ secrets.APPLITOOLS_API_KEY }} | |
APPLITOOLS_LOG_DIR: ./logs | |
APPLITOOLS_SHOW_LOGS: true | |
steps: | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: docker-image | |
path: /tmp | |
- name: Load image | |
run: docker load -i /tmp/docker-image.tar | |
- name: Run application | |
run: docker run -d -p 3000:80 ${{ env.DOCKER_APP_IMAGE_NAME }}:${{ env.DOCKER_APP_IMAGE_TAG }} | |
- uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Run install | |
run: npm ci | |
- run: npx playwright install | |
- name: Run test | |
run: npm test | |
- name: Run Storybook tests | |
if: env.APPLITOOLS_API_KEY | |
run: npx -y @applitools/eyes-storybook --storybook-url http://localhost:3000/storybook/index.html | |
- name: Prepare playwright artifact directory | |
if: always() | |
run: | | |
mkdir -p playwright-artifact | |
cp -r test-results/* playwright-artifact/ | |
cp -r playwright-report/* playwright-artifact/ | |
- name: upload combined playwright artifact | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: playwright | |
path: playwright-artifact | |
- name: upload logs if exists | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs | |
path: logs | |
if-no-files-found: warn | |
publish-test-results: | |
runs-on: ubuntu-latest | |
needs: test | |
if: always() && github.event.repository.fork == false && github.actor != 'dependabot[bot]' | |
env: | |
AWS_KEY_ID: ${{ secrets.AWS_KEY_ID }} | |
steps: | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: playwright | |
path: test-results | |
- uses: shallwefootball/s3-upload-action@master | |
name: Publish test results | |
if: always() && ${{ env.AWS_KEY_ID }} | |
id: s3-trace | |
continue-on-error: true | |
with: | |
aws_key_id: ${{env.AWS_KEY_ID}} | |
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}} | |
aws_bucket: noam-gaash.co.il | |
source_dir: test-results | |
destination_dir: ${{ github.run_id }}/open-bus/${{ github.sha }}/test-results | |
- name: Set test results | |
uses: myrotvorets/set-commit-status-action@master | |
if: always() && ${{ env.AWS_KEY_ID }} | |
with: | |
sha: ${{ github.sha }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
description: 'Playwright html report with traces' | |
status: ${{needs.test.result}} | |
context: 'Test results' | |
targetUrl: 'https://s3.amazonaws.com/noam-gaash.co.il/${{ github.run_id }}/open-bus/${{ github.sha }}/test-results/index.html' | |
build-outside-docker: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Run install | |
run: npm ci | |
- name: build | |
run: npm run build | |
- name: build storybook | |
run: npm run build-storybook | |
all-passed: | |
runs-on: ubuntu-latest | |
needs: [local-tests, test] | |
steps: | |
- name: All passed | |
run: echo "All passed" |