jenkins_2

 

 

2)编写发布脚本

我们实现将从Git拉到的代码打包,然后发布到node1/data/web目录下。编辑我们的Job,在构建处输入如下代码

 

构建执行成功后:

 

 

 

 

我们在Jenkins的工作区my-freestyle目录中生成web-11.tar.gz包,并且已经传送到了node1要求的目录下。

在这里我们作以下两点解释:1、构建过程中命令执行的当前目录为:Jenkins主目录下workspace目录下Jobname目录;2、我们可以在脚本中使用Jenkins的各种环境变量,调用方式和我们在linux中调用系统变更方式相同,我们可以使用如下方式查看Jenkins的所有环境变量:

 

 

 

 

4、参数化构建

上一节中我们介绍了如何使用Jenkins的环境变量,那么我们是不是可以在构建过程中,自定义变量,答案是肯定的,下面我们介绍Jenkins的参数化构建:

配置项目,点击参数化构建过程:

 

 

 

 

我们看到有多好种类型的参数,我们常用的choicestring

1choice Parameter

choice给出多个选项,构建时可以手动选择参数,默认是第一行数据。

 

 

2string Parameter

string提供一个文本输入框,使用字符串值的参数变量。

 

 

 

我们添加两个参数:

 

 

然后在我们脚本中调用:

 

 

保存后,我们发现:

 

点击Build with parameters:

 

 

点击开始构建,查看构建结果如下:

 

 

 

还有很多其他的可用参数:Boolean Parameter提供一个布尔选择,password Parameter参数提供一个类似密码的输入框,Git Parameter可以选择需要签出代码的分支、标签等。

 

5Git commit触发Jenkins 构建

本次实验,我们新建一个freestyle Job,实现开发在本地向frontend 仓库dev 分支push 代码,Jenkins自动拉取dev分支的代码,然后进行构建后将代码发布到指定的服务器。

1)安装插件

实现JenkinsGitlab的联动需要安装:Gitlab Authentication pluginGitLab Plugin这两个插件。

2)配置Jenkins连接Gitlab

系统管理—系统设置

 

 

 

 

 

我们转到GitLab上生成一个token

 

 

 

 

 

 

 

我们复制生成的token,添加到jenkins

 

 

 

 

选择刚才生成的认证

 

3)新建frontend Job

我们使用复制的方式创建新的Job

 

我们发现新生成的frontend-job配置与my-freestyle一样,我们可以在此基础做改动。

源码管理部分:我们选择从dev分支拉取代码

 

 

构建触发器部分:

 

 

 

 

 

 

此选项主要配置Gitlab如何触发Jenkins Job构建,这里我们配置只有dev分支的push操作会触发构建,并生成一个token,在前面我们配置了Jenkins可以访问Gitlab,但是Gitlab并不能访问Jenkins,此的token用于配置Gitlab访问Jenkins(我们后面介绍)。

构建部分我们设置如下:

 

 

4)配置Gitlab仓库连接Jenkins

Gitlab中选择frontend仓库,点击settings下的Integrations:

URLSecret Token的值来自刚才我们在Jenkins配置构建触发器部分,见下图。

 

 

完成配置后,我们进行测试,

 [root@node1 frontend]# git checkout dev
Already on 'dev'
Your branch is up-to-date with 'origin/dev'.
[root@node1 frontend]# git branch
  1-index
  2-news
* dev
  master
[root@node1 frontend]# vim index.html 
[root@node1 frontend]# git add .
[root@node1 frontend]# git commit -m "modify index.html"
[dev 17365f9] modify index.html
 1 file changed, 1 insertion(+)
[root@node1 frontend]# git push origin dev
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 291 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: 
remote: To create a merge request for dev, visit:
remote:   http://192.168.56.12/web-site/frontend/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote: 
To 192.168.56.12:web-site/frontend.git
   a33914c..17365f9  dev -> dev

 

 

 

 

 

 

 

5git按分支、版本部署

八、Jenkins Pipeline

1Pipeline介绍

Pipeline Jenkins 2.0的精髓简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念。

Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。注意,Stage是一个逻辑分组的概念,可以跨多个Node

Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行期环境。

2pipeline简单示例

 

 

 

 

配置页面前半部分和freestyle项目一样,只是后半部分少了源码管理、构建和构建后操作这部分内容,这是因为pipeline所有的这些操作都是要通过编写Groovy脚本来实现,大家不要怕,写一些我们常用的操作也不难,下面我们通过具体的例子带大家来学习。我们首先创建一个最简单的例子。

 

node {

   echo 'Hello World'

}

此段代码的作用就是输出Hello World

保存后执行,查看结果输出了Hello World

 

 

 

3Pipelinestage示例

1)多stage Pipeline Job

我们使用如下的pipeline script:

node {

    stage("Pull Code"){

        echo "pull code from git "

    }

    stage("Code Build"){

        echo "Buile code"

    }

    stage('Unit Test'){

        echo "Unit Test"

    }

}

