Skip to content

[pull] master from GladysAssistant:master #606

[pull] master from GladysAssistant:master

[pull] master from GladysAssistant:master #606

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