_docs: cd docs-sources && pip install -r requirements.txt storybook/build: npm run storybook:build -w packages/ui docs/build: _docs cd docs-sources && mkdocs build -d ../docs GIT_SHA=dontcare $(MAKE) storybook/build docs/serve: _docs cd docs-sources && mkdocs serve -a localhost:8080 docs/generate-schema: # Planter vient de https://github.com/achiku/planter docker run --net=camino_default --rm agileek/planter planter postgres://postgres:password@camino_api_db/camino?sslmode=disable > docs-sources/assets/database/camino-db.uml cat docs-sources/assets/database/camino-db.uml | docker run --rm -i agileek/plantuml:1.2022.3 > docs-sources/docs/img/camino-db.svg cat docs-sources/assets/keycloak_impersonate.uml | docker run --rm -i agileek/plantuml:1.2022.3 > docs-sources/docs/img/keycloak_impersonate.svg cat docs-sources/assets/architecture.puml | docker run --rm -i agileek/plantuml:1.2022.3 > docs-sources/docs/img/architecture.svg daily: ifdef CAMINO_STAGE npm run daily -w packages/api else @echo 'lancement du daily en mode local avec la migration' npm run db:migrate -w packages/api npm run daily -w packages/api endif daily/debug: npm run daily-debug -w packages/api monthly: npm run monthly -w packages/api db/migrate: npm run db:migrate -w packages/api db/check-queries: ifndef CI npm run db:watch -w packages/api else npm run db:check -w packages/api endif test: test/ui test/api test/common test/api: test/api-unit test/api-integration test/ui: ifndef CI npm run test -w packages/ui else npm run test -w packages/ui -- --coverage endif storybook/test: ifndef CI npm run storybook:test -w packages/ui else npm run storybook:test -w packages/ui -- --url http://localhost/storybook/ endif test/common: npm run test -w packages/common test/api-unit: ifndef CI npm run test:unit -w packages/api else npm run test:unit -w packages/api -- --coverage endif test/api-integration: ifndef CI npm run test:integration -w packages/api else npm run test:integration -w packages/api -- --coverage endif lint/ui: ifndef CI npm run lint --workspace=packages/ui else npm run lint:check --workspace=packages/ui endif lint/api: ifndef CI npm run lint --workspace=packages/api else npm run ci:lint --workspace=packages/api endif lint/detect-dead-code: npm run knip lint/common: ifndef CI npm run format --workspace=packages/common else npm run lint --workspace=packages/common endif lint: lint/ui lint/api lint/common install: ifdef CI HUSKY=0 npm ci --ignore-scripts else npm ci endif install/prod: ifdef CI HUSKY=0 npm ci --omit=dev --ignore-scripts else npm ci --omit=dev endif build: build/common build/api build/ui build/common: npm run build -w packages/common build/ui: npm run build -w packages/ui build/api: ifdef CI # https://github.com/microsoft/TypeScript/issues/53087 NODE_OPTIONS=--max-old-space-size=4096 npm run build -w packages/api endif npm run build -w packages/api start/api: ifdef CAMINO_STAGE @echo 'lancement du backend en mode prod' npm start -w packages/api else @echo 'lancement du backend en mode dev(local)' npm run dev -w packages/api endif start/ui: ifdef CAMINO_STAGE @echo 'lancement du frontend en mode prod' npm start -w packages/ui else @echo 'lancement du frontend en mode dev(local)' npm run dev -w packages/ui endif ifeq (${INPUT_ENV}, dev) CD_TOKEN:=${CD_TOKEN_DEV} endif ifeq (${INPUT_ENV}, preprod) CD_TOKEN:=${CD_TOKEN_PREPROD} endif ifeq (${INPUT_ENV}, prod) CD_TOKEN:=${CD_TOKEN_PROD} endif deploy/ci: @echo "Déploiement de la version ${INPUT_SHA} en ${INPUT_ENV}" @GIT_SHA=${INPUT_SHA} CD_TOKEN=${CD_TOKEN} $(MAKE) deploy/${INPUT_ENV} _deploy: ifndef DEPLOY_URL @echo 'DEPLOY_URL est obligatoire' @exit 1 endif ifndef CD_TOKEN @echo 'CD_TOKEN est obligatoire' @exit 1 endif ifndef GIT_SHA @echo 'GIT_SHA est obligatoire' @exit 1 endif @echo 'on déploie sur ${DEPLOY_URL} la version ${GIT_SHA}' @curl --insecure --fail-with-body -I https://cd.${DEPLOY_URL}/update/${GIT_SHA} -H 'authorization: ${CD_TOKEN}' deploy/preprod: $(MAKE) DEPLOY_URL=preprod.camino.beta.gouv.fr _deploy deploy/prod: $(MAKE) DEPLOY_URL=camino.beta.gouv.fr _deploy matrices: npm run matrices -w packages/api graphql/check: npm i --global --force @graphql-inspector/ci@3.4.0 @graphql-inspector/validate-command@3.4.0 @graphql-inspector/graphql-loader@3.4.0 @graphql-inspector/code-loader@3.4.0 graphql graphql-inspector validate --noStrictFragments packages/ui/src/api packages/api/src/api/graphql/schemas/index.graphql for f in $(shell find ./packages/ui/src -name '*-api-client.ts'); do \ if grep -q gql "$$f"; then \ echo $$f; \ graphql-inspector validate --onlyErrors --noStrictFragments "$$f" packages/api/src/api/graphql/schemas/index.graphql || exit 1; \ fi \ done for f in packages/api/tests/queries/*.graphql; do \ echo $$f; \ graphql-inspector validate --noStrictFragments "$$f" packages/api/src/api/graphql/schemas/index.graphql || exit 1; \ done dev/chiffre: $(MAKE) INPUT_ENV=dev _chiffre dev/dechiffre: $(MAKE) INPUT_ENV=dev _dechiffre preprod/chiffre: $(MAKE) INPUT_ENV=preprod _chiffre preprod/dechiffre: $(MAKE) INPUT_ENV=preprod _dechiffre prod/chiffre: $(MAKE) INPUT_ENV=prod _chiffre prod/dechiffre: $(MAKE) INPUT_ENV=prod _dechiffre _chiffre: ifndef INPUT_ENV @echo 'INPUT_ENV est obligatoire' @exit 1 endif @echo 'on chiffre ${INPUT_ENV}' SOPS_AGE_RECIPIENTS=$$(cat team.age.pub ecocompose.age.pub | sed -z 's/\n/,/g;s/,$$/\n/') sops --encrypt --input-type dotenv --output-type dotenv .${INPUT_ENV}.no-commit.env > .${INPUT_ENV}.env _dechiffre: ifndef INPUT_ENV @echo 'INPUT_ENV est obligatoire' @exit 1 endif SOPS_AGE_KEY_FILE=team.age sops -d --input-type dotenv --output-type dotenv .${INPUT_ENV}.env > .${INPUT_ENV}.no-commit.env # TODO 2024-10-21 une fois tout migré sur ecoCompose, il faudra supprimer tout ce qu'il y a dans infra sauf le dossier ecocompose keycloak/build: docker build -t caminofr/camino-keycloak:26.1.0 -f Dockerfile.keycloak infra/ecocompose/keycloak/ keycloak/push: docker push caminofr/camino-keycloak:26.1.0 nginx-proxy/build: docker build -t caminofr/camino-nginx-proxy:1.6.1 -f Dockerfile.nginx-proxy infra/ecocompose/nginx-proxy/ nginx-proxy/push: docker push caminofr/camino-nginx-proxy:1.6.1