zoukankan      html  css  js  c++  java
  • Jenkins 创建 freestyle 项目 执行linux 命令

    Jenkins 创建 freestyle 项目

    构建作业是一个持续集成服务器的基本职能,构建叙利亚的形式多种多样,可以是编译和单元测试,也可能是打包及部署,或者是其他类似的作业。

    在 Jenkins 中,构建作业很容易建立,而且根据你的需要你可以安装各种插件,来创建多种形式的构建作业,

    下面我们先来学习创建自由式构建作业。


    自由式的构建作业是灵活和可配置的选项,并且可以用于任何类型的项目,它的配置相对简单,其中很多配置在的选项也会用在其他构建作业中。

    在 Jenkins 主页面,点击左侧菜单栏的“新建”或者“New job”

    进入创建 job 页面,

    注:

    1、job 名称需要有规划,以便于后面的权限管理; 有意义有规则,jenkins权限就是用文件的正则表达式匹配

    2、job名称一旦确认了,不要去改,创建 job 后不要轻易更改名称,因为 jenkins 一切皆文件,很多关于 job 的文件,都是以该名称命名,当你改名后,一般不会删除旧文件,而是会再重新创建一份新的文件。

    输入 job 名称,选择类型后,点击 OK 后创建 job,进入 job 配置页面,此时在 Jenkins的主目录下的 jobs 目录已经生成了以你 Job 名称命名的文件夹

    [root@ci-node2 jobs]# pwd
    /var/lib/jenkins/jobs
    [root@ci-node2 jobs]# ll
    total 0
    drwxr-xr-x 3 jenkins jenkins 38 Apr  8 00:25 My-freestyle-job

    自动创建了一个以项目名称,命名的文件夹

    生成完如果要改名 ,改名结果是,又新生成一个新文件夹,旧文件夹没有删除,就会在数据目录导致出现很多垃圾文件夹,所以起名字的时候要想好,不要轻易的改名

    文件夹里面有配置,构建

    [root@ci-node2 My-freestyle-job]# ll
    total 4
    drwxr-xr-x 2 jenkins jenkins  23 Apr  8 00:25 builds
    -rw------- 1 jenkins jenkins 468 Apr  8 00:25 config.xml

     执行构建会在,/var/lib/jenkins 目录下创建worksspace目录,工作区文件夹,在工作区文件夹下面还会建立一些东西

    Job 配置页面,主要包括通用配置、源码管理、构建触发器、构建环境、构建、构建后操作等几个部分,根据你选择的构建类型不同,可能配置项会有一些小的差别。我们通过几个示例来学习具体的配置

    执行 linux 命令、脚本

    首先我们来看通用配置选项,

    勾选“丢弃旧的构建”,这是我们必须提前考虑的重要方面,就是我们如何处理构建历史,构建作业会消耗大理的磁盘空间,尤其是你存储的构建产物
    (比如执行 java 构建时会生成的 JAR、WAR 等)

    丢弃旧的构建 这个一定要配

     每构建一次,生成构建历史,生成构建产物,日积夜累,造成数据目录会持续生长很快,保留那么多次构建产物是没有用的,丢弃旧的构建,选择系统帮你自动清理,自动清理构建历史

    该选项允许你限制在构建历史记录的作业数。你可以告诉 Jenkins 只保留近的几次构建,或者只保留指定数量的构建,

    此外,Jenkins 永远不会删除最后一个稳定和成功的构建。

    jenkins永远为你保存最后一次成功构建的产物 在系统上 这是jenkins规则

    具体数据的指定要根据你项目的实际情况而定,我一般设置为 5、5,


    下拉至“构建”部分

    构建

    就是用job执行什么任务

     

    添加构建操作,选择“execute shell” 

    试下执行pwd命令

    保存设置后,回到 job 主页面

    点击“立即构建”,执行 job 的构建任务,我们的 job 就是执行一条 linux 命令 

     

     出现了构建历史,点击构建历史

     点击控制台输出

     前面/var/lib/jenkins 路径固定的 是jenkins数据目录

    构建任务会自动生成workspace 工作区目录,然后里面会以job名称新建一个文件夹

     

     执行命令当前目录就是/var/lib/jenkins/workspace 加上job名称 文件夹 这个是你linux 执行命令的当前目录

    在上面的控制台输出内容中,我们可以看到 job 执行时的当前工作目录为 Jenkins 主目录+workspaces+以 job 名称命名的文件夹,

    知道这一点对于我们后面写脚本执行部署任务时非常重要。

    我们也可以通过命令行进行确认。

     到workspace目录里面 看到以job名称创建一个文件夹

    [root@ci-node2 jenkins]# cd workspace/
    [root@ci-node2 workspace]# ll
    total 0
    drwxr-xr-x 2 jenkins jenkins 6 Apr  8 23:57 My-freestyle-job

    里面是空的 因为在job没有做任何操作,以后拉取源代码,会拉取到这 job名称文件夹里面

    [root@ci-node2 workspace]# pwd
    /var/lib/jenkins/workspace
    [root@ci-node2 workspace]# ll
    total 0
    drwxr-xr-x 2 jenkins jenkins 6 Apr  8 23:57 My-freestyle-job
    
    
    [root@ci-node2 workspace]# cd My-freestyle-job/
    [root@ci-node2 My-freestyle-job]# pwd
    /var/lib/jenkins/workspace/My-freestyle-job
    [root@ci-node2 My-freestyle-job]# ll
    total 0

    而且我们进一步也可以看到 job 主页面,工作空间所对应的位置也是此目录。通过这个
    例子,我们可以联想到,我们可以使用 Jenkins 执行任何 linux 命令,这也就是我们前面讲
    的要注意 Jenkins 启动用户的配置,如果是 root 用户启动的 Jenknis,那 Jenkins 的安全 
    及权限配置一定要做好控制。我们在学习初期,为了节省时间,可以使用 root 用户启动
    jenkins。

    回到/var/lib/jenkins 路径 去看看jobs文件夹目录

    -rw-r--r--   1 jenkins jenkins     4 Apr  6 19:05 jenkins.install.InstallUtil.lastExecVersion
    -rw-r--r--   1 jenkins jenkins     4 Apr  6 19:05 jenkins.install.UpgradeWizard.state
    drwxr-xr-x   3 jenkins jenkins    30 Apr  8 00:25 jobs
    drwxr-xr-x   4 jenkins jenkins    37 Apr  7 23:20 logs
    -rw-------   1 jenkins jenkins   907 Apr  7 23:20 nodeMonitors.xml
    drwxr-xr-x   2 jenkins jenkins     6 Apr  6 18:16 nodes
    drwxr-xr-x 116 jenkins jenkins 12288 Apr  7 23:10 plugins
    -rw-------   1 jenkins jenkins   129 Apr  7 23:20 queue.xml.bak
    -rw-------   1 jenkins jenkins    64 Apr  6 18:16 secret.key
    -rw-r--r--   1 jenkins jenkins     0 Apr  6 18:16 secret.key.not-so-secret
    drwx------   4 jenkins jenkins  4096 Apr  9 00:02 secrets
    -rw-r--r--   1 jenkins jenkins     0 Apr 10 23:32 ThinBackup Worker Thread.log
    drwxr-xr-x   2 jenkins jenkins   182 Apr  7 23:21 updates
    drwxr-xr-x   2 jenkins jenkins    24 Apr  6 18:16 userContent
    drwxr-xr-x   3 jenkins jenkins    19 Apr  6 18:16 users
    drwxr-xr-x   2 jenkins jenkins     6 Apr  7 23:20 workflow-libs
    drwxr-xr-x   3 jenkins jenkins    30 Apr  8 23:57 workspace
    
    [root@ci-node2 jenkins]# pwd
    /var/lib/jenkins

    进入jobs目录去看看我们项目里面

    [root@ci-node2 jenkins]# cd jobs/
    [root@ci-node2 jobs]# ll
    total 0
    drwxr-xr-x 3 jenkins jenkins 101 Apr  8 23:57 My-freestyle-job
    
    
    [root@ci-node2 jobs]# cd My-freestyle-job/

    里面有好多文件 一些配置

    [root@ci-node2 My-freestyle-job]# ll
    total 8
    drwxr-xr-x 3 jenkins jenkins 159 Apr  8 23:57 builds
    -rw------- 1 jenkins jenkins 821 Apr  8 23:53 config.xml
    lrwxrwxrwx 1 jenkins jenkins  22 Apr  8 23:57 lastStable -> builds/lastStableBuild  // 最后一次构建
    
    lrwxrwxrwx 1 jenkins jenkins  26 Apr  8 23:57 lastSuccessful -> builds/lastSuccessfulBuild  // 最后一次成功构建 软链接指向哪一次构建
    -rw------- 1 jenkins jenkins   2 Apr  8 23:57 nextBuildNumber

    去builds目录看看

    [root@ci-node2 My-freestyle-job]# cd builds/
    
    [root@ci-node2 builds]# ll
    total 0
    drwxr-xr-x 2 jenkins jenkins 82 Apr  8 23:57 1
    lrwxrwxrwx 1 jenkins jenkins  2 Apr  8 23:53 lastFailedBuild -> -1
    lrwxrwxrwx 1 jenkins jenkins  1 Apr  8 23:57 lastStableBuild -> 1
    lrwxrwxrwx 1 jenkins jenkins  1 Apr  8 23:57 lastSuccessfulBuild -> 1
    lrwxrwxrwx 1 jenkins jenkins  2 Apr  8 23:53 lastUnstableBuild -> -1
    lrwxrwxrwx 1 jenkins jenkins  2 Apr  8 23:53 lastUnsuccessfulBuild -> -1
    -rw------- 1 jenkins jenkins  0 Apr  8 00:25 legacyIds

    build就是图片上的 构建历史 build history 1=#1

     我们进入1目录看看

    [root@ci-node2 builds]# cd 1
    You have new mail in /var/spool/mail/root
    [root@ci-node2 1]# ll
    total 16
    -rw------- 1 jenkins jenkins 926 Apr  8 23:57 build.xml  // 构建配置
    -rw-r--r-- 1 jenkins jenkins   6 Apr  8 23:57 changelog.xml  // 改变的历史
    -rw-r--r-- 1 jenkins jenkins 902 Apr  8 23:57 injectedEnvVars.txt
    -rw-r--r-- 1 jenkins jenkins 541 Apr  8 23:57 log

    构建的配置 build.xml

    <?xml version='1.0' encoding='UTF-8'?>
    <build>
      <actions>
        <hudson.model.CauseAction>
          <causeBag class="linked-hash-map">
            <entry>
              <hudson.model.Cause_-UserIdCause>
                <userId>admin</userId>
              </hudson.model.Cause_-UserIdCause>
              <int>1</int>
            </entry>
          </causeBag>
        </hudson.model.CauseAction>
        <org.jenkinsci.plugins.envinject.EnvInjectPluginAction plugin="envinject@2.1.5"/>
      </actions>
      <queueId>1</queueId>
      <timestamp>1586361434637</timestamp> // 时间戳
      <startTime>1586361434647</startTime>
      <result>SUCCESS</result>
      <duration>337</duration>
      <charset>UTF-8</charset>
      <keepLog>false</keepLog>
      <builtOn></builtOn>
      <workspace>/var/lib/jenkins/workspace/My-freestyle-job</workspace> // workspace 工作目录
      <hudsonVersion>2.99</hudsonVersion>
      <scm class="hudson.scm.NullChangeLogParser"/>
      <culprits class="com.google.common.collect.EmptyImmutableSortedSet"/>
    </build>

    退出来 回到这一层路径

    [root@ci-node2 1]# cd ..
    [root@ci-node2 builds]# ll
    total 0
    drwxr-xr-x 2 jenkins jenkins 82 Apr 10 23:53 1
    lrwxrwxrwx 1 jenkins jenkins  2 Apr  8 23:53 lastFailedBuild -> -1
    lrwxrwxrwx 1 jenkins jenkins  1 Apr  8 23:57 lastStableBuild -> 1
    lrwxrwxrwx 1 jenkins jenkins  1 Apr  8 23:57 lastSuccessfulBuild -> 1
    lrwxrwxrwx 1 jenkins jenkins  2 Apr  8 23:53 lastUnstableBuild -> -1
    lrwxrwxrwx 1 jenkins jenkins  2 Apr  8 23:53 lastUnsuccessfulBuild -> -1
    -rw------- 1 jenkins jenkins  0 Apr  8 00:25 legacyIds
    
    [root@ci
    -node2 builds]# cd ..
    [root@ci
    -node2 My-freestyle-job]# ll total 8 drwxr-xr-x 3 jenkins jenkins 159 Apr 8 23:57 builds -rw------- 1 jenkins jenkins 821 Apr 8 23:53 config.xml lrwxrwxrwx 1 jenkins jenkins 22 Apr 8 23:57 lastStable -> builds/lastStableBuild lrwxrwxrwx 1 jenkins jenkins 26 Apr 8 23:57 lastSuccessful -> builds/lastSuccessfulBuild -rw------- 1 jenkins jenkins 2 Apr 8 23:57 nextBuildNumber
    [root@ci
    -node2 My-freestyle-job]# pwd /var/lib/jenkins/jobs/My-freestyle-job
    看看 /var/lib/jenkins/jobs/My-freestyle-job目录下的 config.xml 里面内容

    看到我们配置的 丢弃旧的构建 
    还有执行的命令 pwd
    所有配置的记录 以文件形式保存
    <?xml version='1.0' encoding='UTF-8'?>
    <project>
      <actions/>
      <description></description>
      <keepDependencies>false</keepDependencies>
      <properties>
        <com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty plugin="gitlab-plugin@1.5.2">
          <gitLabConnection></gitLabConnection>
        </com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty>
        <jenkins.model.BuildDiscarderProperty>
          <strategy class="hudson.tasks.LogRotator">
            <daysToKeep>5</daysToKeep>
            <numToKeep>5</numToKeep>
            <artifactDaysToKeep>-1</artifactDaysToKeep>
            <artifactNumToKeep>-1</artifactNumToKeep>
          </strategy>
        </jenkins.model.BuildDiscarderProperty>
      </properties>
      <scm class="hudson.scm.NullSCM"/>
      <canRoam>true</canRoam>
      <disabled>false</disabled>
      <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
      <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
      <triggers/>
      <concurrentBuild>false</concurrentBuild>
      <builders>
        <hudson.tasks.Shell>
          <command>pwd</command>
        </hudson.tasks.Shell>
      </builders>
      <publishers/>
      <buildWrappers/>
    </project>
    
    
    
    现在再修改下配置 再增加一个shell 创建一个文件 再保存配置
    
    

     再点击执行

    
    

     执行完 看看输出

     

    创建的文件 放在 /var/lib/jenkins/workspace/My-freestyle-job 目录下 当前workspace工作目录

     
    [root@ci-node2 workspace]# cd My-freestyle-job/
    [root@ci-node2 My-freestyle-job]# ll
    total 0
    -rw-r--r-- 1 jenkins jenkins 0 Apr 11 00:26 readme
    [root@ci-node2 My-freestyle-job]# pwd
    /var/lib/jenkins/workspace/My-freestyle-job

    创建的文件在 jenkins web界面 查看

     点击工作空间

    这是自由风格式构建项目

  • 相关阅读:
    CF140C New Year Snowmen
    CF1131G Most Dangerous Shark
    莫比乌斯函数&欧拉函数&筛法 综合运用
    【51nod1220】约数之和
    题解[CF1228E Another Filling the Grid]
    dsu on tree学习笔记
    线性基学习笔记
    题解[CF895C Square Subsets]
    博弈论学习笔记
    题解[ [JSOI2007]文本生成器 ]
  • 原文地址:https://www.cnblogs.com/mingerlcm/p/12657346.html
Copyright © 2011-2022 走看看