.limit_publish_pipelines: rules: - if: '$CI_COMMIT_BRANCH == "develop" && $CI_COMMIT_MESSAGE =~ /ci: publish prerelease/ && $CI_PIPELINE_SOURCE != "schedule"' variables: PUBLISH_TAG: next - if: '$CI_COMMIT_BRANCH == "main" && $CI_COMMIT_MESSAGE =~ /ci: publish release/ && $CI_PIPELINE_SOURCE != "schedule"' variables: PUBLISH_TAG: latest deploy: stage: publish needs: ['build', 'unit', 'integration', 'e2e', 'audit'] script: - pnpm install - pnpm run deploy artifacts: paths: - ./.deploy - ./frontend/app/www rules: - !reference [.limit_publish_pipelines, rules] publish image: stage: publish inherit: default: - tags needs: ['deploy'] image: name: gcr.io/kaniko-project/executor:v1.24.0-debug entrypoint: [""] script: - > /kaniko/executor --context "${CI_PROJECT_DIR}/${DEPLOY_DIR}" --dockerfile "${CI_PROJECT_DIR}/${DEPLOY_DIR}/Dockerfile" --destination "${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:$(grep -o '"version": "[^"]*' "${DEPLOY_DIR}/package.json" | cut -d'"' -f4)" --destination "${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${PUBLISH_TAG}" parallel: matrix: - IMAGE_NAME: database DEPLOY_DIR: backend/database - IMAGE_NAME: backend DEPLOY_DIR: .deploy/backend - IMAGE_NAME: proxy DEPLOY_DIR: .deploy/proxy - IMAGE_NAME: api DEPLOY_DIR: .deploy/api-cli - IMAGE_NAME: minimal-connector DEPLOY_DIR: .deploy/minimal-connector - IMAGE_NAME: minimal-plugin DEPLOY_DIR: .deploy/minimal-plugin - IMAGE_NAME: app DEPLOY_DIR: frontend/app rules: - !reference [.limit_publish_pipelines, rules] publish packages: stage: publish needs: ['deploy'] variables: GIT_STRATEGY: clone GIT_DEPTH: 0 script: - pnpm install - pnpm build - pnpm config set '//registry.npmjs.org/:_authToken' "${NPM_AUTH_TOKEN}" - pnpm publish -r --publish-branch ${CI_COMMIT_BRANCH} --tag ${PUBLISH_TAG} --no-git-checks # TODO: Git checks... rules: - !reference [.limit_publish_pipelines, rules] publish docs: stage: publish needs: ['deploy'] script: - pnpm install --prefer-offline - pnpm run docs - mv docs public artifacts: paths: - public rules: - !reference [.limit_publish_pipelines, rules]