Jenkins 创建 freestyle 项目

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

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

 

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


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

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

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 

进入创建 job 页面,

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 

注:

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 命令、脚本

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

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 

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

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

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

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 

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

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

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

 

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

 


下拉至“构建”部分

 

构建

就是用job执行什么任务

 
Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 

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

试下执行pwd命令

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

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

Jenkins 创建 freestyle 项目 执行linux 命令

 

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

 

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

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

 

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 点击控制台输出

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

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

 

Jenkins 创建 freestyle 项目 执行linux 命令

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

 

 

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

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

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

 

Jenkins 创建 freestyle 项目 执行linux 命令

 

 到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

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 我们进入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 创建一个文件 再保存配置
Jenkins 创建 freestyle 项目 执行linux 命令

 


 再点击执行

Jenkins 创建 freestyle 项目 执行linux 命令

 


 执行完 看看输出

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 

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

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 
[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界面 查看

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

 点击工作空间

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

Jenkins 创建 freestyle 项目 执行linux 命令

 

 

这是自由风格式构建项目

 

相关文章:

  • 2022-12-23
  • 2021-08-19
  • 2021-06-10
  • 2021-08-09
  • 2022-12-23
  • 2021-11-23
  • 2021-09-30
猜你喜欢
  • 2021-12-28
  • 2021-09-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案