gitlabci
This is an old revision of the document!
Table of Contents
GitLab CI
.gitlab-ci.yml
stages:
- deployless-test
- build
- deploy-to-dev
- deploy-to-staging
- staging-test
- deploy-to-prod
- deploy-to-prodint
deployless-test:
stage: deployless-test
trigger:
include: .gitlab-ci-test-deployless.yml
strategy: depend
build:
stage: build
trigger:
include: .gitlab-ci-build.yml
strategy: depend
# deploy to dev from dev branch or any other except master (parallel deployments)
deploy-to-dev:
stage: deploy-to-dev
rules:
- if: $CI_COMMIT_BRANCH == "dev"
when: on_success
- if: $CI_COMMIT_BRANCH != "master"
when: on_success
variables:
ENVIRONMENT: dev
trigger:
include: .gitlab-ci-deployto.yml
strategy: depend
## if MASTER
deploy-to-staging:
stage: deploy-to-staging
rules:
- if: $CI_COMMIT_BRANCH == "master"
variables:
ENVIRONMENT: staging
trigger:
include: .gitlab-ci-deployto.yml
strategy: depend
staging-test:
stage: staging-test
rules:
- if: $CI_COMMIT_BRANCH == "master"
trigger:
include: .gitlab-ci-test-ofdeployment.yml
strategy: depend
deploy-to-prod:
stage: deploy-to-prod
rules:
- if: $CI_COMMIT_BRANCH == "master"
variables:
ENVIRONMENT: prod
trigger:
include: .gitlab-ci-deployto.yml
strategy: depend
deploy-to-prodint:
stage: deploy-to-prodint
rules:
- if: $CI_COMMIT_BRANCH == "master"
variables:
ENVIRONMENT: prodint
trigger:
include: .gitlab-ci-deployto.yml
strategy: depend
.gitlab-ci-test-deployless.yml
# no reason to run on launch-hub runner. Only required, when assuming IAM roles into the account.
static_code_analysis:
script:
- echo "This job tests the code statically"
unit_test:
script:
- echo "This job tests something, but takes more time than test-job1."
- echo "After the echo commands complete, it runs the sleep command for 3 seconds"
- echo "which simulates a test that runs 3 seconds longer than test-job1"
- sleep 3
</code>
.gitlab-ci-build.yml
<code>
# no reason to run on launch-hub runner. Only required, when assuming IAM roles into the account.
build-job:
image:
name: openjdk:11-jdk-oracle
script:
- echo "Hello, $GITLAB_USER_LOGIN! Build here!"
- java --version
</code>
.gitlab-ci-deployto.yml
<code>
# unfortunately "tags" keyword is not supported on jobs with "trigger"
# https://docs.gitlab.com/ee/ci/pipelines/multi_project_pipelines.html#define-multi-project-pipelines-in-your-gitlab-ciyml-file
# hence runner-tags are defined here
# UNCOMMENT - to run on a launch-hub runner
# .runner-launchhub-tags: &runner-launchub
# tags:
# - LAUNCH-HUB
# deployless_test
deploy:
# <<: *runner-launchub # runner tag
script:
- echo "This job deploys something from the '$CI_COMMIT_BRANCH' branch to environment '$ENVIRONMENT'."
- echo "Pass the branch '$CI_COMMIT_BRANCH' to the deployment code here, to prefix all resources with '$CI_COMMIT_BRANCH'"
</code>
.gitlab-ci-test-ofdeployment.yml
<code>
# unfortunately "tags" keyword is not supported on jobs with "trigger"
# https://docs.gitlab.com/ee/ci/pipelines/multi_project_pipelines.html#define-multi-project-pipelines-in-your-gitlab-ciyml-file
# hence runner-tags are defined here
# UNCOMMENT - to run on a launch-hub runner
# .runner-launchhub-tags: &runner-launchub
# tags:
# - LAUNCH-HUB
staging-test-api:
# <<: *runner-launchub # runner tag
script:
- echo "This job does API tests on STAGE."
staging-test-ui:
# <<: *runner-launchub # runner tag
script:
- echo "This job does UI tests on STAGE."
disable job
Start the job name with a dot (.) and it is not processed by GitLab CI/CD
.terraform_image: &terraform_image
name: hashicorp/terraform:light
entrypoint:
- '/usr/bin/env'
- 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
gitlabci.1663855272.txt.gz · Last modified: by skipidar
