首先我们需要去配置一下插件
进入系统配置
在Server Groups Center中配置好自己的远程服务器账号密码和公网ip
在Publish over FTP下也配置好账号密码公网ip
注:这里Remote Directory下填写的是要传输到远程服务器的哪个目录下
修改完后我们进入全局工具配置,安装一下nodejs
接着我们需要添加一个全局凭证,用来连接远程服务器和jenkins
这里我们需要先进入docker中的jenkins容器
docker exec -it docker exec -it jenkinsci-blueocean /bin/bash
接着生成SSH keys
# 生成SSH keys
ssh-keygen -t rsa -b 4096
# 查看生成的SSH private key和public key
cd ~/.ssh
ls
id_rsa为SSH private key,id_rsa.pub为SSH public key
然后我们在远程服务器上配置SSH客户端的public key
将Jenkins服务器(SSH客户端)的SSH public key文件id_rsa.pub的内容追加到服务端对应用户的~/.ssh/authorized_keys文件末尾
如果~/.ssh/authorized_keys文件还不存在,则需要手工创建
确保~/.ssh文件权限为700,~/.ssh/authorized_keys文件权限为600,否则会导致SSH失败
设置文件权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
接着在jenkins的凭据配置上填写上private key
然后我们就可以在jenkins的项目配置中使用这个凭据了
中间我们去服务器上安装一下docker-compose,mac和windows上下载的docker桌面应用是自带docker-compose的,但是linux下载的docker不带docker-compose需要我们自行下载
- 安装
curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
- 授权
chmod +x /usr/local/bin/docker-compose
接着,我们在构建中点击增加构建步骤,选择Send files over FTP
注:这里需要提前在远程服务器上安装并配置好vsftpd,这里配置比较简单,可自行搜索一下linux配置vsftpd
注:这里Remote directory下填写的目录是基于我们在ftp配置下填写的目录后拼接的目录,如 我ftp配置了 /usr/local/etc ,这里我写了 server/ , 那我们的文件就会传输到 /usr/local/etc/server/ 目录下 , 由于我们远程服务器的vsftpd配置的用户权限是在root文件夹下,所以我们的文件会传输到 /root/usr/local/etc/server/
接着添加构建步骤,选择远程执行命令
shell脚本中 我们先进入传输完的目录下,接着docker pull拉取依赖镜像,然后docker-compose up --force-recreate -d
#!/bin/bash
cd /root/usr/local/etc/server
docker-compose pull
docker-compose up --force-recreate -d
这里我们第一次构建建议先这样写,等第一次构建完后,我们不需要每次重新拉一遍sql镜像,所以我们就可以把docker-compose pull改写成docker build . 每次只构建一下koa项目镜像即可,如下:
接着我们就可以构建我们的第一次cicd了,构建完第一次后,mysql初始化了,之后我们只需要每次把koa的镜像删除,并重新构建一个koa镜像,然后再docker-compose up --force-recreate -d即可
这里我们在构建中点击增加构建步骤,选择远程执行命令
选择配置好的要连接的服务器,写好要执行的shell命令,然后我们需要把这个构建步骤拖拽到构建步骤的最上方,先执行这个步骤
这样下来我们后端的cicd就做完了