Files
openstapps/.gitlab/publishing.gitlab-ci.yml

84 lines
2.3 KiB
YAML

.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.12.1-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]