欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Jenkins 创建一个freestyle的Job

发布时间:2024/5/7 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Jenkins 创建一个freestyle的Job 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、执行简单命令或脚本



job配置页面:

由于每次构建都会生成很多构建产物,如果频繁构建会占用很多的空间,我们可以通过这几个选项控制构建产物的保留。一般建议选择保留最近5-10的构建为适宜。

其他参数我们在后面再讲。


保存后,我们就创建了一个简单的freestyle job,点击意即构建执行一下,看看结果:




通过这个小例子,我们可以总结如下几点:

1、可以使用Jenkins在页面执行任何需要在linux命令行的操作;

2、就是我们前面讲到的,一定不要在生产环境中用root用户启动jenkins。

2、配置使用Gitlab

我们还是使用前面的my-freestyle Job,配置Job从Gitlab拉取frontend的代码到jenkins。



此处的错误是我们现在还没有配置jenkins连接到Gitlab,由于Jenkins只是拉取Gitlab的代码,所以我们可以使用Gitlab的Deploy Key。

  • 在Jenkins本地生成SSH Key:
  • [root@node3 ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:R4I1NWcI//trqY6fvAdZZB0v8GMFkkBbwcDH/CAxtkA root@node3 The key's randomart image is: +---[RSA 2048]----+ | .E=XOBo.+o| | o =+OB+o.o| | . . =o == .| | o . .oo | | S . .o | | . o. | | .. . | | o o+ | | .oB=o. | +----[SHA256]-----+
  • 配置Gitlab Deploy Key




    然后切换到frontend 仓库:



  • 安装git并本地测试
  • [root@node3 ~]# yum install git –y [root@node3 ~]# git clone git@192.168.56.12:web-site/frontend.git Cloning into 'frontend'... The authenticity of host '192.168.56.12 (192.168.56.12)' can't be established. ECDSA key fingerprint is SHA256:SjPoetHYvGBI08VxTdzYOys+QpjR5vLNbU9Obs2Lx9Q. ECDSA key fingerprint is MD5:39:3e:52:a1:45:9b:3e:23:72:e6:0d:0e:76:00:17:55. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.12' (ECDSA) to the list of known hosts. remote: Counting objects: 34, done. remote: Compressing objects: 100% (23/23), done. remote: Total 34 (delta 6), reused 18 (delta 0) Receiving objects: 100% (34/34), done. Resolving deltas: 100% (6/6), done.

    我们再次打开my-freestyle Job配置页面,

    执行构建后,我们现在我们已经把代码拉到了我们Job的工作区

    3、代码发布

    上面的示例我们已经实现Gitlab拉取地Jenkins本地,下面接下上面的示例,我们实现将代码发布到我们的服务器:

  • 配置免密登录
  • 要实现无交互式的传输文件,执行命令,我们首先要保证Jenkins本机可以免密登录到目标主机。

    [root@node3 ~]# ssh-copy-id -i .ssh/id_rsa.pub 192.168.56.11 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub" The authenticity of host '192.168.56.11 (192.168.56.11)' can't be established. ECDSA key fingerprint is SHA256:lHsG8JxgHwQ3/xdLN/q+h8JtvlWKhtIJn0Zw2t99gb8. ECDSA key fingerprint is MD5:cf:dd:3e:ba:5e:75:24:ce:d4:cf:4f:db:63:3d:8d:6e. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.56.11's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh '192.168.56.11'" and check to make sure that only the key(s) you wanted were added.[root@node3 ~]# ssh 192.168.56.11 Last login: Thu Dec 7 08:50:52 2017 from 192.168.56.1 [root@node1 ~]# exit logout Connection to 192.168.56.11 closed.
  • 编写发布脚本
  • 我们实现将从Git拉到的代码打包,然后发布到node1的/data/web目录下。

    编辑我们的Job,在构建处输入如下代码:

    构建执行成功后:



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

    在这里我们作以下两点解释:

    1、构建过程中命令执行的当前目录为:Jenkins主目录下workspace目录下Jobname目录;

    2、我们可以在脚本中使用Jenkins的各种环境变量,调用方式和我们在linux中调用系统变更方式相同,我们可以使用如下方式查看Jenkins的所有环境变量:

    4、参数化构建

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

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

    我们看到有多好种类型的参数,我们常用的choice和string。

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


    2. string Parameter:

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

    我们添加两个参数:

    然后在我们脚本中调用:

    保存后,我们发现:

    点击Build with parameters:

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

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

    5、Git commit触发Jenkins 构建

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

  • 安装插件
  • 实现Jenkins与Gitlab的联动需要安装:Gitlab Authentication plugin、GitLab Plugin这两个插件。

  • 配置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:


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


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

    [root@node1 frontend]# git checkout dev Already on 'dev' Your branch is up-to-date with 'origin/dev'. [root@node1 frontend]# git branch1-index2-news * devmaster [root@node1 frontend]# vim index.html [root@node1 frontend]# git add . [root@node1 frontend]# git commit -m "modify index.html" [dev 17365f9] modify index.html1 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.gita33914c..17365f9 dev -> dev



    总结

    以上是生活随笔为你收集整理的Jenkins 创建一个freestyle的Job的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。