Добрый день! Возник вопрос по настройке 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: Ответ в комментариях к ответу