Fork me on GitHub

Jenkins自由风格项目构建

一、创建job

在Dashboard中新建job:

输入任务名:

 下面可以选择其中的一种用来构建项目比如第一个自由风格的软件项目。

二、项目配置

当选择第一个自由风格构建项目后,构建项目分成下面几部分:

  • General
  • 源码管理
  • 构建触发器
  • 构建环境
  • 构建
  • 构建后操作

1、General

包含很多项目的基本信息,比如项目描述等,那么常用的如丢弃旧的构建就是随着构建项目的增多,可以适当的丢弃掉过时的构建,有两种策略:

  • 保持构建的天数
  • 保持构建的最大个数

 2、源码管理

源码一般是从git仓库拉取,所以需要完成以下

  • 创建凭证(如:gitlab的账号密码)
  • 仓库地址
  • 指定分支
  • jenkins服务器上安装git

如果没有凭证就添加一个全局的凭证,注意写上描述,后期可能有很多,以便于区分;对于指定分支,默认是master,修改为指定分支;另外就是jenkins服务器上需要安装git,因为是通过git clone的方式同步源码。

3、构建触发器

当第二步完成后我们可以进行手动构建,这样就会拉取代码,但是这样需要人工干预,那么如何实现自动化呢?此时需要构建触发器,也就是何时执行这个任务,它的方式也有很多:

  • 其他工程构建后触发 
  • 定时构建
  • GitHub hook trigger for GITScm polling
 比如采用定时构建,通过日程表的方式:分、时、日、月、周
# 每天的12点47分执行这个任务的构建
47 12 * * *

但是需要注意的是容器中的时间一定要与宿主机上的时间保持一致,所以:

# 进入容器
docker exec -it ef59 bash

# 容器中创建Asia时区文件
echo Asia/Shanghai >/etc/timezone

# 将宿主机中的localtime拷贝到容器中
docker cp /usr/share/zoneinfo/Asia/Shanghai ef59215fc5b6:/etc/localtime

# 重启服务
docker restart ef59

另外最好就是在jenkins个人设置中将时区进行设置,它是默认的。

4、构建

上面的过程就是定时将代码从git仓库同步过来,这一步是执行仓库中的代码,它也有很多选项:

显然同步的代码在Linux服务器上,所以选择执行shell,那么执行的目录就是当前同步项目的根目录下,即:

那么我们可以执行main.py文件,这个python解释器使用的就是运行脚本所在服务器的解释器,比如当前我是在jenkins服务器的容器中运行,所以容器中必须有python的环境,那么在构建时可以进入容器然后安装python,构建脚本:

  • 手动构建

需要先在宿主机上手动进入到容器然后进行安装:

# 进入容器
docker exec -it  `docker ps | awk '{print $1}' | xargs | awk '{print $2}'` bash

# 注意容器系统,apk安装python
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/main/" > /etc/repositories
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/community/" >> /etc/apk/repositories
apk update
apk add python3

# 执行仓库程序
python3 main.py
  • 自动构建

在构建时就是在容器中运行的,所以直接安装python,然后运行程序即可:

# 注意容器系统,apk安装python
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/main/" > /etc/apk/repositories
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/community/" >> /etc/apk/repositories
apk update
apk add python3

# 执行仓库程序
python3 main.py

 5、构建后操作

当构建完成后需要做的一些动作,比如发送邮件通知等:

 但是这是jenkins自带的不可编辑的邮件通知,所以最好的时安装一个可编辑的邮件通知插件,在插件中选择 Email Extension 进行安装:

接着就是需要在系统管理-->系统配置中进行邮件服务器、发送者信息信息,然后在job中配置发件人(与系统配置中的的发送者邮箱一致)即可,注意的时发送这邮箱配置成管理员邮箱,在jenkins中邮箱有且只有一个。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-09-13 07:42  iveBoy  阅读(466)  评论(0编辑  收藏  举报
TOP