我有 centos 服务器,gitlab runner 正在处理它(不是在 docker 上,通过 cli 安装),我想在同一台服务器上部署我的存储库。
我有如下的 gitlab-ci 文件; 阶段部分工作正常,我正在将 docker 映像部署到 gitlab 中,但在部署阶段我想从存储库中获取它并进行补全。
任何建议或简单的方法?我糊涂了
stages:
- publish
- deploy
variables:
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
before_script:
- echo "$ID_RSA"
- echo "$CI_BUILD_TOKEN"
- echo "$CI_REGISTRY"
script:
- chmod og= $ID_RSA
- apk update && apk add openssh-client
- ssh -i $ID_RSA -o StrictHostKeyChecking=no -p 4422 $SERVER_USER@$SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
- ssh -i $ID_RSA -o StrictHostKeyChecking=no -p 4422 $SERVER_USER@$SERVER_IP "docker pull $TAG_COMMIT"
- ssh -i $ID_RSA -o StrictHostKeyChecking=no -p 4422 $SERVER_USER@$SERVER_IP "docker container rm -f frontend || true"
- ssh -i $ID_RSA -o StrictHostKeyChecking=no -p 4422 $SERVER_USER@$SERVER_IP "docker run -d -p 3000:3000 --name frontend $TAG_COMMIT"