Jenkins 之 HelloWorld

Jenkins 的功能非常强大,新建任务时,可以根据团队不同需求,对任务进行详细的配置。本节我们来介绍一下,如何使用 Jenkins 完成第一个任务,即 HelloWorld。

任务简介

Helloword 任务,主要实现如下功能:

  1. 关联 GitHub 代码仓库,(C 代码,程序打印 ”helloworld“)
  2. 由 GitHub push 操作触发任务
  3. 任务自动构建编译代码,生成可执行文件
  4. 通过 Jenkins Web下载构建好的可执行文件

任务比较简单,主要为了展示 Jenkins 的功能,带领同学们熟悉 Jenkins 流程,与生产环境的 CI/CD 还有一定的差距。

我们先来看下任务创建完成的状态

在这里插入图片描述

创建 GitHub 仓库

在 GitHub 创建一个仓库,public 和 private 均可,这里我们创建的是 private 仓库,复制仓库 HTTPS 地址。

在这里插入图片描述

任务创建

新建任务

使用我们之前创建的用户,登陆 Jenkins,登陆页 Jenkins 老大爷还是蛮帅的。

在 Jenkins 首页,点击“新建任务”或“创建一个新任务”,如红框所示

在这里插入图片描述

选择任务类型

本例程选择的任务类型为“构建一个自由风格的软件项目”

  1. 输入任务名称 “helloworld”
  2. 选择“构建一个自由风格的软件项目”
  3. 点击“确定”

在这里插入图片描述

General

填写任务描述,勾选 GitHub 项目,填写 GitHub 项目主页 URL。

任务配置及要填写的信息如下图所示:

在这里插入图片描述

源码管理

源码管理有三种模式(无 / Git / Subversion),此处选择 Git,需要填写 Repository URL、指定分支、源码库浏览器等。

  1. 填写 Git 仓库地址:

    粘贴 GitHub 项目仓库的 URL (以 .git 结尾的那个 URL),页面会出现红色警告,是由于没有凭据而无法连接远端仓库造成的。

在这里插入图片描述

  1. 添加凭据 Credentials:
  • 点击“添加”–>“Jenkins”–>弹出添加凭据页面;

  • Domain 选择“全局凭据 (unrestricted)”,表示次凭据全局可用;

  • 类型选择 “Username with password”,表示使用用户名和密码的方式作为凭据;

  • 用户名 “your github username”,填写 GitHub 账户用户名;

  • 密码 “your github password”,填写 GitHub 账户密码;

  • ID 忽略;

  • 描述:填写对此凭据的描述;

  • 点击“添加”–>跳转回任务配置页面;

  • 选择凭据 “nefusmzj/*****(my github accont)”。

  1. 指定分支,使用默认的 “*/master” 即可
  2. 源码库浏览器选择 “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

  1. 选择“系统管理”–>“系统配置”

在这里插入图片描述

  1. “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/

  1. 点击”保存“,Jenkins 部分配置完成。

GitHub添加webhook

  1. 打开 GitHub 仓库,点击 “Settings”–>选择左侧 “WebHooks”–>点击 “Add webhook”

在这里插入图片描述

  1. 添加 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 讲到这里,感谢同学们的学习。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