Files
gitlab-ci/ci/.gitlab-ci.yml
2022-09-07 11:40:09 +07:00

99 lines
2.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# полный реферерс тут
# https://docs.gitlab.com/ee/ci/yaml/index.html
# а тут доступные переменные
# https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
image: docker:20.10.16
variables:
REGISTRY: hub.bildme.ru
GITLAB: git.bildme.ru
IMAGE_NAME: $REGISTRY/$CI_PROJECT_PATH:latest
RELEASE_NAME: go-site
VERSION: 0.0.5
PACKAGE_REGISTRY_URL: https://${GITLAB}/api/v4/projects/${CI_PROJECT_ID}/packages/generic/${RELEASE_NAME}/${VERSION}
stages:
- build
- push
- artifacts
- release
- deploy
.rules: &rules
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
build_main:
stage: build
image: golang:latest
<<: *rules
script:
- cd app
- CGO_ENABLED=0 GOOS=linux GO111MODULE=auto go build -a -ldflags="-X 'main.Version=v${VERSION}'" -installsuffix cgo -o go-site .
artifacts:
paths:
- app/go-site
tags:
- docker
push_image:
stage: push
<<: *rules
before_script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $REGISTRY
script:
- docker build -t $IMAGE_NAME .
- docker push $IMAGE_NAME
tags:
- docker
package:
stage: release
<<: *rules
before_script:
- apk add curl
script:
- FILE_NAME=${RELEASE_NAME}
- cd app
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${FILE_NAME} ${PACKAGE_REGISTRY_URL}/${FILE_NAME}'
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
<<: *rules
script:
- echo "Release ${RELEASE_NAME}"
release:
name: 'Release $VERSION'
description: 'Release $VERSION'
tag_name: '$VERSION'
ref: '$CI_COMMIT_SHA'
assets:
links:
- name: '${RELEASE_NAME}'
url: '${PACKAGE_REGISTRY_URL}/${RELEASE_NAME}'
deploy_prod:
stage: deploy
image: hub.realmanual.ru/pub/openssh-client:latest
<<: *rules
variables:
DOCKER_SERVER: 192.168.9.199
before_script:
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan ${DOCKER_SERVER} >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- ssh root@${DOCKER_SERVER} "docker rm -f main-go; docker pull hub.bildme.ru/firstgroup/go-site && docker run -d --rm --name main-go -p 3000:3000 hub.bildme.ru/firstgroup/go-site:latest"
environment:
name: production
url: http://${DOCKER_SERVER}:3000/
tags:
- docker