stage表示阶段,每个阶段里可以执行具体的操作。我们暂时先简单的输出一些文字,后面再介绍其他常用操作。

保存后Job后,执行构建:

 

我们可以看每一个阶段的执行时间,点击可以查看每一个阶段执行的日志:

 

 

 

 

 

2Pipeline Scipt 执行命令、脚本

我们可以使用如下方式执行命令或者脚本

node {

    stage("Pull Code"){

        echo "pull code from git"

        sh "ls /etc"

    }

    stage("Code Build"){

        echo "Buile code"

        sh "/server/scripts/demo.sh"

    }

    stage('Unit Test'){

        echo "Unit Test"

    }

}

 

得到如下结果:

 

 

 

 

3)使用生成器生成pipeline脚本

 

 

 

现在我们使用Pipeline Script实现frontend-job,脚本如下:

 

node {
    stage("获取代码"){
        echo "获取代码"
        git branch: 'dev', url: 'git@192.168.56.12:web-site/frontend.git'
    }
    stage("打包"){
        echo "打包"
        sh "tar czf frontend-${BUILD_NUMBER}.tar.gz ./*.html"
    }
    stage('发布到node1'){
        echo "发布到node1"
        sh "scp frontend-${BUILD_NUMBER}.tar.gz 192.168.56.11:/data/web"
    }
}

 

 

 

 

4)使用Pipeline Script调用己有的Job

我们的目录的是想一次性按顺序自动执行多个Job,我们还是使用生成器:

 

node {
    stage("获取代码"){
        echo "获取代码"
        git branch: 'dev', url: 'git@192.168.56.12:web-site/frontend.git'
    }
    stage("打包"){
        echo "打包"
        sh "tar czf frontend-${BUILD_NUMBER}.tar.gz ./*.html"
    }
    stage('发布到node1'){
        echo "发布到node1"
        sh "scp frontend-${BUILD_NUMBER}.tar.gz 192.168.56.11:/data/web"
    }
    stage("调用frontend Job"){
        build 'frontend-job'
    }
}

 

 

九、创建Maven项目

上面我讲述的Job都是非编译项目,也就是代码从仓库中拉下来,不经过任何操作就可以发布,这对于像JavaAndroid等源码需要编译的项目是不可用的,下面我们讲解如何使用Maven插件来构建Java项目。

1Maven介绍

Maven是一个项目管理和综合工具。Maven提供给开发人员构建一个完整的生命周期框架。

开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期。

Apache的开源项目主要服务于JAVA平台的构建、依赖管理、项目管理。

Project Object Model,项目对象模型。通过xml格式保存的pom.xml文件。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。该文件是由开发维护,我们运维人员可以不用去关心。

2、安装Maven插件

我们要使用Jenkins+MavenJava项目进行构建,需要安装Maven Project Plugin,具体安装过程请参考插件管理部分

3Linux下安装Maven

1)下载Maven 3安装包

官网:http://maven.apache.org/download.cgi

清华镜像:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/

2)安装Maven

[root@node3 src]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz^C
[root@node3 src]# tar xf apache-maven-3.3.9-bin.tar.gz 
[root@node3 src]# mv apache-maven-3.3.9 /usr/local/
[root@node3 src]# ln -s /usr/local/apache-maven-3.3.9/ /usr/local/maven
[root@node3 src]# cd ..
[root@node3 local]# /usr/local/maven/bin/mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_121/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.5.2.el7.x86_64", arch: "amd64", family: "unix"

 

3)配置

 

编辑/etc/profile文件,在末尾添加export PATH=/usr/local/apache-maven-3.3.9/bin/:$PATH 

 

 

4Maven 插件配置

 

 

 

 

 

5、创建Maven Job

在我们创建Job之间,首先要保证我们的Gitlab仓库有一个java的源码仓库,下面我先在Gitlab上导入一个Java的仓库:

 

 

 

   

远程仓库地址:http://code.greatops.net/greatops/practice-code.git ,导入成功后我们得到这样的一个仓库

 

 

 

 

 

构建完成生,我们在看到在我们的工作区中,每个项目下面生成了一个target目录,里面有一个XXX.jar的文件,这个就是我们的构建产物,构建产物的名称是在项目的pom.xml文件定义,我们可以把这个文件发布到我们的服务器。

 

接着,我们增加一个Post Steps,用于将构建产物发布,配置如下:

 

 

 

 

 

 

6Maven的常用命令

此部分内容了解即可,

1. 创建Maven的普通java项目:

1)创建Maven的普通java项目:

  mvn archetype:create

 -DgroupId=packageName

  -DartifactId=projectName  

2) 创建MavenWeb项目:

mvn archetype:create

    -DgroupId=packageName    

    -DartifactId=webappName

    -DarchetypeArtifactId=maven-archetype-webapp    

3.)清除后再编译   

mvn clean install

我们Jenkins  Biuld部分最常用的配置是:clean install -Dmaven.test.skip=true。

 

posted @ 2018-12-14 16:08  慕沁  阅读(375)  评论(0)    收藏  举报