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。

  1. 在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]-----+
  1. 配置Gitlab Deploy Key




    然后切换到frontend 仓库:



  2. 安装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本地,下面接下上面的示例,我们实现将代码发布到我们的服务器:

  1. 配置免密登录

要实现无交互式的传输文件,执行命令,我们首先要保证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.
  1. 编写发布脚本

我们实现将从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。

  1. 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分支的代码,然后进行构建后将代码发布到指定的服务器。

  1. 安装插件

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

  1. 配置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相关推荐

  1. jenkins pipeline之如何创建一个流水线

    一.为什么使用pipeline 我之前实现了一套完整的升级自动化构建流程,每个步骤分别对应一个Job(为了各Job之间能够方便的自由组合).现在想根据不同的测试场景,将多个Job串联起来,准备用pip ...

  2. 【jenkins】创建一个project基础配置、自动化邮件发送、pytest_terminal_summary收集结果

    [jenkins]创建一个project基础配置 一. 源码管理:以git仓库添加为例 二.Build Steps:以python为例 问题一:jenkins构件python脚本后,报告无法在jenk ...

  3. Jenkins 2.X free-style CI/CD流水线搭建(一)

    前面介绍了Jenkins的安装和插件管理,这篇文章我们介绍下Jenkins free-style CI流水线的搭建.虽然现在不推荐使用这种方式搭建流水线.但是它可以帮助初学者快速了解和体验Jenkin ...

  4. 用jenkins创建节点

    原料:(1)jre下载链接:https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html ( ...

  5. 什么是 CD 管道?一文告诉你如何借助Kubernetes、Ansible和Jenkins创建CD管道!

    作者 | Magalix 翻译 | 火火酱,责编 | Carol 来源 | 架构师技术联盟 封图 | CSDN付费下载于IC photo CI/CD要解决的是什么问题? CI/CD(CI全名Conti ...

  6. k8s jenkins pipeline 多分支发布_给 Jenkins 换一个新皮肤:BlueOcean

    BlueOcean是什么 Jenkins是一款Java开发的跨平台持续集成和持续发布的开源项目,它具有如下特征: 安装及迁移方便:安装直接部署war包,迁移只需替换JENKINS_HOME目录. 配置 ...

  7. 创建一个守护进程来监听服务进程的异常状态_用 C# 来守护 Python 进程

    (给DotNet加星标,提升.Net技能) 转自:hippieZhoucnblogs.com/hippieZhou/p/11504552.html 背景 主要负责的一个项目是一个 C/S 架构的客户端 ...

  8. 什么是 CD 管道?一文告诉你如何借助 Kubernetes、Ansible 和 Jenkins 创建 CD 管道!...

    作者 | Magalix 译者 | 火火酱 责编 | Carol 来源 | 架构师技术联盟 封图 | CSDN付费下载于IC photo CI/CD要解决的是什么问题? CI/CD(CI全名Conti ...

  9. linux创建一个交换分区,如何创建linux交换分区

    匿名用户 1级 2017-03-26 回答 1.mkswap 把一个分区格式化成为swap交换区: [root@localhost]# mkswap /dev/sda6 注:创建此分区为swap 交换 ...

最新文章

  1. golang 获取 磁盘 内存 占用
  2. GLog 初始化说明
  3. Java Html转pdf实战
  4. dfs序 + RMQ = LCA
  5. 常见地理知识总结的连接
  6. 谈谈能带来高薪报酬的软件技术
  7. SpringBoot+zk+dubbo架构实践(四):sb+zk+dubbo框架搭建(内附源码GitHub地址)
  8. MapReduce:出租车数据案例
  9. oppo计算机找不到,oppo手机照片在电脑显示不出来怎么办啊
  10. 旷世英才遭天妒——拉马努金
  11. 团队管理那点破事,OKR绩效、核心人才、面试、技术分享、研发流程
  12. 英语单词词性顺口溜_英语单词速记顺口溜背诵技巧
  13. 不积跬步无以至千里013
  14. Crypto one-time-pad
  15. 3DS动物之森(animal acrossing)游戏记录
  16. windows系统服务器怎么锁屏,电脑怎么锁屏?锁屏快捷键是什么?
  17. 禁用U盘!隐藏盘符和禁止查看
  18. JST :Joint sentiment topic model ASUM :Aspect sentiment unification model
  19. C++ Builder 由于找不到 CC32C260MT.DLL、rtl260.bpl、vcl260.bpl,无法继续执行代码
  20. 「案例」如何解决公司采购与财务之间的工作矛盾?

热门文章

  1. jquery的$.extend和$.fn.extend作用及区别(—)
  2. Xshell的一些实用技巧
  3. c语言删除文件remove_C程序删除文件
  4. 7-9 设计一个能处理异常的Loan类 (20 分)
  5. 电脑登陆不了网页的服务器地址,电脑登陆qq打不开网页怎么设置
  6. linux卸载cuda10.0,Ubuntu下安装CUDA10.0以及问题
  7. C语言学习之输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
  8. P3870 [TJOI2009]开关 线段树 异或
  9. MySql恢复密码的过程
  10. JavaScript如何获取/计算页面元素的offset?