VA
Size: a a a
VA
VO
VA
AP
NK
𝕄👓
𝕄👓
D
DK
DK
D
AS
DK
DK
AS
AS
AS
DK
DK
AG
sudo adduser deployerДалее под юзером
sudo usermod -aG docker deployer
deployerсгенерировал ключ с помощью
ssh-keygen -b 4096Добавил его в
authorized_keys:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keysКопирую ключ из
~/.ssh/id_rsaпод юзером
deployerв формате:
-----BEGIN RSA PRIVATE KEY-----В гитлабе в разеде
...
-----END RSA PRIVATE KEY-----
Variablesсоздаю
ID_RSAс типом
File. Из
Flagsотмечаю
Protect variable.
Publishпроходит отлично, а при деплое ошибка:
$ ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"Мой
Warning: Permanently added '[MASKED]' (ECDSA) to the list of known hosts.
Load key "/builds/....../.......tmp/ID_RSA": invalid format
Permission denied, please try again.
Permission denied, please try again.
[MASKED]@[MASKED]: Permission denied (publickey,password).
Cleaning up file based variables 00:00
ERROR: Job failed: exit code 255
.gitlab-ci.yml:
stages:В чём может быть проблема?
- publish
- deploy
variables:
DOCKER_TLS_CERTDIR: ""
TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA
publish:
image: docker:latest
stage: publish
services:
- docker:dind
script:
- docker build -t $TAG_COMMIT -t $TAG_LATEST .
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
- docker push $TAG_COMMIT
- docker push $TAG_LATEST
deploy:
image: alpine:latest
stage: deploy
tags:
- deployment
script:
- chmod og= $ID_RSA
- apk update && apk add openssh-client
- ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
- ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker pull $TAG_COMMIT"
- ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker container rm -f my-app || true"
- ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker run -d -p 80:80 --name my-app $TAG_COMMIT"
environment:
name: production
url: http://......
only:
- master