zoukankan      html  css  js  c++  java
  • CentOS 7.2安装Jenkins自动构建Git项目

    1.环境

    本文使用VMWare虚拟机进行实验。

    最终实现目标,在Jenkins服务器上新建构建任务,从Git服务器上拉取master HEAD(不编译,仅演示),部署到"目标服务器",再执行一个脚本。

    Jenkins服务器

    • 2核CPU,4GB内存,20GB硬盘,IP:192.168.118.145(要求能上网,装插件)
    • CentOS 7.2最小安装(CentOS-7-x86_64-Minimal-1511.iso)

    Git远程库服务器

    • IP: 192.168.118.148
    • 已经存在一个git repo: hello-jenkins.git

    目标服务器

    • IP: 192.168.118.147

    2.需求

    • Jenkins 2.89
    • JRE 8u162
    • Git 1.8.3.1
    • Supervisor 3.1.4

    3.安装

    3.1安装软件

    yum -y install git supervisor

    3.2安装JRE

    官网下载Java SE Runtime Environment 8u162 Linux x64

    jre-8u162-linux-x64.tar

    tar zxvf jre-8u162-linux-x64.tar -C /opt
    export JAVA_HOME=/opt/jre1.8.0_162
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/toos.jar

    3.3安装Jenkins

    官网下载Jenkins,安装

    rpm -ivh jenkins-2.89.3-1.1.noarch.rpm

    得到war包  /usr/lib/jenkins/jenkins.war 

    其实到现在已经可以运行Jenkins服务了,但我们先来配置下开机自动启动(利用supervisor)

    3.4配置Jenkins开机自启

    为jenkins创建supervisor配置文件

    vi /etc/supervisord.d/jenkins.ini

    添加如下内容,蓝色加粗的是有用的,分号开头的已经被注释掉了,需要的话自己开、自己配

    [program:jenkins]
    ;command=/bin/cat
    command=/opt/jre1.8.0_162/bin/java -jar /usr/lib/jenkins/jenkins.war ; the program (relative uses PATH, can take args)
    ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
    ;numprocs=1                    ; number of processes copies to start (def 1)
    ;directory=/tmp                ; directory to cwd to before exec (def no cwd)
    ;umask=022                     ; umask for process (default None)
    ;priority=999                  ; the relative start priority (default 999)
    autostart=true                ; start at supervisord start (default: true)
    autorestart=true              ; retstart at unexpected quit (default: true)
    startsecs=10                  ; number of secs prog must stay running (def. 1)
    ;startretries=3                ; max # of serial start failures (default 3)
    ;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
    ;stopsignal=QUIT               ; signal used to kill process (default TERM)
    ;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
    ;user=chrism                   ; setuid to this UNIX account to run the program
    ;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
    ;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
    ;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
    ;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
    ;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
    ;stdout_events_enabled=false   ; emit events on stdout writes (default false)
    ;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
    ;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
    ;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
    ;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
    ;stderr_events_enabled=false   ; emit events on stderr writes (default false)
    ;environment=JAVA_HOME=/opt/jre1.8.0_162,CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/toos.jar           ; process environment additions (def no adds)

    添加supervisor开机自启,注意现在不要启动(start),一会儿我们手动启动

    systemctl enable supervisord

    4.运行

    java -jar /usr/lib/jenkins/jenkins.war

    初次运行Jenkins会开始安装、配置,注意控制台会输出admin的密码(类似下面蓝色粗体),密码要记住,新建用户后这密码就找不到了...

    *************************************************************
    *************************************************************
    *************************************************************
    
    Jenkins initial setup is required. An admin user has been created and a password generated.
    Please use the following password to proceed to installation:
    
    d4b41da7b70048c8b2a4eb5786100996
    
    This may also be found at: /root/.jenkins/secrets/initialAdminPassword
    
    *************************************************************
    *************************************************************
    *************************************************************

    默认Jenkins服务器端口为8080

    浏览器访问 http://192.168.118.145:8080/,把密码填进去,下一步

    会让你选择安装插件,其实安装建议的就行,但这里选择自己安装插件

    注意Git要勾选,

    另外勾选“Publish Over SSH”,部署的时候会用到

    然后确定开始下载安装插件,看网速...完了之后会进入账户设置,

    设置完就进入主界面了

    到这里就Jenkins安装好了,系统重启会自动启动Jenkins服务。

    5.部署demo

     最终实现目标,在Jenkins服务器上新建一个构建任务,这个任务从Git服务器上拉取master HEAD(不编译,仅演示),部署到"目标服务器",再执行其中一个脚本。

    5.1配置ssh key

    这个Key用于访问git、访问“目标服务器”

    在Jenkins服务器上,-C后面的注释随便写,交互shell中不用管,一路回车就行

    ssh-keygen -t rsa -C "jenkins@admin.com"

    生成的公钥文件/root/.ssh/id_rsa.pub、私钥文件/root/.ssh/id_rsa.pub

    为了ssh无密码访问(使用root用户),我们要把公钥注册到目标上

    在Git服务器上,把公钥内容复制填进去,保存。

    vi /root/.ssh/authorized_keys

    在目标服务器(见环境一节介绍)上,把公钥内容复制填进去,保存。

    vi /root/.ssh/authorized_keys

    5.2注册Jenkins SSH Server

    主界面---系统管理---系统设置---Publish over SSH(在最下面)

    Path to key 填私钥文件路径(公钥刚才已经传到目标服务器上了)

    SSH Server,Name起一个名字,hostname填“目标服务器”IP,root登录,Remote Directory是部署的目录(/表示部署到根目录下),不懂的最右边有个问号可以点,有帮助。

    5.3新建一个Job

    填一个名字,下面选第一项”构建一个自由风格的软件项目“,点确定。

    源码管理一栏,添git路径(就是一般git clone XXX中的XXX)

    Credentials点右边Add,配置秘钥访问git

    Kind选 SSH Username with private key

    Username填root

    Private Key选 From the Jenkins master ~/.ssh (私钥路径/root/.ssh/id_rsa,公钥刚才已经传到git服务器上了)

    Description随便填,便于自己区分

    填完之后回到之前的页面,选择使用这个凭证:root(sshKeyToGit)

    构建后操作,选刚才添加的SSH Server

    Source files填**,表示所有文件

    Remote directory填first-ci,刚才配了部署目录是/,综合得到部署路径 /first-ci

    Exec command填的是文件传输完成后执行的命令,这里执行的是git库中一个脚本

    保存,进入这个界面,点“立即构建”,左下区域是构建情况(图上是构建了4次,蓝色表示成功,黄色表示出了点问题)

    点“#4”,点“Console Output”,可以查看整个构建过程的输出,

    一般构建出错也是在这里看错在哪了,比如下面这图#3

    5.4验证部署结果

    在目标服务器上,

    可以看到部署的文件(也是部署后执行的脚本)

    以及执行脚本的结果(可见登录后的目录为用户home目录)

    TODO:

    Jenkins用户管理....

  • 相关阅读:
    数据库的优化
    Java 10
    sleep()和yield()的区别
    mvc框架实现的流程,值得收藏
    MyEclipse项目出现红色!的原因
    The requested resource is not available的解决方案-转载博文
    web.xml详解(web-app_2_3.dtd)规范顺序
    EditText小写字母自动转换成大写(注:设置之后只能显示大写字母)
    Android GridView属性意义集合(转)
    Theme.AppCompat.Light无法找到问题(转)
  • 原文地址:https://www.cnblogs.com/nidey/p/8387597.html
Copyright © 2011-2022 走看看