[pull] master from GladysAssistant:master #623
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: Pull request tests | |
run-name: Pull request tests ${{ github.head_ref }} | |
on: | |
pull_request: | |
branches: [master] | |
types: [opened, synchronize, reopened, ready_for_review] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref }} | |
cancel-in-progress: true | |
jobs: | |
test-front: | |
name: Front test | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: β¬οΈ Checkout Gladys code | |
uses: actions/checkout@v3 | |
- name: π½ Setup nodejs | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: 'front/package.json' | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
- name: π¦ Install Global NPM Packages | |
run: | | |
sudo npm install typescript node-gyp npm@latest -g | |
- name: π¦ Install NPM front packages | |
working-directory: ./front | |
run: | | |
npm ci | |
- name: π§ Prettier check | |
working-directory: ./front | |
run: | | |
npm run prettier-check | |
- name: π ESlint | |
working-directory: ./front | |
run: | | |
npm run eslint | |
- name: π Integration comparison | |
working-directory: ./front | |
run: | | |
npm run compare-translations | |
test-server: | |
name: Server test | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: β¬οΈ Checkout Gladys code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: π½ Setup nodejs | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: 'server/package.json' | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
- name: π½ Install System Dependencies | |
run: | | |
sudo apt update | |
sudo apt-get install -y libudev-dev sqlite3 openssl python-is-python3 | |
- name: π¦ Install Global NPM Packages | |
run: | | |
sudo npm install typescript node-gyp npm@latest -g | |
- name: π¦ Install NPM server packages | |
working-directory: ./server | |
run: | | |
npm ci | |
- name: π§ Prettier check | |
working-directory: ./server | |
run: | | |
npm run prettier-check | |
- name: π ESlint | |
working-directory: ./server | |
run: | | |
npm run eslint | |
- name: β Test with coverage | |
working-directory: ./server | |
run: | | |
npm run coverage | |
- name: π Dependencies security audit | |
working-directory: ./server | |
run: npm audit --production --audit-level=critical || true | |
- name: π Codecov report upload | |
uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: true | |
token: 08cd0d46-0291-42ed-b352-50924cb6cca6 | |
## Yes, we are storing the CODECOV token in plain text here and not as a secret. | |
## This is because Codecov report upload keeps failing because of a Github Action rate limit | |
## And as we are an open source project, we need forks to be able to upload reports as well, so | |
## we followed the recommandatiom from CodeCov: | |
## https://community.codecov.com/t/upload-issues-unable-to-locate-build-via-github-actions-api/3954 | |
## It's not that dangerous to do it, and it's the best tradeoff we could find | |
cypress-run: | |
name: Cypress run | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: β¬οΈ Checkout code | |
uses: actions/checkout@v3 | |
- name: π½ Setup nodejs | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: 'front/package.json' | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
- name: π½ Install System Dependencies | |
run: | | |
sudo apt update | |
sudo apt-get install -y libudev-dev sqlite3 openssl python-is-python3 | |
- name: π¦ Install NPM packages | |
run: | | |
npm ci && npm run install-server:dev | |
- name: β Cypress run | |
uses: cypress-io/github-action@v3.1.0 | |
with: | |
install: false | |
start: npm run start:cypress | |
wait-on: 'http://localhost:1444' | |
config-file: ./front/cypress/cypress.config.js | |
project: ./front | |
command: npm run cypress:run | |
build-front: | |
if: github.event.pull_request.draft == false | |
name: Front build | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: β¬οΈ Checkout code | |
uses: actions/checkout@v3 | |
- name: π½ Setup nodejs | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: 'front/package.json' | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
- name: π¦ Install NPM front packages | |
working-directory: ./front | |
run: | | |
npm ci | |
- name: ποΈ Build front | |
working-directory: ./front | |
run: | | |
npm run build-with-stats | |
- name: βοΈ Upload webpack stats artifact | |
uses: relative-ci/agent-upload-artifact-action@v2 | |
with: | |
webpackStatsFile: ./front/stats.json | |
- name: βοΈ Upload build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: static | |
path: front/build | |
docker: | |
if: github.event.pull_request.draft == false | |
needs: build-front | |
name: Docker magic ! | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: β¬οΈ Checkout code | |
uses: actions/checkout@v3 | |
- name: π½ Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: π³ Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
version: latest | |
- name: βοΈ Download build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: static | |
path: static | |
- name: π³ Build AMD64 images | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
file: ./docker/Dockerfile.buildx | |
platforms: linux/amd64 | |
push: false |