diff --git a/ci/.gitlab-ci.yml b/ci/.gitlab-ci.yml index e187e38..14ac171 100644 --- a/ci/.gitlab-ci.yml +++ b/ci/.gitlab-ci.yml @@ -10,16 +10,17 @@ variables: GITLAB: git.bildme.ru IMAGE_NAME: $REGISTRY/$CI_PROJECT_PATH:latest RELEASE_NAME: go-site - VERSION: 0.0.5 + VERSION: 0.0.7 PACKAGE_REGISTRY_URL: https://${GITLAB}/api/v4/projects/${CI_PROJECT_ID}/packages/generic/${RELEASE_NAME}/${VERSION} + DOCKER_SERVER: 192.168.9.199 stages: -- build - test +- build - push -- artifacts +- deploy-stage +- test-stage - release -- deploy .rules: &rules rules: @@ -61,6 +62,35 @@ push_image: tags: - docker +deploy_stage: + stage: deploy-stage + image: hub.realmanual.ru/pub/openssh-client:latest + <<: *rules + 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: stage + url: http://${DOCKER_SERVER}:3000/ + tags: + - docker + +test_stage: + stage: test-stage + image: alpine + <<: *rules + script: + - apk --no-cache add curl + - "[ $(curl -sw '%{http_code}' --connect-timeout 2 'http://${DOCKER_SERVER}:3000/health' -o /dev/null) -ne 200 ] && exit 0 || exit 1" + tags: + - docker + package: stage: release <<: *rules @@ -70,6 +100,8 @@ package: - FILE_NAME=${RELEASE_NAME} - cd app - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${FILE_NAME} ${PACKAGE_REGISTRY_URL}/${FILE_NAME}' + when: + manual release: stage: release @@ -86,13 +118,13 @@ release: links: - name: '${RELEASE_NAME}' url: '${PACKAGE_REGISTRY_URL}/${RELEASE_NAME}' + when: + manual deploy_prod: - stage: deploy + stage: release 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 - @@ -107,8 +139,8 @@ deploy_prod: url: http://${DOCKER_SERVER}:3000/ tags: - docker - # when: - # manual + when: + manual ### Что можно добавить ?