feat(salarié): taux AGS exposé + exonérations heures supplémentaires non applicables #7258
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: Déploiement | |
on: | |
pull_request_target: | |
types: [opened, synchronize] | |
push: | |
branches: [master] | |
# We display the release notes in the "news" section of mon-entreprise.urssaf.fr so | |
# we want to re-deploy the site when a new release is published or edited on | |
# GitHub. | |
release: | |
types: [published, edited] | |
# The /stats data is generated during the build. To keep the daily data fresh, | |
# we relaunch a nightly full build of the app | |
schedule: | |
- cron: '0 4 * * *' | |
jobs: | |
deploy-context: | |
runs-on: ubuntu-22.04 | |
outputs: | |
env-name: ${{ steps.deploy-env.outputs.name }} | |
api_url: ${{ steps.base-urls.outputs.api }} | |
server_url: ${{ steps.base-urls.outputs.server }} | |
fr_url: ${{ steps.base-urls.outputs.fr }} | |
en_url: ${{ steps.base-urls.outputs.en }} | |
steps: | |
- id: deploy-env | |
run: echo "name=${{ github.event.number || '${GITHUB_REF#refs/*/}' }}" >> $GITHUB_OUTPUT | |
- id: base-urls | |
run: | |
echo "server=${{ steps.deploy-env.outputs.name == 'master' && 'https://mon-entreprise-server.osc-fr1.scalingo.io' || format('https://mon-entreprise-server-pr{0}.osc-fr1.scalingo.io', steps.deploy-env.outputs.name) }}" >> $GITHUB_OUTPUT; | |
echo "api=${{ steps.deploy-env.outputs.name == 'master' && 'https://mon-entreprise-api.osc-fr1.scalingo.io' || format('https://mon-entreprise-api-pr{0}.osc-fr1.scalingo.io', steps.deploy-env.outputs.name) }}" >> $GITHUB_OUTPUT; | |
echo "fr=${{ steps.deploy-env.outputs.name == 'master' && 'https://mon-entreprise.urssaf.fr' || format('https://{0}--mon-entreprise.netlify.app', steps.deploy-env.outputs.name) }}" >> $GITHUB_OUTPUT; | |
echo "en=${{ steps.deploy-env.outputs.name == 'master' && 'https://mycompanyinfrance.urssaf.fr' || format('https://{0}-en--mon-entreprise.netlify.app', steps.deploy-env.outputs.name) }}" >> $GITHUB_OUTPUT; | |
build: | |
needs: deploy-context | |
env: | |
API_BASE_URL: ${{ needs.deploy-context.outputs.api_url }} | |
SERVER_BASE_URL: ${{ needs.deploy-context.outputs.server_url }} | |
VITE_FR_BASE_URL: ${{ needs.deploy-context.outputs.fr_url }} | |
VITE_EN_BASE_URL: ${{ needs.deploy-context.outputs.en_url }} | |
runs-on: ubuntu-22.04 | |
environment: ${{ needs.deploy-context.outputs.env-name }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/install | |
env: | |
# Secrets of all kinds for fetching stats & releases | |
GITHUB_API_SECRET: ${{ secrets.GITHUB_TOKEN }} | |
ATINTERNET_API_SECRET_KEY: ${{ secrets.ATINTERNET_API_SECRET_KEY }} | |
ATINTERNET_API_ACCESS_KEY: ${{ secrets.ATINTERNET_API_ACCESS_KEY }} | |
CRISP_API_IDENTIFIER: ${{ secrets.CRISP_API_IDENTIFIER }} | |
CRISP_API_KEY: ${{ secrets.CRISP_API_KEY }} | |
CRISP_WEBSITE_ID: ${{ secrets.CRISP_WEBSITE_ID }} | |
- name: Build app | |
run: yarn workspace site build | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
VITE_AT_INTERNET_SITE_ID: ${{ vars.VITE_AT_INTERNET_SITE_ID }} | |
VITE_ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }} | |
VITE_ALGOLIA_SEARCH_KEY: ${{secrets.ALGOLIA_SEARCH_KEY}} | |
VITE_ALGOLIA_INDEX_PREFIX: monentreprise-${{needs.deploy-context.outputs.env-name}}- | |
VITE_GITHUB_REF: ${{ github.ref }} | |
VITE_GITHUB_HEAD_REF: ${{ github.head_ref }} | |
VITE_GITHUB_SHA: ${{ github.sha }} | |
- name: Build app SSR | |
run: | | |
yarn workspace site build:ssr | |
- name: Prerender common routes | |
run: | | |
yarn workspace site build:prerender --netlify-toml-path ./netlify.base.toml | |
- name: Replace site placeholders in netlify.toml redirection file | |
run: | | |
cp site/netlify.base.toml site/netlify.toml; | |
sed -i "s|:API_URL|$API_BASE_URL|g" site/netlify.toml; | |
sed -i "s|:SERVER_URL|$SERVER_BASE_URL|g" site/netlify.toml; | |
sed -i "s|:SITE_FR|$VITE_FR_BASE_URL|g" site/netlify.toml; | |
sed -i "s|:SITE_EN|$VITE_EN_BASE_URL|g" site/netlify.toml; | |
- name: Update Algolia index | |
run: yarn workspace site algolia:update | |
env: | |
ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }} | |
ALGOLIA_ADMIN_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }} | |
ALGOLIA_SEARCH_KEY: ${{secrets.ALGOLIA_SEARCH_KEY}} | |
ALGOLIA_INDEX_PREFIX: monentreprise-${{needs.deploy-context.outputs.env-name}}- | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: static-site | |
path: | | |
site/dist/** | |
site/netlify.toml | |
if-no-files-found: error | |
build-storybook: | |
needs: deploy-context | |
env: | |
VITE_FR_BASE_URL: ${{ needs.deploy-context.outputs.fr_url }} | |
VITE_EN_BASE_URL: ${{ needs.deploy-context.outputs.en_url }} | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/install | |
env: | |
# Secrets of all kinds for fetching stats & releases | |
GITHUB_API_SECRET: ${{ secrets.GITHUB_TOKEN }} | |
ATINTERNET_API_SECRET_KEY: ${{ secrets.ATINTERNET_API_SECRET_KEY }} | |
ATINTERNET_API_ACCESS_KEY: ${{ secrets.ATINTERNET_API_ACCESS_KEY }} | |
CRISP_API_IDENTIFIER: ${{ secrets.CRISP_API_IDENTIFIER }} | |
CRISP_API_KEY: ${{ secrets.CRISP_API_KEY }} | |
CRISP_WEBSITE_ID: ${{ secrets.CRISP_WEBSITE_ID }} | |
- name: Build Storybook | |
run: yarn workspace site build:storybook | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: static-storybook | |
path: | | |
site/storybook-static/** | |
if-no-files-found: error | |
build-api: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/install | |
- name: Build API | |
run: yarn workspace api build | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: static-api | |
path: | | |
api/dist/** | |
if-no-files-found: error | |
deploy-preview: | |
needs: [build, build-storybook, deploy-context] | |
runs-on: ubuntu-22.04 | |
if: needs.deploy-context.outputs.env-name != 'master' | |
strategy: | |
matrix: | |
site: ['', 'en'] | |
steps: | |
# https://michaelheap.com/access-secrets-from-forks/ | |
- name: Get User Permission | |
id: checkAccess | |
uses: actions-cool/check-user-permission@v2 | |
with: | |
require: write | |
username: ${{ github.triggering_actor }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check User Permission | |
if: steps.checkAccess.outputs.require-result == 'false' | |
run: | | |
echo "${{ github.triggering_actor }} does not have permissions on this repo." | |
echo "Current permission level is ${{ steps.checkAccess.outputs.user-permission }}" | |
echo "Job originally triggered by ${{ github.actor }}" | |
exit 1 | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} # This is dangerous without the first access check | |
- uses: actions/download-artifact@v3 | |
with: | |
name: static-site | |
- uses: actions/download-artifact@v3 | |
with: | |
name: static-storybook | |
path: dist/dev/storybook | |
- id: deploy-netlify | |
uses: nwtgck/actions-netlify@v2 | |
with: | |
publish-dir: './dist' | |
netlify-config-path: ./netlify.toml | |
production-deploy: false | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
enable-commit-status: true | |
enable-commit-comment: false | |
github-deployment-environment: ${{ needs.deploy-context.outputs.env-name }} | |
alias: ${{ needs.deploy-context.outputs.env-name }}${{ matrix.site && format('-{0}', matrix.site) }} | |
deploy-message: ${{ github.event.pull_request.title || needs.deploy-context.outputs.env-name }} (${{ matrix.site || 'fr' }}) | |
fails-without-credentials: true | |
# Disabled because we create our own customized comment | |
enable-pull-request-comment: false | |
env: | |
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} | |
timeout-minutes: 1 | |
deploy-prod: | |
needs: [build, build-storybook, deploy-context] | |
runs-on: ubuntu-22.04 | |
if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && needs.deploy-context.outputs.env-name == 'master' | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: static-site | |
- uses: actions/download-artifact@v3 | |
with: | |
name: static-storybook | |
path: dist/dev/storybook | |
- id: deploy-netlify | |
uses: nwtgck/actions-netlify@v2 | |
with: | |
publish-dir: './dist' | |
netlify-config-path: ./netlify.toml | |
production-deploy: true | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
enable-commit-status: true | |
enable-commit-comment: false | |
github-deployment-environment: master | |
deploy-message: Deploy production branch | |
fails-without-credentials: true | |
env: | |
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} | |
timeout-minutes: 1 | |
post-comment: | |
runs-on: ubuntu-22.04 | |
if: github.event.pull_request.head.repo.full_name == github.repository && github.event_name == 'pull_request' | |
needs: [deploy-preview, deploy-context] | |
steps: | |
- name: Find Comment | |
uses: peter-evans/find-comment@v2 | |
id: find-comment | |
with: | |
issue-number: ${{ github.event.pull_request.number }} #e.g. 1 | |
comment-author: 'github-actions[bot]' | |
body-includes: netlify | |
- name: Create comment | |
uses: peter-evans/create-or-update-comment@v3 | |
with: | |
comment-id: ${{ steps.find-comment.outputs.comment-id }} | |
issue-number: ${{ github.event.pull_request.number }} | |
edit-mode: replace | |
body: | | |
🚀 La branche est déployée ! | |
- mon-entreprise : ${{ needs.deploy-context.outputs.fr_url }} | |
- mycompanyinfrance : ${{ needs.deploy-context.outputs.en_url }} | |
- storybook : ${{ needs.deploy-context.outputs.fr_url }}/dev/storybook/ ([version EN](${{ needs.deploy-context.outputs.en_url }}/dev/storybook/)) | |
- API : ${{ needs.deploy-context.outputs.fr_url }}/api/v1/doc/ | |
e2e-test-preview: | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} | |
runs-on: ubuntu-22.04 | |
container: cypress/browsers:latest | |
# We need to specify always() https://github.com/actions/runner/issues/491 | |
if: always() && needs.deploy-preview.result == 'success' | |
needs: [deploy-context, deploy-preview] | |
strategy: | |
fail-fast: false | |
matrix: | |
site: ['fr', 'en'] | |
browser: [chrome] # Firefox is very slow… | |
viewport: [default, small] | |
container: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] | |
include: | |
- site: fr | |
specPattern: mon-entreprise/**/*.{js,jsx,ts,tsx} | |
baseUrl: ${{ needs.deploy-context.outputs.fr_url }} | |
language: fr | |
- site: en | |
specPattern: mon-entreprise/english/**/*.{js,jsx,ts,tsx} | |
baseUrl: ${{ needs.deploy-context.outputs.en_url }} | |
language: en | |
# Use 4 containers for 'en' and 10 for 'fr' | |
exclude: | |
- site: en | |
container: 1 | |
- site: en | |
container: 2 | |
- site: en | |
container: 3 | |
- site: en | |
container: 4 | |
- site: en | |
container: 5 | |
- site: en | |
container: 6 | |
- site: en | |
container: 7 | |
- site: en | |
container: 8 | |
- site: en | |
container: 9 | |
- site: en | |
container: 10 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- uses: ./.github/actions/install | |
- name: Test e2e mon-entreprise on preview (site=${{ matrix.site }}, browser=${{ matrix.browser}}, viewport=${{ matrix.viewport }}) | |
uses: cypress-io/github-action@v5 | |
with: | |
# Hack to use local node version, issue : https://github.com/cypress-io/github-action/issues/489#issuecomment-1021379037 | |
command-prefix: '--' | |
install: false | |
working-directory: site | |
record: true | |
tag: ${{ needs.deploy-context.outputs.env-name }}_deploy | |
config: specPattern=cypress/integration/${{ matrix.specPattern }},baseUrl=${{ matrix.baseUrl }}${{ matrix.viewport == 'small' && ',viewportHeight=740,viewportWidth=360' || '' }} | |
env: language=${{ matrix.language }} | |
browser: ${{ matrix.browser }} | |
parallel: true | |
group: ${{ matrix.site }}-${{ matrix.browser }}-viewport_${{ matrix.viewport }} | |
ci-build-id: '${{ github.sha }}-${{ github.event_name }}-${{ github.run_id }}-${{ github.run_attempt }}' | |
env: | |
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} | |
e2e-test-production: | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} | |
runs-on: ubuntu-22.04 | |
container: cypress/browsers:latest | |
# We need to specify always() https://github.com/actions/runner/issues/491 | |
if: always() && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && needs.deploy-prod.result == 'success' | |
needs: [deploy-context, deploy-prod] | |
strategy: | |
fail-fast: false | |
matrix: | |
site: ['fr', 'en'] | |
browser: [chrome] # Firefox is very slow… | |
viewport: [default, small] | |
container: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] | |
include: | |
- site: fr | |
specPattern: mon-entreprise/**/*.{js,jsx,ts,tsx} | |
baseUrl: ${{ needs.deploy-context.outputs.fr_url }} | |
language: fr | |
- site: en | |
specPattern: mon-entreprise/english/**/*.{js,jsx,ts,tsx} | |
baseUrl: ${{ needs.deploy-context.outputs.en_url }} | |
language: en | |
# Use 4 containers for 'en' and 10 for 'fr' | |
exclude: | |
- site: en | |
container: 1 | |
- site: en | |
container: 2 | |
- site: en | |
container: 3 | |
- site: en | |
container: 4 | |
- site: en | |
container: 5 | |
- site: en | |
container: 6 | |
- site: en | |
container: 7 | |
- site: en | |
container: 8 | |
- site: en | |
container: 9 | |
- site: en | |
container: 10 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- uses: ./.github/actions/install | |
- name: Test e2e mon-entreprise on production (site=${{ matrix.site }}, browser=${{ matrix.browser}}, viewport=${{ matrix.viewport }}) | |
uses: cypress-io/github-action@v5 | |
with: | |
install: false | |
working-directory: site | |
record: true | |
tag: ${{ needs.deploy-context.outputs.env-name }}_deploy | |
config: specPattern=cypress/integration/${{ matrix.specPattern }},baseUrl=${{ matrix.baseUrl }}${{ matrix.viewport == 'small' && ',viewportHeight=740,viewportWidth=360' || '' }} | |
env: language=${{ matrix.language }} | |
browser: ${{ matrix.browser }} | |
parallel: true | |
group: ${{ matrix.site }}-${{ matrix.browser }}-viewport_${{ matrix.viewport }} | |
ci-build-id: '${{ github.sha }}-${{ github.event_name }}-${{ github.run_id }}-${{ github.run_attempt }}' | |
env: | |
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} |