Jenkins 持续集成

1. Jenkins

  A. Jenkins配置文件:/etc/sysconfig/jenkins,可以更换端口和用户级别;

  B. Jenkins核心目录:/var/lib/jenkins

    workspace是工作目录(源代码存放位置);

    jobs是保存项目在jenkins上的配置、日志和构建结果,该目录文件大小随着构建次数逐渐变大,所以空间不足记得定时清理。

  C. 常用变量:

    WORKSPACE:当前job构建目录的绝对路径;

    JOB_NAME:此项目的版本名称;

    JOB_BASE_NAME:此项目的短名称,剥离了文件夹路径。

2. 通用插件

  A. Localization: Chinese (Simplified):Jenkins简体中文语言包;

  B. Folders Plugin:支持使用目录管理项目,目录支持嵌套;

  C. Maven Integration plugin:支持创建Maven的项目;

  D. Rebuilder:支持构建执行上一次的构建过程;

  E. Job Configuration History Plugin:查看历史的构建配置和恢复;

  F. Role-based Authorization Strategy:基于角色的的用户权限控制;

  G. Git plugin:支持使用Github、GitLab、Gerrit等系统管理代码仓库;

  H. Git Parameter Plug-In:构建过程添加git参数,可以支持需要构建的分支;

  I. Credentials Binding Plugin:凭证管理,如Git;

  J. NodeJS Plugin:前端(Vue)依赖NodeJs包;

  K. Extended Choice Parmeter plugin:添加参数多选框;

  L. Publish Over FTP:FTP文件上传;

  M. Pipeline:流水线构建,将多个项目并行变成串行执行,替代手动操作。

3. 权限控制:可参考:jenkins 权限控制插件 Role-based Authorization Strategy

4. 凭证配置(Manage Credentials)

  A. 凭证配置是管理账号密码等,例如Git使用;

  B. 入口截图

 

 

   C. 添加、修改和删除凭证

 5. 全局工具配置(Global Tool Configuration)

  A. 主要配置一些使用到的构建工具,如:JDK、Maven和Git;

  B. 入口截图

   C. JDK配置

 

   D. Maven配置

 

  E. Git

6. Managed Files高级操作:可参考:jenkins进阶操作Managed Files

7. 项目配置

  A. 入口截图

  B. General配置

  A. Discard old builds:该选项可以配置保持构建的天数或者保持构建的最大个数,默认值为不勾选365天,常用在删除旧的构建记录来释放磁盘空间;

  B. Do not allow concurrent builds:勾选表示不能并发构建,然后并发后者的任务处于pending状态;

  C. This project is parameterized:项目构建中运用参数,名称是变量名,使用方式为${名称};

    Boolean Parameter:单选框

    Choice Parameter:下拉框,只能选择一个;

    Git Parameter:自动获取当前所有远程分支并提供选择,默认不安装,需要自行安装插件;

    String Parameter:字符串参数

       Extended Choice Parmeter:

  D.  Git代码

   E. 选择指定的目录

 

   F. 指定pom.xml

  G. 若构建git项目报 error:index-pack died of signal 15,可以更改clone项目时默认时间10min

          

  H. SpringBoot项目构建后执行启动脚本

     web-admin.sh启动脚本

#!/bin/bash
PROJECT_PACKAGE=web-admin-0.0.1-SNAPSHOT.jar
PATH_NAME=test/web-admin/web-admin
# 删除文件
rm -rf /project/web/jar/$PROJECT_PACKAGE
# 拷贝文件
cp /var/lib/jenkins/workspace/$PATH_NAME/target/$PROJECT_PACKAGE /project/web/jar/
# 切换路径
cd /project/web/jar/

pid=`ps -ef | grep $PROJECT_PACKAGE | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   # 杀死存在进程
   kill -9 $pid
fi

# 避免项目启动之后被Jenkins杀掉
BUILD_ID=dontKillMe
# 执行
nohup java -jar $PROJECT_PACKAGE --spring.profiles.active=$1 >> /project/web/log/web-admin.log 2>&1 &
# echo 命令用于向窗口输出文本
echo "web-admin项目启动成功!"

 https://www.cnblogs.com/keeptesting/p/10992104.html

  安装yarn:yum install -y yarn;

 

 

  6. 问题

    问题1:jenkins跳过shell执行错误;

      解决办法:添加#!/bin/sh打破默认的执行;

    问题2:包上传服务器未成功,报ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]];

      解决办法:路径不对引起的,我这边对于相同脚本,有些服务器能上传,有些不行,所以推测是SSH Server问题,果然Remote Directory缺少目录/。

    问题3:前端包构建时报error An unexpected error occurred: "https://registry.yarnpkg.com/vue3-puzzle-vcode: ETIMEDOUT;

      解决办法:把资源地址设置为npm淘宝源:npm config set registry https://registry.npm.taobao.org、npm config set disturl https://npm.taobao.org/dist。

    问题4:构建Gradle项目时报Expiring Daemon because JVM heap space is exhausted;

      解决办法:jvm 默认可分配的堆内存不够,在gradle文件里修改DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'参数。

              问题5:布尔类型的取值报错java.lang.NoSuchMethodError: No such DSL method '$' found among steps;

      解决办法:if (${IS_FTP})变为if ("${IS_FTP}" == "true")。

    问题5:前端包构建时报error An unexpected error occurred: "https://registry.npm.taobao.org/vue3-puzzle-vcode: certificate has expired

       解决办法:取消ssl验证:yarn|npm config set strict-ssl false,执行yarn|npm cache clean --force。

 

可参考:Linux上搭建Jenkins

    Jenkins导致磁盘空间爆满清理

    Jenkins自动化部署nodejs项目

posted @ 2020-12-25 20:58  如幻行云  阅读(198)  评论(0编辑  收藏  举报