Skip to content
Snippets Groups Projects
Commit b2ee96d5 authored by Veselin's avatar Veselin Committed by Zdravko Iliev
Browse files

feat: implement gitlab ci

parent 7cfb4f37
1 merge request!4feat: implement gitlab ci
Pipeline #61989 canceled with stages
in 58 seconds
# 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"'
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"'
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"'
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"'
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"'
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"'
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"'
when: manual
agent-test ocm-two:
stage: deploy-test
extends: .test-agent-ocm-two
rules:
- if: '$PIPELINE_TRIGGERED == "yes" && $APP == "agent"'
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"'
when: manual
agent-prod ocm-two:
stage: deploy-prod
extends: .prod-agent-ocm-two
rules:
- if: '$PIPELINE_TRIGGERED == "yes" && $APP == "agent"'
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:
extends: .distributed
stage: release
tags:
- amd64-docker
script:
- npx semantic-release
only:
- main
### Summary
<!-- Summarize the bug encountered concisely. -->
### Steps to reproduce
<!-- Describe how one can reproduce the issue - this is very important. Please use an ordered list. -->
### What is the current *bug* behavior?
<!-- Describe what actually happens. -->
### What is the expected *correct* behavior?
<!-- Describe what you should see instead. -->
### Relevant logs and/or screenshots
<!-- Paste any relevant logs - please use code blocks (```) to format console output, logs, and code
as it's tough to read otherwise. -->
### Possible fixes
<!-- If you can, link to the line of code that might be responsible for the problem. -->
/label ~"type::bug"
### Problem to solve
<!-- What is the user problem you are trying to solve with this issue? -->
### Proposal
<!-- Use this section to explain the feature and how it will work. It can be helpful to add technical details, design proposals, and links to related epics or issues. -->
## Description
[Provide a description of the changes in this merge request. What was the problem you were trying to solve? How did you solve it?]
## Related issues
[If there are any related issues, please mention them here with links.]
## Testing
[Describe any testing you've done on this code. What tests have you run, and what were the results?]
## Checklist
- [ ] I have updated the documentation (if necessary)
- [ ] I have added unit tests for new functionality (if applicable)
- [ ] My code follows the style guidelines of this project
- [ ] I have tested this code on my local machine before submitting this MR
## Reviewers
[Tag any reviewers that you want to review this merge request here.]
## Additional Notes
[Add any additional notes or comments you have about this merge request.]
{
"branches": ["main"],
"plugins": [
[
"@semantic-release/commit-analyzer", {
"preset": "conventionalcommits",
}
],
[
"@semantic-release/release-notes-generator", {
"preset": "conventionalcommits",
}
],
[
"@semantic-release/changelog",
{
"changelogTitle": "# Changelog\n\nAll notable changes to this project will be documented in this file. See\n[Conventional Commits](https://conventionalcommits.org) for commit guidelines."
}
],
[
"@semantic-release/git",
{
"message": "chore: Release ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
]
]
}
FROM nginx:alpine
EXPOSE 80
COPY ./dist .
\ No newline at end of file
module.exports = {extends: ['@commitlint/config-conventional']}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment