# image: node:18 # variables: GIT_DEPTH: 0 DEPLOY_PID: "649" # Value must be the deploy project id DEPLOYMENT_TRIGGER_TOKEN: "glptt-c4145ab70634cdbb509d4eafec72c51df82bd290" # Value must be the deployment project pipeline trigger token, found/created at PROJECT > SETTINGS > CI/CD > Pipeline triggers # Best to place this variable in Project >> Settings >> CI/CD >> Variables SSH_CLONE_URL: 'git@code.vereign.com:gaiax/ocm/ocm-engine.git' # Value must be the project ssh clone url RUNNER_TAG: 'amd64-docker' # Value must be the runner label/tag for the runner which will execute these jobs PIPELINE_TRIGGERED: "no" # Needed for pipeline automation ### ### ADD HELPERS #### include: - project: 'helpers/ci-helpers' file: - 'builds.yml' - 'registries.yml' - project: 'gaiax/helpers/mono-helpers' file: - 'builds/registries.yml' - 'builds/builds.yml' - 'projects/chart-trigger.yml' - 'projects/notifiers.yml' - 'deployments/triggers.yml' stages: # - helm-branch-check - lint - test - build - release - docker - registries - helm - deploy-test - deploy-stage - deploy-prod .distributed: cache: - key: files: - yarn.lock paths: - '.yarn-cache/' before_script: - yarn install --cache-folder .yarn-cache --prefer-offline --frozen-lockfile ## ### Lint microservices ## # lint-agent: image: node:18 extends: .distributed tags: - amd64-docker stage: lint rules: - if: '$PIPELINE_TRIGGERED != "yes" && $CI_PIPELINE_SOURCE != "merge_request_event"' changes: - apps/agent/* - apps/agent/deployment/* - apps/agent/src/* - apps/agent/src/app/* - if: '$CI_COMMIT_TAG' script: - yarn nx run agent:lint --parallel=3 # lint-engine: # image: node:18 # extends: .distributed # tags: # - amd64-docker # rules: # - if: '$PIPELINE_TRIGGERED != "yes"' # changes: # - apps/engine/* # - apps/engine/deployment/* # - apps/engine/src/* # - apps/engine/src/app/* # - if: '$CI_COMMIT_TAG' # stage: lint # script: # - yarn nx run agent:lint --parallel=3 ## ### Test microservices ## test-agent: image: node:18 extends: .distributed tags: - amd64-docker rules: - if: '$PIPELINE_TRIGGERED != "yes" && $CI_PIPELINE_SOURCE != "merge_request_event"' changes: - apps/agent/* - apps/agent/deployment/* - apps/agent/src/* - apps/agent/src/app/* - if: '$CI_COMMIT_TAG' stage: test script: - yarn nx run agent:test --configuration=ci --parallel=3 # test-engine: # image: node:18 # extends: .distributed # tags: # - amd64-docker # rules: # - if: '$PIPELINE_TRIGGERED != "yes"' # changes: # - apps/engine/* # - apps/engine/deployment/* # - apps/engine/src/* # - apps/engine/src/app/* # - if: '$CI_COMMIT_TAG' # stage: test # script: # - yarn nx run agent:test --configuration=ci --parallel=3 ## ### Bare microservice build ## build-agent: image: node:18 extends: .distributed rules: - if: '$PIPELINE_TRIGGERED != "yes" && $CI_PIPELINE_SOURCE != "merge_request_event"' changes: - apps/agent/* - apps/agent/deployment/* - apps/agent/src/* - apps/agent/src/app/* - if: '$CI_COMMIT_TAG' tags: - amd64-docker stage: build script: # parallel is a CPU core count - yarn nx run agent:build:production --parallel=3 - ls -la artifacts: paths: - ./dist expire_in: 1 day # build-engine: # image: node:18 # extends: .distributed # rules: # - if: '$PIPELINE_TRIGGERED != "yes"' # changes: # - apps/engine/* # - apps/engine/deployment/* # - apps/engine/src/* # - apps/engine/src/app/* # - if: '$CI_COMMIT_TAG' # tags: # - amd64-docker # stage: build # script: # # parallel is a CPU core count # - yarn nx run agent:build:production --parallel=3 ## ### Docker build microservices ## docker-build-agent: extends: .docker-build-agent stage: docker rules: - if: '$PIPELINE_TRIGGERED == "no" && $CI_PIPELINE_SOURCE != "merge_request_event"' changes: - apps/agent/* - apps/agent/deployment/* - apps/agent/src/* - apps/agent/src/app/* - if: '$CI_COMMIT_TAG' # docker-build-engine: # extends: .docker-build-engine # stage: docker # rules: # - if: '$PIPELINE_TRIGGERED == "no"' # changes: # - apps/engine/* # - apps/engine/deployment/* # - apps/engine/src/* # - apps/engine/src/app/* # - if: '$CI_COMMIT_TAG' ## ### Push to registries ## google-image-agent: extends: .agent-cloud stage: registries rules: - if: '$CI_COMMIT_TAG == null && $PIPELINE_TRIGGERED == "no" && $CI_PIPELINE_SOURCE != "merge_request_event"' changes: - apps/agent/* - apps/agent/deployment/* - apps/agent/src/* - apps/agent/src/app/* - if: '$CI_COMMIT_TAG' # google-image-engine: # extends: .engine-cloud # stage: registries # rules: # - if: '$CI_COMMIT_TAG == null && $PIPELINE_TRIGGERED == "no"' # changes: # - apps/engine/* # - apps/engine/deployment/* # - apps/engine/src/* # - apps/engine/src/app/* # - if: '$CI_COMMIT_TAG' ## ### Configure helm ## agent: extends: .chart-trigger-agent stage: helm rules: - if: '$CI_COMMIT_TAG == null && $PIPELINE_TRIGGERED == "no" && $CI_PIPELINE_SOURCE != "merge_request_event"' changes: - apps/agent/* - apps/agent/deployment/* - apps/agent/src/* - apps/agent/src/app/* - if: '$CI_COMMIT_TAG' # engine: # extends: .chart-trigger-engine # stage: helm # rules: # - if: '$CI_COMMIT_TAG == null && $PIPELINE_TRIGGERED == "no"' # changes: # - apps/engine/* # - apps/engine/deployment/* # - apps/engine/src/* # - apps/engine/src/app/* # - if: '$CI_COMMIT_TAG' ## ### Deploy automatically on Test Environment ## agent-test ocm: stage: deploy-test extends: .test-agent-ocm-one rules: - if: '$PIPELINE_TRIGGERED == "yes" && $APP == "agent" && $CI_PIPELINE_SOURCE != "merge_request_event"' when: manual agent-test ocm-two: stage: deploy-test extends: .test-agent-ocm-two rules: - if: '$PIPELINE_TRIGGERED == "yes" && $APP == "agent" && $CI_PIPELINE_SOURCE != "merge_request_event"' when: manual # engine-test ocm: # stage: deploy-test # extends: .test-engine-ocm-one # rules: # - if: '$PIPELINE_TRIGGERED == "yes" && $APP == "engine"' # when: manual # engine-test ocm-two: # stage: deploy-test # extends: .test-engine-ocm-two # rules: # - if: '$PIPELINE_TRIGGERED == "yes" && $APP == "engine"' # when: manual ## ### Deploy on prod ## agent-prod ocm: stage: deploy-prod extends: .prod-agent-ocm-one rules: - if: '$PIPELINE_TRIGGERED == "yes" && $APP == "agent" && $CI_PIPELINE_SOURCE != "merge_request_event" && $MAIN_PROD == "yes" && $GITLAB_USER_LOGIN =~ $AUTORIZED_USERS' when: manual agent-prod ocm-two: stage: deploy-prod extends: .prod-agent-ocm-two rules: - if: '$PIPELINE_TRIGGERED == "yes" && $APP == "agent" && $CI_PIPELINE_SOURCE != "merge_request_event" && $MAIN_PROD == "yes" && $GITLAB_USER_LOGIN =~ $AUTORIZED_USERS' when: manual # engine-prod ocm: # stage: deploy-prod # extends: .prod-engine-ocm-one # rules: # - if: '$PIPELINE_TRIGGERED == "yes" && $APP == "engine"' # when: manual # engine-prod ocm-two: # stage: deploy-prod # extends: .prod-engine-ocm-two # rules: # - if: '$PIPELINE_TRIGGERED == "yes" && $APP == "engine"' # when: manual ## ### Deploy manual on Stage Environment ## # deploy agent stage: # stage: deploy-stage # only: # refs: # - master # - tags # changes: # - apps/agent/* # tags: # - amd64-docker # script: # - echo "create docker file under agent/deployment/ci" # when: manual # deploy engine stage: # stage: deploy-stage # only: # refs: # - master # - tags # changes: # - apps/engine/* # tags: # - amd64-docker # script: # - echo "create docker file under agent/deployment/ci" # when: manual # ## # ### Deploy manual on Prod Environment # ## # deploy agent prod: # stage: deploy-prod # only: # refs: # - tags # changes: # - apps/engine/* # tags: # - amd64-docker # script: # - echo "create docker file under agent/deployment/ci" # when: manual # deploy engine prod: # stage: deploy-prod # only: # refs: # - tags # changes: # - apps/engine/* # tags: # - amd64-docker # script: # - echo "create docker file under agent/deployment/ci" # when: manual ## ### Commit Linters and Changelog steps ## commit lint: image: node:18 extends: .distributed stage: lint tags: - amd64-docker script: - echo "${CI_MERGE_REQUEST_TITLE}" | npx commitlint rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'main' changelog: image: node:18 extends: .distributed stage: release tags: - amd64-docker script: - npx semantic-release only: - main