一、获取gitlab宿主机的秘钥
1、登录部署gitlab的宿主机(本次使用阿里云ecs)

2、cd到root目录下的.ssh/

3、查看并获取id_rsa中的秘钥

二、gitlab中添加宿主机的秘钥
1、使用管理登录gitlab仓库

2、点击左上角菜单进入管理员角色

3、进入管理员之后点击设置菜单进入CICD

4、展开变量设置,将宿主机的秘钥写入(键-值)
添加变量,键:SSH_PRIVATE_KEY 值:宿主机秘钥



三、配置.gitlab-ci.yml
image: node:14.17.1
stages: # 分段
- install
cache: # 缓存
paths:
- node_modules
- build
install-job:
tags:
- default
stage: install
before_script:
- mkdir -p /mydata/nginx/html/sd/school
- chmod 700 /mydata/nginx/html/sd/school
- 'which ssh-agent || ( yum update -y && yum install openssh-client git -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r'| ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan 37.92.32.200 >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- npm install
- npm run build:prod #打包指令本文package.json文件scripts配置的是build:prod,执行该指令会打包生成dist目录
- cp -rf ./dist/* /mydata/nginx/html/sd/school #将本地开发主机上的dist文件同步到远程nginx服务器的对应目录下
- scp -r ./dist/* root@37.92.32.200:/mydata/nginx/html/sd/school
only:
- master

四、配置gitlab-runner和目标主机互信
1、登录docker部署的gitlab-runner服务

2、查看root下的.ssh中的公钥

3、将gitlab-runner中的公钥添加到目标主机的authorized_keys中


五、上传代码值gitlab仓库,自动执行cicd部署至目标服务器
