include: - project: 'sysadm-docker/ubuntu-sshclient' ref: 'master' file: 'gitlab-ci-template.yml' stages: - build - deploy - linking .common-build: &common-build-template stage: build image: golang:1.11.13 before_script: - export GOPATH=/go - mkdir -p /go/src/gitlab.loc/$CI_PROJECT_NAMESPACE - ln -s $CI_PROJECT_DIR /go/src/gitlab.loc/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME - cd /go/src/gitlab.loc/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME only: - tags build:nginx: <<: *common-build-template script: - cd xsollauid - go build -o ../nginx-server/xsollauid - cd .. - mv post-deploy.sh post-current.sh nginx-server artifacts: name: "$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-$CI_JOB_NAME" paths: - nginx-server when: on_success expire_in: 8h build:clickhouse: <<: *common-build-template script: - cd log-processor - go test - go build -o ../clickhouse-server/log-processor - cd ../users-params-processor - go build -o ../clickhouse-server/users-params-processor - cd ../metrika-processor - go test - go build -o ../clickhouse-server/metrika-processor # - cp GeoLite2-City.mmdb ../clickhouse-server/GeoLite2-City.mmdb - cd .. - mv post-deploy.sh post-current.sh clickhouse-server artifacts: name: "$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-$CI_JOB_NAME" paths: - clickhouse-server when: on_success expire_in: 8h build:js: <<: *common-build-template when: manual script: - mkdir js-to-cdn - mv frontend/js-metrika/watch.js js-to-cdn artifacts: name: "$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-$CI_JOB_NAME" paths: - js-to-cdn when: on_success expire_in: 8h .common_for_deploy_jobs: only: - /^v-.*/ - /^v\d+\.\d+\.\d(-[\w]+$|$)/ - /^stage-.*/ .gcp_jobs_common: tags: - devops when: on_success before_script: - | printenv ${GCP_SERVICE_ACCOUNT} > ~/.gcp_svc_account && chmod 400 ~/.gcp_svc_account gcloud auth activate-service-account \ --quiet \ --project 'hadoop-151909' \ --key-file ~/.gcp_svc_account after_script: - | [[ -f ~/.gcp_svc_account ]] && rm -f ~/.gcp_svc_account || true gcloud auth revoke --all --quiet &> /dev/null upload to gcs stage: extends: - .deploy_to - .gcp_jobs_common - .common_for_deploy_jobs stage: deploy variables: GCP_SERVICE_ACCOUNT: GCP_SERVICE_ACCOUNT_STAGE dependencies: - build:nginx needs: - build:nginx script: - gsutil -q cp -r nginx-server gs://${GCP_BUCKET_ARTIFACT_FOLDER_STAGE}/ upload to gcs prod: extends: - .deploy_to - .gcp_jobs_common stage: deploy variables: GCP_SERVICE_ACCOUNT: GCP_SERVICE_ACCOUNT_PROD dependencies: - build:nginx needs: - build:nginx script: - gsutil -q cp -r nginx-server gs://${GCP_BUCKET_ARTIFACT_FOLDER_PROD}/ update stage nginx mig: extends: - .deploy_to - .gcp_jobs_common - .common_for_deploy_jobs stage: linking variables: GCP_SERVICE_ACCOUNT: GCP_SERVICE_ACCOUNT_STAGE dependencies: - upload to gcs stage needs: - upload to gcs stage script: - gcloud compute instance-groups managed rolling-action replace gcp-web-minimetrica-stage --quiet --zone us-central1-a update prod nginx mig: extends: - .deploy_to - .gcp_jobs_common stage: linking variables: GCP_SERVICE_ACCOUNT: GCP_SERVICE_ACCOUNT_PROD dependencies: - upload to gcs prod needs: - upload to gcs prod script: - gcloud compute instance-groups managed rolling-action replace gcp-web-minimetrica-prod --quiet --zone us-central1-a deploy clickhouse to stage: extends: - .deploy stage - .common_for_deploy_jobs dependencies: - build:clickhouse when: on_success environment: on_stop: stop clickhouse on stage script: - /usr/local/bin/helper deploy clickhouse-server deploy clickhouse to prod: extends: - .deploy prod dependencies: - build:clickhouse when: on_success environment: on_stop: stop clickhouse on prod script: - /usr/local/bin/helper deploy clickhouse-server deploy to cdn: dependencies: [ 'build:js' ] extends: - .deploy prod - .common_for_deploy_jobs when: manual environment: on_stop: stop deploy on cdn script: - . /usr/local/bin/functions - do_make_package js-to-cdn - do_deploy stop deploy on cdn: extends: - .stop prod stop clickhouse on stage: extends: - .stop stage - .common_for_deploy_jobs stop clickhouse on prod: extends: - .stop prod current clickhouse on stage: extends: - .current stage - .common_for_deploy_jobs dependencies: - deploy clickhouse to stage current clickhouse on prod: extends: - .current prod dependencies: - deploy clickhouse to prod