首先下载: https://www.jenkins.io

然后找到对应的centos  jekins 安装,安装前首先下载jdk。

>  rpm -ivh  jekins.rpm

>rpm -ql jekins

https://www.jenkins.io/zh/doc/book/installing/  安装文档

>java -jar jenkins.war --httpPort=9090    //如果不指定端口号则默认是8080

-Dhudson.util.ProcessTree.disable=true  // 由于jekins会默认在执行脚本后,又杀死所有的因自身创建的进程,因此如果阻止这种行为就需要在启动添加这个命令。

                                                                  或者在脚本中添加  BUILD_ID=DONTKILLME 

》http://127.0.0.1:8080/   

// 进入页面,初次会提示密码生成的位置让输入。

 cat /root/.jenkins/secrets/initialAdminPassword

  ----》 git对接

    首先在jekins所在机器上安装git  。

jekins 配置用户:

 

        创建用户: mananger-jekins -》  用户管理  -》 新建用户  即可。

         安装权限插件:authorize-project

        赋予权限: manager-jekins -》 Configure Global Security  -》Authentication -》Jenkins’ own user database 设置不允许用户注册

                            授权策略  Strategy -》 安全矩阵  在内部配置admin和一般用户的权限。(一般用户设置build  和  read权限,workspace工作区即可)


   》 yum install -y git

gitlib插件集成:

Manager-jekins -》 Manager Plugins -》 【可选插件】 -》gitlib(搜索框输入) -》勾选和gitlib相关选项,下载。安装完成后重启。

global tool configuration:  可安装设置 java ,maven(mvn 环境变量注意要配置) ,git , svn等信息。

应用和gitlib集成:

新建任务 -》 输入名称  -》 选择自由风格 -》 输入项目名

    源码管理:git -》Repository URL输入git代码地址资源,如果是http的,在【添加】中【Jekins】修改输入账号密码即可。ssh需要输入key值信息。

构建 -》 新建构建任务 -》 Invoke top-level Maven target  -》Goal: package -Dmaven.test.skip=true

Failed build in Jenkins -Maven build failed FATAL: Couldn’t find any executable in null

 1. 未在全局工具配置中设置环境变量,maven要设置环境变量。

发布部署插件:

      1 安装插件 .anager-jekins , manager-plugins, 选择【可选插件】   安装两个插件 Publish Over SSH (用于连接远端电脑)    Deploy to container  (用于发布应用)

      2. manager-jekins  ->  configure system   ->   Publish over SSH    设置要打包的环境地址。

      SSH Servers-配置目标IP地址和账号密码,及根路径,没有则用 "/"指向到根路径。不能不填。

     3. 在项目中选择 构建后动作  -》  Send build artifacts over SSH  -》 选择IP

     注意用【构建后动作】publish over ssh时,在【构建环境】中不要勾选以下两个选项。

     Send files or execute commands over SSH before the build starts Help for feature: Send files or execute commands over SSH before the build starts
     Send files or execute commands over SSH after the build runs

    

 

 加前缀环境变量是因为jekins会对自己启动的ssh命令,在运行完成后kill掉,防止kill掉应用而加的。(ProcessTreeKiller)

网上说法有以下4种,但是我这边的原因是start.sh脚本中的jar文件写的是相对路径,对于远端要执行的脚本,内部一定要用绝对路径,不然表面看着成功了,其实却没有。

1.JENKINS_NODE_COOKIE=dontkillme BUILD_ID=dontKillMe sh /opt/soft/scs-cn-api/start.sh ***-api.jar 8080

2. Global Configuration -》Environment variables:

全局属性设置:BUILD_ID=DONTKILLME

3. 脚本中带有export build_id

4. jenkins的启动命令中设置:  java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

参见文章: https://blog.csdn.net/u011781521/article/details/80210985

5. 在start.sh中添加daemonize工具(防止被kill掉的一种工具),具体自己搜索下。

在执行后还是不行,注意jekins的日志中是否有以下错误提示。

Exec exit status not zero. Status [2]

表示你的start.sh 脚本给的权限太少,导致jenkins无权限去启动。

最后就是start.sh 的简单的脚本,可以满足一般的jar文件操作:

注意一点因远端ssh执行,且应用名从外部传入,因此在查找pinid时,要剔除 start.sh命令这行。

#!bin/bash
echo $BUILD_ID
appname=${1}
port=${2}

JAVA_HOME=/opt/jdk1.8.0/bin
echo $JAVA_HOME
echo $appname
echo $port
pid=`ps -ef|grep -v grep|grep -v start.sh|grep ${appname}|awk '{print $2}'`
if [[ x$pid == x ]]
then
echo start--
else
echo stop--
kill -9 $pid
sleep 5
echo start--
fi
#nohup $JAVA_HOME/java  -jar $appname --server.port=$port > /dev/null 2>&1 &
nohup $JAVA_HOME/java  -jar /opt/soft/application/$appname --server.port=$port &
sleep 5
echo started....

 

 3. 视图  - LIST VIEW

 

 

 

 

       

 

 

 

 

   

 

 

posted on 2020-05-23 21:56  zhaoqiang1980  阅读(628)  评论(0编辑  收藏  举报