Skip to content

Feat/competence document generation #760

Feat/competence document generation

Feat/competence document generation #760

name: Continuous integration
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
on:
workflow_call:
pull_request:
paths:
- '**.js'
- '**.yml'
- '**.cs'
- '**.json'
- '**.csproj'
- '**.ts'
- '**.vue'
- '**.css'
- '**.yaml'
jobs:
build-backend:
name: Build .NET solution
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/[email protected]
with:
dotnet-version: '6.0.x'
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore
build-frontend:
name: Build frontend
runs-on: ubuntu-20.04
defaults:
run:
working-directory: Epsilon.Host.Frontend
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
cache-dependency-path: 'Epsilon.Host.Frontend/pnpm-lock.yaml'
- name: Install modules
run: pnpm install
- name: Build
run: pnpm build
lint-frontend:
name: Lint and format frontend
runs-on: ubuntu-20.04
needs: [ build-frontend ]
defaults:
run:
working-directory: Epsilon.Host.Frontend
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
cache-dependency-path: 'Epsilon.Host.Frontend/pnpm-lock.yaml'
- name: Install modules
run: pnpm install
- name: Perform linter
run: pnpm run lint
- name: Perform code formatter
run: pnpm run format-code
unit-testing:
name: Unit testing
runs-on: ubuntu-20.04
needs: [ build-backend ]
steps:
- uses: actions/checkout@v4
- uses: actions/[email protected]
with:
dotnet-version: '6.0.x'
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Test with the dotnet CLI
run: dotnet test --no-restore --verbosity normal
build-docker:
name: Build Docker
runs-on: ubuntu-20.04
needs: [ build-frontend, build-backend, lint-frontend, unit-testing ]
strategy:
fail-fast: false
matrix:
stage: [ 'development', 'staging', 'production' ]
steps:
- uses: actions/checkout@v4
- name: Create env file for ${{ matrix.stage }}
run: cp .env.example .env.${{ matrix.stage }}
- name: Build the containers
run: docker-compose -f docker-compose.${{ matrix.stage }}.yml build
code-analysis:
name: Code analysis
needs: [ build-frontend, build-backend, lint-frontend, unit-testing ]
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'csharp', 'javascript-typescript' ]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
- name: Autobuild
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"