Jenkins之HelloWorld
Jenkins 之 HelloWorld。Jenkins 的功能非常强大,可以根据团队不同需求,对任务进行详细的配置。本博客介绍使用 Jenkins 完成第一个任务,即 HelloWorld。主要实现如下功能:关联 GitHub 代码仓库,(C 代码,程序打印 ”helloworld“),由 git push 操作触发任务 ...
Jenkins 之 HelloWorld
Jenkins 的功能非常强大,新建任务时,可以根据团队不同需求,对任务进行详细的配置。本节我们来介绍一下,如何使用 Jenkins 完成第一个任务,即 HelloWorld。
任务简介
Helloword 任务,主要实现如下功能:
- 关联 GitHub 代码仓库,(C 代码,程序打印 ”helloworld“)
- 由 GitHub push 操作触发任务
- 任务自动构建编译代码,生成可执行文件
- 通过 Jenkins Web下载构建好的可执行文件
任务比较简单,主要为了展示 Jenkins 的功能,带领同学们熟悉 Jenkins 流程,与生产环境的 CI/CD 还有一定的差距。
我们先来看下任务创建完成的状态
创建 GitHub 仓库
在 GitHub 创建一个仓库,public 和 private 均可,这里我们创建的是 private 仓库,复制仓库 HTTPS 地址。
任务创建
新建任务
使用我们之前创建的用户,登陆 Jenkins,登陆页 Jenkins 老大爷还是蛮帅的。
在 Jenkins 首页,点击“新建任务”或“创建一个新任务”,如红框所示
选择任务类型
本例程选择的任务类型为“构建一个自由风格的软件项目”
- 输入任务名称 “helloworld”
- 选择“构建一个自由风格的软件项目”
- 点击“确定”
General
填写任务描述,勾选 GitHub 项目,填写 GitHub 项目主页 URL。
任务配置及要填写的信息如下图所示:
源码管理
源码管理有三种模式(无 / Git / Subversion),此处选择 Git,需要填写 Repository URL、指定分支、源码库浏览器等。
-
填写 Git 仓库地址:
粘贴 GitHub 项目仓库的 URL (以 .git 结尾的那个 URL),页面会出现红色警告,是由于没有凭据而无法连接远端仓库造成的。
- 添加凭据 Credentials:
-
点击“添加”–>“Jenkins”–>弹出添加凭据页面;
-
Domain 选择“全局凭据 (unrestricted)”,表示次凭据全局可用;
-
类型选择 “Username with password”,表示使用用户名和密码的方式作为凭据;
-
用户名 “your github username”,填写 GitHub 账户用户名;
-
密码 “your github password”,填写 GitHub 账户密码;
-
ID 忽略;
-
描述:填写对此凭据的描述;
-
点击“添加”–>跳转回任务配置页面;
-
选择凭据 “nefusmzj/*****(my github accont)”。
- 指定分支,使用默认的 “*/master” 即可
- 源码库浏览器选择 “githubweb”,URL 地址填写项目 GitHub 项目的 URL
构建触发器
构建触发器,顾名思义是 Jenkins 构建的触发条件。
此处勾选 GitHub hook trigger for GITScm polling,稍后会讲解如何设置 webhook。
构建环境
hellowold 项目构建不需要环境,因此下面几项均不勾选
构建
选择“增加构建步骤”–>“执行 shell”–>编写构建 shell。
helloworld 程序目的简单快速的达成,因此 shell 中只有 make(GitHub 的 C 代码仓库中需要有 Makefile)。
构建后步骤
选择“增加构建后操作步骤”–>“归档成品”–>“填写用于存档的文件: hello”。
任务创建完毕,点击“保存”存储项目。
设置 webhook
设置 webhook 的条件是,Jenkins 服务器可被外网 IP 请求,部署于 AWS、阿里云等具有公网 IP 的云主机上 Jenkins 用户,可以很容易实现。
但是部署在局域网内的用户,GitHub 等代码管理平台,无法访问到你 192.xx、10.xx、172.xx 段的局域网 Jenkins,是不是就没有办法了呢?也不是这样子的,现在内网穿透的软件、设备有很多,可以使用 natapp、花生棒等内网穿透的软硬件,在穿透软件上,将 Jenkins 的 HTTP_PORT 端口设置穿透即可。
Jenkins 设置 webhook
- 选择“系统管理”–>“系统配置”
- “Github” 插件配置,点击“高级”,设置如下图所示
复制此 URL 地址: http://xx.xx.xx.xx:8080/github-webhook/
若 Jenkins 部署在内网,同时进行了穿透,那么此 URL 端口需要修改为对应的外网映射地址。
例如:
内网 URL=http://192.168.1.100:8080/github-webhook/
映射后的 URL=http://free.cc:32789
那么,外网可访问的 webhook URL=http://free.cc:32789/github-webhook/
- 点击”保存“,Jenkins 部分配置完成。
GitHub添加webhook
- 打开 GitHub 仓库,点击 “Settings”–>选择左侧 “WebHooks”–>点击 “Add webhook”
-
添加 webhook
-
填写刚刚从 Jenkins 系统配置中复制的 URL
-
Content type 保持默认
-
Secret 保持默认为空
-
勾选 “Just the push event”,表示只有 push 事件才触发 webhook
-
勾选 “Active”
-
点击绿色按钮,“Add webhook” 完成添加
-
编写代码提交并推送
代码非常简单,是 C 语言最基本的控制台输出程序。
#include <stdio.h>
int main(){
printf("hello Jenkins!\n");
return 0;
}
Makefile,编译上述 C 代码,生成 hello 可以行文件。
hello: main.o
cc -o hello main.o
main.o : main.cpp
cc -c main.cpp
clean:
rm hello main.o
Commit 和 Push 代码
打开 Jenkins,进入 hello world 任务,查看构建情况:
我们是推送完成,马上打开 Jenkins 的任务查看页,可以看到,一次构建 “#4” 已经在进行了,同学们首次构建,可能使 “#1”,这里只是序号表示,如果与教程不同,不必在乎。
进度条完成后,若 “#4” 前面按钮为蓝色,则表示构建成功,若为红色,则表示构建失败,点击 “#4” 这条构建历史可以进去看到详情如下图:
在任务本次构建的页面中,可以看到构建的时间,构建产生的可执行文件、GitHub 仓库提交版本等信息。
在 “Changes” 项,可以看到最新提交为 “322b4de”,去 GitHub 仓库看,最新提交同为 “322b4de”,那么可以说明本次构建,就是 GitHub 最新提交的代码。
如果自动构建失败的同学不要着急,Jenkins 提供了详细的构建日志。在左侧”控制台输出“中可以看到构建过程的日志,从里面找到线索。
至此,我们目标达成了,代码推送至 GitHub 仓库,Jenkins 自动构建,生成可执行文件。
Jenkins 之 HelloWorld 讲到这里,感谢同学们的学习。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)