Jenkins + Coding 构建 Docker Image 并自动上传至Docker Registry
一、Jenkins安装
- 基于docker 安装 jenkins
由于官方jenkins无法执行docker命令,再次构建以下,将jenkins加入docker组可以使用docker相关命令
$ cat Dockerfile
FROM jenkins/jenkins:lts
USER root
RUN groupadd -g 999 docker
RUN gpasswd -a jenkins docker
USER jenkins
构建新镜像
docker build -f ./Dockerfile -t jenkins/jenkins:lts-v1.0 .
完整的compose文件
$ cat docker-compose-jenkins.yml
version: "2.2"
services:
jenkins:
image: jenkins/jenkins:lts-v1.0
ports:
- "9090:8080"
- "50000:50000"
volumes:
- /datafile/jenkins/home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
- /usr/bin/docker:/usr/bin/docker
mem_limit: 8g
restart: always
networks:
- monitoring
networks:
monitoring:
driver: bridge
启动服务Jenkins
docker-compose -f docker-compose-jenkins.yml up -d
启动完成后浏览器打开URL
http://IP:9090/
初始化授权Key
$ cat /var/jenkins_home/secrets/initialAdminPassword
b68e123s4f9bc54f3a9e0ec6ss12aea851
选择 安装推荐的插件
等待完成安装...
安装完成后 创建第一个管理员用户
Jenkins 默认的URL地址
二、 开始使用Jenkins
安装所需的插件,Manage Jenkins(系统管理)——> Manage Plugins(插件管理)
- CloudBees Docker Build and Publish
- Generic Webhook Trigger Plugin
- Date Parameter
勾选,安装完成重启Jenkins
重新登录,输入刚才创建的admin用户
登录后,创建第一个任务
任务名 以【Test-1】为例,构建一个自由风格的软件项目
定义Tag名为今日的日期,这里定义一个日期变量,用于后面获取当日的日期(年-月-日)
Git源码管理,配置coding的git地址,这里使用用户名密码的方式认证,并添加coding的用户信息
默认git clone 超时时间是10分钟,如果clone项目较大,时间超过10分钟无法clone完成,这里可以调整超时时长
配置Webhook 触发器
构建过程,由于我的docker仓库使用的是阿里云的【容器镜像服务】 ,以下配置均按照阿里云地址说明
高级配置,指定工作目录,以及Dockerfile文件位置,我的git目录格式如下
MyGitDir
└── test
├── 1.txt
├── Dockerfile
└── nginx_test
├── nginx.conf
└── test.txt
三、构建任务
手动触发构建,由于配置了日期参数需要手动点击一下,后面通过webhook或者接口构建者不需要
查看构建任务
构建完成。构建完成后docker image将自动推送至阿里云镜像仓库,可以登录阿里云 容器镜像服务 到对应的仓库去查看新版image
配置Coding,当有push或者merge操作自动触发jenkins构建任务
登录coding,进入项目—>设置(项目右下角)——>开发者选项——>Service Hook——>新建Service Hook
服务URL是在配置Jenkins Webhook 触发器时的URL,接口地址修改成自己的jenkins地址,Token也是jenkins配置时指定的
验证:
Git修改代码,进行push操作
git add 1.txt
git commit -m "zongxiang test"
git push
返回Jenkins自动有任务开始构建
至此,结束