Skip to content
Snippets Groups Projects
.gitlab-ci.yml 4.02 KiB
workflow:
  rules:
    - if: >-
        $CI_COMMIT_BRANCH == "staging" || $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      when: always
    - when: never

variables:
  DOCKER_VERSION: '20.10.17'
  K8S_VERSION: '1.24'
  GOOGLE_CLOUD_SDK_IMAGE_VERSION: '400.0.0'
  K8S_NAMESPACE: 'todoapp-devops'
  CONTAINER_TAG: '${CI_REGISTRY_IMAGE}:${CI_PIPELINE_IID}-${CI_COMMIT_SHORT_SHA}'

stages:
  - test
  - build
  - release
  - deploy

.gke-initialization:
    before_script:
    - echo $BASE64_GOOGLE_CREDENTIALS | base64 -d > ~/service_account.json
    - gcloud auth activate-service-account --key-file ~/service_account.json
    - gcloud config set project ${GCP_PROJECT_ID}
    - gcloud config set compute/zone ${GCP_COMPUTE_REGION}
    - gcloud container clusters get-credentials ${GCP_PROJECT_ID}-gke

test-image:
  stage: test
  tags:
    - docker-privileged
  image: docker:${DOCKER_VERSION}
  services:
    - name: docker:${DOCKER_VERSION}-dind
  script:
    - docker build
      --tag "${CONTAINER_TAG}-test"
      --target=test
      "./"
  after_script:
    - docker image rm --force "${CONTAINER_TAG}-test"

build-image:
  stage: build
  needs:
    - 'test-image'
  tags:
    - docker-privileged
  image: docker:${DOCKER_VERSION}
  services:
    - name: docker:${DOCKER_VERSION}-dind
  before_script:
    - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
  script:
    - docker image build
      --tag "${CONTAINER_TAG}"
      "./app"
    # - docker image build
    #   --tag "${CONTAINER_TAG}-google-sdk"
    #   "./gcloud-image"
    - docker push "${CONTAINER_TAG}"
    # - docker push "${CONTAINER_TAG}-google-sdk"
  after_script:
    - docker image rm --force "${CONTAINER_TAG}"
    # - docker image rm --force "${CONTAINER_TAG}-google-sdk"

create-release_image:
  stage: release
  rules: