Passage en monorepo #21
Workflow file for this run
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: Publish Docker image | |
on: | |
pull_request: | |
paths-ignore: | |
- '**.md' | |
workflow_dispatch: | |
# release: | |
# types: [published] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
#test-unit: | |
build-tools: | |
environment: dev | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: earthly/actions/setup-earthly@v1 | |
with: | |
version: v0.7.20 | |
- name: Login into registry | |
run: earthly +docker-dev-login --GH_USER=${{ secrets.GH_USER }} --GH_TOKEN=${{ secrets.GH_TOKEN }} | |
- name: Build and push Sqitch | |
run: earthly --use-inline-cache --save-inline-cache --push +sqitch-build | |
- name: Build and push pg_tap | |
run: earthly --use-inline-cache --save-inline-cache --push +pg-tap-build | |
build-business-dev: | |
# todo: needs: unit-test | |
environment: dev | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: earthly/actions/setup-earthly@v1 | |
with: | |
version: v0.7.20 | |
- name: Login into registry | |
run: earthly +docker-dev-login --GH_USER=${{ secrets.GH_USER }} --GH_TOKEN=${{ secrets.GH_TOKEN }} | |
- name: Build and push business deps image | |
run: earthly --use-inline-cache --save-inline-cache --push +business-build | |
build-app-dev: | |
# todo: needs: unit-test | |
environment: dev | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: earthly/actions/setup-earthly@v1 | |
with: | |
version: v0.7.20 | |
- name: Login into registry | |
run: earthly +docker-dev-login --GH_USER=${{ secrets.GH_USER }} --GH_TOKEN=${{ secrets.GH_TOKEN }} | |
- name: Build and push front deps image | |
run: earthly --use-inline-cache --save-inline-cache --push +front-deps | |
- name: Build and push app image | |
run: earthly --use-inline-cache --save-inline-cache --push +app-build --ANON_KEY=${{ secrets.ANON_KEY }} --API_URL=${{ secrets.API_URL }} | |
test-api: | |
needs: | |
- build-business-dev | |
- build-tools | |
environment: dev | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: earthly/actions/setup-earthly@v1 | |
with: | |
version: v0.7.20 | |
- uses: supabase/setup-cli@v1 | |
with: | |
version: 1.52.3 | |
- name: Start services | |
run: > | |
earthly +dev | |
--stop=no --datalayer=yes --business=yes --app=no --eco=yes --fast=no --version=HEAD | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
- name: Reset de postgrest | |
run: docker restart supabase_rest_tet | |
- name: Test curl | |
run: > | |
earthly +curl-test | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
- name: Test API | |
run: > | |
earthly +api-test --tests 'base droit historique plan_action labellisation indicateurs utilisateur' | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
test-business: | |
needs: | |
- build-business-dev | |
- build-tools | |
environment: dev | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: earthly/actions/setup-earthly@v1 | |
with: | |
version: v0.7.20 | |
- uses: supabase/setup-cli@v1 | |
with: | |
version: 1.52.3 | |
- name: Start services | |
run: > | |
earthly +dev | |
--stop=no --datalayer=yes --business=no --app=no --eco=yes --fast=no --version=HEAD | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
- name: Reset de postgrest | |
run: docker restart supabase_rest_tet | |
- name: Test curl | |
run: > | |
earthly +curl-test | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
- name: Test Business | |
run: > | |
earthly +business-test | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
test-app: | |
needs: | |
- build-business-dev | |
- build-tools | |
environment: dev | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: earthly/actions/setup-earthly@v1 | |
with: | |
version: v0.7.20 | |
- uses: supabase/setup-cli@v1 | |
with: | |
version: 1.52.3 | |
- name: Start services | |
run: > | |
earthly +dev | |
--stop=no --datalayer=yes --business=no --app=no --eco=yes --fast=no --version=HEAD | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
- name: Reset de postgrest | |
run: docker restart supabase_rest_tet | |
- name: Test curl | |
run: > | |
earthly +curl-test | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
- name: Test de l'application React | |
run: > | |
earthly +app-test | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
test-db-deploy: | |
needs: | |
- build-business-dev | |
- build-tools | |
environment: dev | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: earthly/actions/setup-earthly@v1 | |
with: | |
version: v0.7.20 | |
- uses: supabase/setup-cli@v1 | |
with: | |
version: 1.52.3 | |
- name: Start services | |
run: > | |
earthly +dev | |
--stop=no --datalayer=yes --business=no --app=no --eco=yes --fast=no --version=HEAD | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
- name: Test curl | |
run: > | |
earthly +curl-test | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
- name: Test Deploy | |
run: > | |
earthly +db-deploy-test | |
--DB_URL=${{ secrets.DB_URL }} | |
test-db: | |
needs: | |
- build-business-dev | |
- build-tools | |
environment: dev | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: earthly/actions/setup-earthly@v1 | |
with: | |
version: v0.7.20 | |
- uses: supabase/setup-cli@v1 | |
with: | |
version: 1.52.3 | |
- name: Start services | |
run: > | |
earthly +dev | |
--stop=no --datalayer=yes --business=no --app=no --eco=no --fast=no --version=HEAD | |
--DB_URL=${{ secrets.DB_URL }} | |
--SERVICE_ROLE_KEY=${{ secrets.SERVICE_ROLE_KEY }} | |
--API_URL=${{ secrets.API_URL }} | |
- name: Test Deploy | |
run: > | |
earthly +db-test | |
--DB_URL=${{ secrets.DB_URL }} | |
test-e2e: | |
needs: | |
- build-business-dev | |
- build-tools | |
- build-app-dev | |
name: End-to-end tests | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
env: | |
e2e-directory: ./e2e | |
datalayer-directory: ./data_layer | |
project-docker-directory: ./ | |
CYPRESS_IMAGE: 'cypress/browsers:node-20.6.1-chrome-116.0.5845.187-1-ff-117.0-edge-116.0.1938.76-1' | |
LANG: 'fr_FR.UTF-8' | |
REACT_APP_CRISP_WEBSITE_ID: 96fe7866-d005-4623-80b1-bd772e99855c | |
GIT_HEAD_REF: ${{github.head_ref}} | |
GIT_SHA: ${{github.sha}} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: earthly/actions/setup-earthly@v1 | |
with: | |
version: v0.7.0 | |
- uses: supabase/setup-cli@v1 | |
with: | |
version: 1.52.3 | |
# fixe la langue de l'environnement de test : permet de faire passer les | |
# tests de composant utilisant des fonctions telles que toLocaleString() | |
- name: Set locale | |
run: | | |
sudo locale-gen ${{env.LANG}} | |
sudo update-locale LANG=${{env.LANG}} | |
- run: earthly +setup-env | |
- run: earthly +dev --app=yes | |
- run: docker restart supabase_rest_tet | |
- run: earthly +curl-test | |
# run tests into electron | |
- name: Cypress run | |
uses: cypress-io/github-action@v5 | |
with: | |
working-directory: ${{env.e2e-directory}} | |
env: | |
# pass GitHub token to allow accurately detecting a build vs a re-run build | |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
- name: Upload report to GitHub | |
if: failure() | |
uses: actions/upload-artifact@master | |
with: | |
name: report-chrome | |
path: ${{env.e2e-directory}}/cucumber-report.html | |
- name: Collect docker logs on failure | |
if: failure() | |
uses: jwalton/gh-docker-logs@v1 | |
with: | |
dest: './logs' | |
- name: Tar logs | |
if: failure() | |
run: tar cvzf ./logs.tgz ./logs | |
- name: Upload logs to GitHub | |
if: failure() | |
uses: actions/upload-artifact@master | |
with: | |
name: logs.tgz | |
path: ./logs.tgz | |
deploy: | |
environment: preprod | |
# todo: if: ${{ github.ref == 'refs/heads/main' }} | |
needs: [test-api, test-business, test-app, test-db-deploy, test-db, test-e2e] | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: earthly/actions/setup-earthly@v1 | |
with: | |
version: v0.7.20 | |
- name: Deploy site on koyeb | |
run: earthly +site-deploy --KOYEB_API_KEY=${{ secrets.KOYEB_API_KEY }} |