我这边的流程是这样的: (服务器 centos 7.6)
1. jenkins从gitlab上将代码拉到本地,
2. 在本地打包之后发送到其他服务器上。
使用jenkins将代码包拷贝到其他服务器上可以使用jenkins提供的插件(自行百度)。
我这里使用了scp将本地的软件包拷贝到其他服务器上。
记录一下踩的坑。
yum -y install sshpass
使用sshpass,不输入密码。
# jenkins中脚本中关于scp的shell如下:
sshpass -p 'abc@123!!' scp -r $sda1_client_hard_jar sda1@172.16.100.111:$remote_deploy_dir/;
# 构建报错信息如下:
sda1@172.16.100.111:/home/sda1/app/
Host key verification failed.
Build step 'Execute shell' marked build as failure
排障历程:
新建用户:
useradd bboo
切换用户:
su bboo
执行sshpass + scp的命令:
sshpass -p 'abc@123!!' scp -r /home/bboo/abc sda1@172.16.100.111:/home/sda1/
# 错误信息如下:
Host key verification failed.
# 尝试是否可以远程登陆:
ssh sda1@172.16.100.111 # 可以登陆
再次,执行sshpass + scp的命令成功。
需要先建立一次ssh链接,然后才可以使用sshpass。
以下是解决jinkins无法使用sshpass + scp的办法:
jenkins执行脚本使用的是jenkins这个用户。
切换到jenkin用户发现无法切换。
su jenkins
查看jenkins用户,发现没有bash的执行权限。
cat /etc/passwd
jenkins:x:998:994:Jenkins Automation Server:/var/lib/jenkins:/bin/false
赋予bash的执行权限。
vim /etc/passwd
jenkins:x:998:994:Jenkins Automation Server:/var/lib/jenkins:/bin/bash
切换到jenkins用户。
su jenkins
链接远程服务器的sda1用户
ssh sda1@172.16.100.111
赋予bash的sshpass执行权限。
vim /etc/passwd
jenkins:x:998:994:Jenkins Automation Server:/var/lib/jenkins:/bin/sshpass
再次在jenkins页面构建服务,成功。
|