# CI: runs on every push. Install, lint, check, test, build (dev), e2e. when: - event: pull_request - event: push branch: main - event: tag - event: manual steps: - name: Install image: node:22-bookworm-slim commands: - corepack enable - corepack prepare pnpm@latest --activate - pnpm install --frozen-lockfile - name: Prettier image: node:22-bookworm-slim commands: - corepack enable && corepack prepare pnpm@latest --activate - pnpm run format:check depends_on: - Install - name: Send Prettier Status Notification (failure) image: curlimages/curl environment: MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token MATTERMOST_CHANNEL_ID: from_secret: mattermost_tests_channel_id MATTERMOST_POST_API_URL: from_secret: mattermost_post_api_url commands: - | BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Prettier failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - Prettier when: - status: [failure] - name: Lint image: node:22-bookworm-slim commands: - corepack enable && corepack prepare pnpm@latest --activate - pnpm run lint depends_on: - Prettier - name: Tests & Coverage image: node:22-bookworm-slim commands: - corepack enable && corepack prepare pnpm@latest --activate - pnpm run test:coverage depends_on: - Lint - name: Send Lint Status Notification (failure) image: curlimages/curl environment: MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token MATTERMOST_CHANNEL_ID: from_secret: mattermost_tests_channel_id MATTERMOST_POST_API_URL: from_secret: mattermost_post_api_url commands: - | BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Lint failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - Lint when: - status: [failure] - name: Build image: node:22-bookworm-slim commands: - corepack enable && corepack prepare pnpm@latest --activate - pnpm run build depends_on: - Tests & Coverage - name: Send Build Status Notification (failure) image: curlimages/curl environment: MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token MATTERMOST_CHANNEL_ID: from_secret: mattermost_tests_channel_id MATTERMOST_POST_API_URL: from_secret: mattermost_post_api_url commands: - | BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Build failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - Build when: - status: [failure] - name: Send CI Pipeline Status Notification (success) image: curlimages/curl environment: MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token MATTERMOST_CHANNEL_ID: from_secret: mattermost_tests_channel_id MATTERMOST_POST_API_URL: from_secret: mattermost_post_api_url commands: - | BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] CI pipeline success 🎉"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - Install - Lint - Prettier - Build when: - status: [success]