一个 GitLab CI/CD 的学习笔记
GitLab 自动化部署例子
步骤一:设置 SSH 无需密码登入服务器
在服务器上生成密钥
利用 ssh-keygen 命令来生成密钥。
此时在目录 ~/.ssh 目录下会有如下文件:
- authorized_keys
- id_rsa
- id_rsa.pub
- known_hosts
其中 id_rsa 是私钥,id_rsa.pub 是公钥。
将公钥加入 authorized_keys 里
执行命令: cat ~/.ssh/id_rsa.pub >> authorized_keys
创建 GitLab 变量
- 进入 GitLab 的 group 里。也可以在项目里配置。
- 切换 TAB 至
Settings=>CI/CD=>Variables。 - 创建变量
SSH_PRIVATE_KEY,并将id_rsa里的内容复制进去。
步骤二:拉取代码授权设置
设置 Deploy Token
- 进入 GitLab 的 group 里。也可以在项目里配置。
- 切换 TAB 至
Settings=>Repository=>Deploy Tokens。 - 添加一个
token用于后端部署。 - 最后得到
username和password(以页面展示为主)
注意:
- 这里需要设置过期时间,一旦过期了,需要重新生成。
- 权限请设置为只读(
read_repository)。
如何使用
- 地址拼接与替换,如:
https://username:password@gitlab.com/group/project.git - 首次克隆,可以直接
git clone https://username:password@gitlab.com/group/project.git - 已经克隆了,需要修改 remote url:
git remote set-url master https://username:password@gitlab.com/group/project.git
步骤三:项目里的设置
设置项目变量
- 进入 GitLab 项目里
- 切换 TAB 至
Settings=>Runners=>Shared runners,Enable for this project。 - 切换 TAB 至
Settings=>CI/CD=>Variables。 - 创建变量
DEPLOY_DIRECTORY,用于定位项目在服务器上的目录。
往项目代码里添加 .gitlab-ci.yml
image: ubuntu
stages:
- deploy
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 -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
master-deploy:
stage: deploy
script:
- ssh root@$SERVER_IP "cd $DEPLOY_DIRECTORY && git checkout master && git pull origin master"
only:
- master
代码来源:GitLab-examples > ssh-private-key
额外:关注自动化部署是否执行成功
进入到项目里的 CI/CD 中的 Pipelines 里查看执行情况。
来自我的GitHub:github.com/OverNaive/gitlab-ci
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: