jenkins+gitlab实现流水线自动部署

 

前提步骤 : 熟悉项目的部署步骤

一、配置jenkins agent节点

 

由于jenkins流水线和项目部署的服务器不是同一台,我们指定jenkins默认节点为master,项目部署在测试机上为alpha

以下以测试机用户www举例,测试机ip124.71.196.137:22

  1. 确保master和alpha之间可以互相通信

  2. 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

 

  1. 在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']) 即可

 

 

 

 

 
posted @ 2022-08-08 14:42  時窥  阅读(1431)  评论(0)    收藏  举报