Jenkins 将代码部署到远程服务器

15 min read

Publish Over SSH 插件的主要作用是通过 SSH 连接其他 Linux 机器,向远程主机发送文件和执行命令,官方文档

安装Publish Over SSH 插件

Manage Jenkins` -> Manage plugins -> Available -> 输入 Publish Over SSH

SSH Servers配置

Manage Jenkins -> Configure System 拉到最下面可以看到 Publish over SSH
各参数解释

  • Passphrase:如果私钥设置了密码就是私钥的密码,私钥没设置密码可以不填

  • Path to key:私钥的位置

  • Key:私钥的内容。如果此处填入了值,则以此处的值为准,会忽略掉Path to key的配置

  • SSH Servers
    

    服务器的配置

    • Name:名称(自定义)
    • Hostname:服务器地址
    • Username:用户名
    • Remote Directory:默认远程服务器的地址
      注意:在配置上述内容时,要首先在jenkins服务器上生成私钥,然后将公钥推送到服务器上。
      配置好后,点击 Test Configration 可以看到结果
      image

将Jenkins服务器的公钥复制到远程主机中,一般不用 root 用户,参考 linux 下开启 SSH,远程免密登录 #11

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

配置 build step

Execute shell脚本,对前端代码进行打包压缩具体代码如下:

# 删除原来的dist目录
rm -rf dist
npm i
npm run build
cd dist
tar -zcvf test.tar.gz *
# 再把打包文件移动到项目根目录下,方便传输
mv test.tar.gz ../
echo '打包完毕'

大坑警告 ,配置远程目录,这里设置的远程相对路径为/

/usr/share/nginx/yuqing

填写Exec command

# 将test.tar.gz包解压到指定的目录下
tar -zxvf /usr/share/nginx/yuqing/test.tar.gz -C '/usr/share/nginx/yuqing'
# 删除tar包
rm -rf /usr/share/nginx/yuqing/test.tar.gz

配置参数说明

  • Source files **/* 表示{projectName}这个 job 的工作目录下所有的文件和目录。
  • Remove prefix 该操作是针对上面的source files目录,会移除匹配的目录。通常留空。
  • Remote directory 大坑 该操作是基于设定的服务器目录进行
  • Exec command 远程服务器执行的命令。例如可以输出 service jenkins restart 或者 /home/xx. sh 均可。

注意Source files 指的是当前这个 job 的工作目录下的所有文件及目录