jenkins+gitlab实现流水线自动部署
前提步骤 : 熟悉项目的部署步骤
一、配置jenkins agent节点
由于jenkins流水线和项目部署的服务器不是同一台,我们指定jenkins默认节点为master,项目部署在测试机上为alpha
以下以测试机用户www举例,测试机ip124.71.196.137:22
-
确保master和alpha之间可以互相通信
-
maste服务器r执行以下shell命令,确保master能通过ssh登录alpha
#登录master服务器,生成秘钥 生成默认保存在 /root/.ssh/id_rsa 记住这个位置
ssh-keygen
#将秘钥发送到alpha 此过程会输入alpha密码
ssh-copy-id www@124.71.196.137:22
#执行ssh命令进行登录
ssh www@124.71.196.137:22
-
在jenkins上配置agent节点
节点管理 新增节点即可,我这里是已经创建了
配置从节点
凭据如图所示
参考Jenkins 集群搭建 - 晓晨Master - 博客园 (cnblogs.com)
高级 需添加java路径 alpha节点需安装java
前端部署需npm命令
将PATH路径添加道节点属性中的环境变量
二、添加流水线
这种方式需要在项目根目录创建Jenkinsfile文件,将脚本写在文件内
这种则是直接将语法写在Job内部
Jenkinsfile都是根据项目构建步骤来设计的 stage('步骤名称')
下面具体说明Jenkinsfile语法
pipeline {
agent {
node {
label 'alpha'
}
}
//agent none
environment {
SCANNER_HOME = tool 'SonarQube Scanner'
}
//构建触发器,Jenkins自动构建条件
//triggers{
//每3分钟判断一次代码是否有变化
//pollSCM('H/3 * * * *')
//}
stages {
stage('静态代码检查') {
steps {
sh'''
echo 'build success'
'''
}
}
stage('更新数据库') {
steps {
sh'''
. //home/www/test.sh
'''
}
}
stage('拉取代码') {
steps {
sh '''cd /web/www/backend/alpha
sudo -S git pull << EOF
www的密码
EOF'''
}
}
stage('清除缓存') {
steps {
sh '''
. //web/www/backend/alpha/test.sh
'''
}
}
}
}
不必纠结 脚本是怎么写的 pipeline流水线语法可以自动生成
前端项目使用git pull
git init #初始化
git remote add origin http://gitlab.pis360.com/xiao/pis-360-front-fork.git# 添加远程仓库
git remote -v #查看远程仓库
git config --global credential.helper store # http设置一次输入密码后续pull不再输入密码
立即构建即可,自动构建或定时构建 看需求
每一个阶段都有日志信息,某个阶段失败后续将无法执行
具体看报错日志即可
目前遇到的坑
1.
前端项目使用 pipeline script from SCM突然拉不下代码 找不到仓库地址 ,网上找了原因未解决
我的解决办法是 直接pipeline script 正常使用
2、遇到最多的是npm node或java环境未找到 明明在服务器装了这些
解决办法: 为上述路径建立到/usr/bin/xx的软链接即可
如:
which node
sudo ln -s /usr/local/node/node-v16.19.0/bin/node /usr/bin/node
3、jenkins构建java项目老是启动后就立刻杀死
这跟pipeline机制有关 构建完成后jenkins会自动杀死所有启动的服务 保障安全 (大概是这个意思)
要解决的话加上 withEnv(['JENKINS_NODE_COOKIE=dontkillme']) 即可