Skip to content

Instantly share code, notes, and snippets.

@ahmadarif
Created October 31, 2020 02:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ahmadarif/1d95a3b8d8e0019674fb32ec017eb47c to your computer and use it in GitHub Desktop.
Save ahmadarif/1d95a3b8d8e0019674fb32ec017eb47c to your computer and use it in GitHub Desktop.
Gitlab CI/CD for Rancher
stages:
- build
- deploy
Build:
stage: build
image: docker:19.03.12
services:
- docker:19.03.12-dind
tags:
- k8s
variables:
IMAGE_TAG: registry.domain.com/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG
IMAGE_TAG_LATEST: registry.domain.com/$CI_PROJECT_PATH:latest
CI_JOB_TIMESTAMP: $(date --utc -Iseconds)
before_script:
- echo "127.0.0.1 k8s.domain.com" | tee -a /etc/hosts >/dev/null
- echo "127.0.0.1 registry.domain.com" | tee -a /etc/hosts >/dev/null
script:
- docker login registry.domain.com -u testuser -p testpassword
- docker build -t $IMAGE_TAG .
- docker push $IMAGE_TAG
- ([ "${CI_COMMIT_REF_NAME}" == "master" ] && docker build -t $IMAGE_TAG_LATEST .) || echo "Not latest build"
- ([ "${CI_COMMIT_REF_NAME}" == "master" ] && docker push $IMAGE_TAG_LATEST) || echo "Not latest build"
Deploy:
stage: deploy
image: ahmadarif/rancher-cli-k8s
only:
- develop
- master
variables:
IMAGE_TAG: registry.domain.com/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG
IMAGE_TAG_LATEST: registry.domain.com/$CI_PROJECT_PATH:latest
CI_JOB_TIMESTAMP: $(date --utc -Iseconds)
K8S_ENDPOINT: https://k8s.domain.com
K8S_ACCESS_KEY:
K8S_SECRET_KEY:
K8S_PROJECT_ID:
K8S_NAMESPACE:
K8S_WORKLOAD:
before_script:
- echo "127.0.0.1 k8s.domain.com" | tee -a /etc/hosts >/dev/null
- export CI_JOB_TIMESTAMP=$(date --utc -Iseconds)
script:
- mkdir ~/.rancher
- echo "{\"Servers\":{\"rancherDefault\":{\"accessKey\":\"$K8S_ACCESS_KEY\",\"secretKey\":\"$K8S_SECRET_KEY\",\"tokenKey\":\"$K8S_ACCESS_KEY:$K8S_SECRET_KEY\",\"url\":\"$K8S_ENDPOINT\",\"project\":\"$K8S_PROJECT_ID\",\"cacert\":\"\"}},\"CurrentServer\":\"rancherDefault\"}" > ~/.rancher/cli2.json
- rancher kubectl --insecure-skip-tls-verify --namespace=$K8S_NAMESPACE patch deployment $K8S_WORKLOAD -p "{\"spec\":{\"template\":{\"spec\":{\"containers\":[{\"name\":\"intra-api\",\"image\":\"$IMAGE_TAG\",\"env\":[{\"name\":\"FORCE_RESTART_AT\",\"value\":\"$CI_JOB_TIMESTAMP\"}]}]}}}}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment