jenkens+docker自动化构建并推送至阿里云仓库

写在前面

  • 本想部署一套jenkins自动化构建系统来解决频繁需要手动构建的问题,奈何百度了一大堆不是广告就是心灵鸡汤,jenkisn插件的文档更是少的可怕,无奈只能自己折腾,目前一切正常,里面加入了一些个人理解,可能不对,希望大家多多指正。

环境介绍

TYPEVERSION
Github版本10.7.3
docker版本19.03.5
docker_hub阿里云容器仓库
jenkins版本2.222.1

docker安装,gitlab安装,jenkins安装

自己百度,很多教程,重复也没意义,强调一下我遇到的问题

  • 三个如果部署在一台服务器服务器配置一定要高,不然卡到怀疑狗生…
  • gitlab一定要配置定时备份,数据无价
  • docker一定要配置加速!jenkins也是!伟大的GFW…
  • jenkins能本地安装就别偷懒用docker,目测可能会有丢配置问题,就算挂载volume也会,估摸着没全挂载上,玄学,加个注释就好。。。。 ==
//
//                       _oo0oo_
//                      o8888888o
//                      88" . "88
//                      (| -_- |)
//                      0\  =  /0
//                    ___/`---'\___
//                  .' \\|     |// '.
//                 / \\|||  :  |||// \
//                / _||||| -:- |||||- \
//               |   | \\\  -  /// |   |
//               | \_|  ''\---/''  |_/ |
//               \  .-\__  '-'  ___/-. /
//             ___'. .'  /--.--\  `. .'___
//          ."" '<  `.___\_<|>_/___.' >' "".
//         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//         \  \ `_.   \_ __\ /__ _/   .-` /  /
//     =====`-.____`.___ \_____/___.-`___.-'=====
//                       `=---='
//
//
//     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//               佛祖保佑         永无BUG

docker配置

  • vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://192.168.1.100:2375 -H unix:///var/run/docker.sock

找到这句话改为这样,个人理解应该是加一个远程调用接口方便jenkins远程调用,一定记得配置防火墙开放2375 tcp端口,不然jenkins联动不了

  • 配置jenkins获取docker命令执行权限
    这里的主要目的是让jenkins能够执行docker build,pull,push等命令,否则会报错。网上吧啦了一大堆,全是什么加入root用户组什么的,测试全不靠谱,正确方法应该是加入docker用户组
sudo usermod -aG docker jenkins

测试成功方法很简单,切换到jenkins用户执行一下docker命令就可以了
docker配置搞定

jenkins配置

jenkins配置加速

耐心党可以跳过这一节等他个天荒地老。。。反正真的很慢,一度觉得web页面是不是张图片。。。

sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /var/lib/jenkins/updates/default.json
  • 强调一下我jenkins家目录是/var/lib/jenkins,不在这儿的请更换合适的位置,请不要无脑复制粘贴
  • 这两句话的意思是替换jenkins官方下载地址到清华源(感谢清华的大佬们),并将网络连通监测由ping google换成ping baidu,执行完记得重启
systemctl restart jenkins

jenkins安装插件

安装位置是这儿
不得不说,英语不好真的很吃亏。。。
在这里插入图片描述

  • 我安装了这四个插件,docker安装的插件包括联动和构建模块,具体功能自己研究
    在这里插入图片描述
  • gitlab的话我安装了这几个模块,主要配置自动拉取需要webhook,不安装无法自动获取
    在这里插入图片描述
  • 钉钉插件就不用说了,报警提示必备,短信界的爱德华剪刀手,免费好用。。。
  • 咋办,不想写了,这几句话写了一早上,比撸代码还累…
  • Go on…多图警告

配置gitlab_webhook钩子

创建一个项目,然后选择右边的config,建议分项目单独配置,全局配置偷懒适当使用
在这里插入图片描述
在这里插入图片描述

  • 记录下来这两个参数,分别是gitlab_webhook的地址和密匙
    转到gitlab配置
    在这里插入图片描述
    在这里插入图片描述
  • 把前面那两个参数填进来,下面框根据需求勾选
    在这里插入图片描述
  • 记得测试推送事件查看是否成功
  • 钉钉推送提醒
    在这里插入图片描述
  • 钉钉添加gitlab机器人
    在这里插入图片描述
  • gitlab添加钉钉机器人API

钉钉报警配置

  • 钉钉配置API机器人
    在这里插入图片描述
  • 记住webhook地址并选择安全设置为加签模式
    在这里插入图片描述
    在这里插入图片描述
  • 在这里填写钉钉webhook和加签的密匙串

配置docker远程连接

在这里插入图片描述
在这里插入图片描述

  • 这儿的docker_url对应上方的docker安装时配置的远程调用接口,记得写法一定对应,不能一边127.
    0.0.1:2375一边192.168.1.100:2375,会出现test不通的问题。还有就是玄学了,打死测不通最后无奈重装docker插件才通,如果大家也遇到这个问题不妨试试,也算是有缘分。。。

docker-build-step插件配置

在这里插入图片描述

  • 这里插一句话,jenkins有两种配置,一种是全局配置,全局都生效,在首页进入;一种是项目配置,得先有项目才能配置,上面的是项目配置
    在这里插入图片描述
  • gitlab拉取代码设置,分别填写gitlab地址和密匙
    在这里插入图片描述
  • 这里Scope推荐选择Globe全局配置,一次配置多个项目可用,gitlab密匙都可以用
    在这里插入图片描述
  • 打马赛克的都是无关紧要的东西,这是整个文章的核心
    在这里插入图片描述
  • 先说说docker-build-step功能,从上往下依次是
  • 提交容器更改
  • 启动并在容器中执行命令
  • 创建容器(模板化dockerfile)看起来是这样,有点像docker-swarm的格式
  • 在容器中执行命令
  • 构建镜像(通过Dockerfile)
  • 终止容器
  • 拉取容器
  • 推送容器
  • 懒的写了,下面的英文单词很简单,自己翻译。。。
  • 这里说说构建容器通过Dockerfile
    在这里插入图片描述
  • $WORKSPACE 指的是家目录下的WORKSPACE文件夹(/var/lib/jenkins/workspace/项目名称)
  • tag 打标签,熟悉docker_hub的都知道,镜像需要改名为仓库地址+命名空间+项目名称格式才可以成功上传
  • $BUILD_NUMBER 变量,每次提交自动加1,姑且当版本号用,不是很正规的话它也够用
  • 找不到官方文档了,还有很多变量可以用,大家可以去找找
  • Dockerfile的话直接和代码一起提交,所有它就在根目录,大家也可以自己设置位置,附一张我的代码目录结构图和Dockerfile文件
    在这里插入图片描述
  • 分别是git隐藏目录,前端代码(已编译),Docekrfile,nginx两个配置文件和supervisord配置文件
  • Dockerfile
FROM ubuntu:16.04

MAINTAINER JohnsonCydia

RUN mkdir -p /SRP/Html/Html_code && \
    mkdir -p /SRP/Html/Html_logs && \
    mkdir -p /SRP/Html/Html_conf && \
    rm -rf /etc/apt/sources.list && \
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main" >> /etc/apt/sources.list && \
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial main" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main" >> /etc/apt/sources.list && \
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/ubuntu/ xenial universe" >> /etc/apt/sources.list && \
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe" >> /etc/apt/sources.list && \
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-security main" >> /etc/apt/sources.list && \
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe" >> /etc/apt/sources.list && \
    apt update && \
    apt -y install nginx && \
    apt -y install supervisor && \
    rm -rf /etc/nginx/nginx.conf && \
    rm -rf /etc/nginx/sites-available && \
    rm -rf /etc/supervisor/supervisord.conf

COPY ./nginx.conf /etc/nginx/

COPY ./supervisord.conf /etc/supervisor/

COPY ./html.conf /SRP/Html/Html_conf/

COPY ./Html_code /SRP/Html/Html_code/

EXPOSE 80 443

CMD ["supervisord","-c","/etc/supervisor/supervisord.conf"]

  • 其实没多少,配置了个阿里云加速,话说有谁知道Dockerfile里多行导入的方式,EOF实测用不了。。。

配置上传镜像

在这里插入图片描述
在这里插入图片描述

  • 这儿填写那个docker login后面那个账号和密码,不是阿里云主账号密码

整体测试

push
Dev
github
DingDing_API
jenkins
DingDing_API
docker-build-step
DingDing_API
docker-push
DingDing_API
Aliyun

然后上面一长串表。。。说人话就是
在这里插入图片描述

  • 写了6个小时,中间吃了个饭睡了个午觉,可能思路会有所中断,前言不搭后语,大佬们轻喷。。。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值