作者:用户da7lbtmrer | 来源:互联网 | 2023-02-01 12:02
我试图谷歌它几个小时,但找不到它.我有Java/Spring应用程序(如果重要,则为+ MySQL),我希望为此创建CI.
我知道该怎么做以及如何:
我知道我必须将我的Git回购移动到Gitlab.
Push to repo将触发CI脚本.
Gitlab将我的docker镜像构建到Gitlab Docker Registry中.
问题是:
我需要做些什么来强制我的VPS上的docker compose从Gitlab中提取新图像并重启服务器?我知道(纠正我,如果我错了)在我的VPS上我应该docker-compose pull && docker-compose up
在我的app文件夹中运行,但我真的不知道如何使用Gitlab自动生成它?
1> Vitaly Velik..:
我需要做些什么来强制我的VPS上的docker compose从Gitlab中提取新图像并重启服务器?
@ m-uu,你根本不需要重启服务器,只docker-compose up
需要拉新图像并重新启动服务
我知道(纠正我,如果我错了)在我的VPS上我应该运行docker-compose pull && docker-compose up在我的app文件夹中,但我真的不知道如何使用Gitlab自动制作它?
是的,你是正确的方式.看看我的Gitlab CI配置文件,我认为为Java项目更改它并不困难.只需提供有关如何构建,推送到注册表以及将映像部署到服务器的建议.您需要做的一件事是生成SSH密钥并将公共服务器推送到服务器(.ssh/authorized_keys)和专用于GITLAB管道密钥变量(https://docs.gitlab.com/ee/ci/variables/#secret-variables)
cache:
key: "cache"
paths:
- junte-api
stages:
- build
- build_image
- deploy
build:
image: golang:1.7
stage: build
script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" > ~/key && chmod 600 ~/key
- ssh-add ~/key
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- go get -u github.com/kardianos/govendor
- mkdir -p $GOPATH/src/github.com/junte/junte-api
- mv * $GOPATH/src/github.com/junte/junte-api
- cd $GOPATH/src/github.com/junte/junte-api
- govendor sync
- go build -o junte-api
- cd -
- cp $GOPATH/src/github.com/junte/junte-api .
build_image:
image: docker:latest
stage: build_image
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE .
- docker push $CI_REGISTRY_IMAGE
deploy-dev:
stage: deploy
image: junte/ssh-agent
variables:
# should be set up at Gitlab CI env vars
SSH_PRIVATE_KEY: $SSH_DEV_PRIVATE_KEY
script:
# copy docker-compose yml to server
- scp docker-compose.dev.yml root@SERVER_IP:/home/junte/junte-api/
# login to gitlab registry
- ssh root@SERVER_IP docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
# then we cd to folder with docker-compose, run docker-compose pull to update images, and run services with `docker-compose up -d`
- ssh root@SERVER_IP "cd /home/junte/junte-api/ && docker-compose -f docker-compose.dev.yml pull api-dev && HOME=/home/dev docker-compose -f docker-compose.dev.yml up -d"
environment:
name: dev
only:
- dev
你还需要支持Docker的Gitlab runner.请问如何在Gitlab doc中安装它.
关于阶段:
build
- 只需改变它就可以构建你需要的东西
build_image
- 非常简单,只需登录gitlab注册表,构建新映像并将其推送到注册表.看一下cache
,它需要在各个阶段之间缓存文件,对你来说可能有所不同.
deploy-dev
- 那部分更多关于你的要求.这里前6个命令只安装ssh并创建私钥文件以访问您的VPS.只需将其复制并将您的SSH_PRIVATE_KEY添加到Gitlab UI中的秘密变量即可.最后3个SSH命令对您来说更有趣.