platform/.github/workflows/main.yml
Andrey Sobolev 9075e300ca
:Apply templates (#3799)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-10-07 16:38:21 +06:00

260 lines
8.2 KiB
YAML

# This is a basic workflow to help you get started with Actions
name: CI
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [main]
tags:
- v*
pull_request:
branches: [main]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
env:
CacheFolders: |
common
deploy
dev
models
packages
plugins
pods
products
server
server-plugins
templates
tests
rush.json
.prettierrc
tools
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache node modules
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: |
common/temp
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
- name: Checking for mis-matching dependencies...
run: node common/scripts/install-run-rush.js check
- name: Installing...
run: node common/scripts/install-run-rush.js install
- name: Setting model version from git release...
run: node common/scripts/install-run-rush.js bump-model-version
- name: Building...
run: node common/scripts/install-run-rush.js build
- name: Bundle
run: node common/scripts/install-run-rush.js bundle
- name: Cache build results
uses: actions/cache@v3
env:
cache-name: cache-build-results
with:
path: ${{ env.CacheFolders}}
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
svelte-check:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache build results
uses: actions/cache@v3
env:
cache-name: cache-build-results
with:
path: ${{ env.CacheFolders}}
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
- name: Checking svelte sources...
run: node common/scripts/install-run-rush.js svelte-check
formatting:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache build results
uses: actions/cache@v3
env:
cache-name: cache-build-results
with:
path: ${{ env.CacheFolders}}
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
- name: Formatting...
run: node common/scripts/install-run-rush.js fast-format
- name: Check files formatting
run: |
echo '================================================================'
echo 'Checking for diff files'
echo '================================================================'
git diff '*.ts' '*.svelte' | cat
[ -z "$(git diff --name-only '*.ts' '*.svelte' | cat)" ]
echo '================================================================'
test:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache build results
uses: actions/cache@v3
env:
cache-name: cache-build-results
with:
path: ${{ env.CacheFolders}}
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
- name: Start MongoDB
uses: supercharge/mongodb-github-action@v1.10.0
with:
mongodb-version: 5.0
- name: Testing...
run: node common/scripts/install-run-rush.js test --verbose
uitest:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache build results
uses: actions/cache@v3
env:
cache-name: cache-build-results
with:
path: ${{ env.CacheFolders}}
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
- name: Docker build
run: node common/scripts/install-run-rush.js docker:build
env:
DOCKER_CLI_HINTS: false
- name: Prepare server
run: |
cd ./tests
./prepare.sh
- name: Install Playwright
run: |
cd ./tests/sanity
node ../../common/scripts/install-run-rushx.js ci
- name: Run UI tests
run: |
cd ./tests/sanity
node ../../common/scripts/install-run-rushx.js uitest
# - name: Archive DB
# run: |
# cd ./tests
# ./update-snapshot-ci.sh ./tests/db_dump
- name: "Store docker logs"
if: always()
run: |
cd ./tests/sanity
mkdir logs
docker logs $(docker ps | grep transactor | cut -f 1 -d ' ') > logs/transactor.log
docker logs $(docker ps | grep account | cut -f 1 -d ' ') > logs/account.log
docker logs $(docker ps | grep front | cut -f 1 -d ' ') > logs/front.log
- name: Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: playwright-results
path: ./tests/sanity/playwright-report/
- name: Upload Logs
if: always()
uses: actions/upload-artifact@v3
with:
name: docker-logs
path: ./tests/sanity/logs
# - name: Upload DB snapshot
# if: always()
# uses: actions/upload-artifact@v3
# with:
# name: db-snapshot
# path: ./tests/db_dump
docker-build:
if: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') }}
needs: [build, uitest, test, svelte-check]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache build results
uses: actions/cache@v3
env:
cache-name: cache-build-results
with:
path: ${{ env.CacheFolders}}
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }}
- name: Installing...
run: node common/scripts/install-run-rush.js install
- name: Setting model version from git release...
run: node common/scripts/install-run-rush.js bump-model-version
- name: Build, to include new model version
run: node common/scripts/install-run-rush.js build
- name: Bundle
run: node common/scripts/install-run-rush.js bundle
- name: Docker build
run: node common/scripts/install-run-rush.js docker:build
env:
DOCKER_CLI_HINTS: false
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: hardcoreeng
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Docker push staging
if: ${{ github.ref == 'refs/heads/main' }}
run: node common/scripts/install-run-rush.js docker:staging
- name: Docker push tag
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
run: |
echo Pushing release of tag ${{ github.ref }}
node common/scripts/install-run-rush.js docker:push