Indermove
@Indermove
C#/.NET back-end разработчик

Как настроить CI/CD в gitlab для go проекта?

Добрый день! Возник вопрос по настройке CI/CD на удаленный сервер. В этом я новичок, поэтому вопрос наверное тривиальный, но все же по нему не удалось найти адекватной информации.

Есть сервер на VDS с CentOS 7_x64
На нем крутится web-приложение написанное на Go. Как сделать так чтобы гитлаб после билда доставлял на сервер новую версию и запускал её? Вот мой .gitlab-ci.yml:

image: golang:latest

variables:
  REPO_NAME: $REPO_NAME

before_script:
  - go get github.com/gorilla/mux
  - go get github.com/gorilla/websocket
  - mkdir -p $GOPATH/src/$(dirname $REPO_NAME)
  - echo $CI_PROJECT_DIR
  - echo $GOPATH
  - ln -svf $CI_PROJECT_DIR $GOPATH/src/$REPO_NAME
  - cd $CI_PROJECT_DIR/src
  - ls

stages:
    - build
    - deploy

compile:
    stage: build
    script:
      - go build -race -ldflags "-extldflags '-static'" -o $CI_PROJECT_DIR/mybinary
    artifacts:
      paths:
        - mybinary

deploy_staging:
  stage: deploy
  environment:
    name: Staging
    url: $SEVER_ADDRESS
  before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - mkdir -p ~/.ssh
  - eval $(ssh-agent -s)
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
  script:
  - ssh-add <(echo "$USER_PASS")
  - ssh -o StrictHostKeyChecking=no $USERNAME@"$SEVER_ADDRESS" 'rm -rf /var/www/html/*'


Ломается на вот этом этапе:
$ [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
$ ssh-add <(echo "$USER_PASS")
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1


UPD: Ответ в комментариях к ответу
  • Вопрос задан
  • 6611 просмотров
Решения вопроса 2
@spbislanders
Создаю свое веб приложение, девелопер
gitlab должен скачать ваш проект, потом выкинуть по ssh на ваш сервер, ниже скину мой конфиг, который даёт доступ гитлабу к репозиториям организации. Помимо всего, вам нужно добавить ssh ключ, зайти сюда https://gitlab.com/orgname/reponame/settings/ci_cd, сделать xclip -sel clip < ~/.ssh/id_rsa.pub и подсунуть его гитлабу на той самой странице в переменные скопированный ключ.
указать переменную SSH_PRIVATE_KEY
5b75889c50c59797207896.png
Всё.
before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
Ответ написан
Indermove
@Indermove Автор вопроса
C#/.NET back-end разработчик
По итогу мытарств написал статью на хабре с более-менее подробной инструкцией
https://habr.com/post/421087/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы