亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Jenkins實現Docker Containers的CI

標簽:
Docker

简介

前几天刚刚把Jenkins运行在Docker中,想着怎么实现Devops的CI,发现无法Webhook自动upgrade,就想个简单粗暴的方法实现。

环境介绍

1.Jenkins运行在Docker里面(docker里面执行docker命令请看上一遍文章),有Rancher管理Docker,源码有Gitlab管理,Docker Image发布到Harbor上面。

Harbor 安装

请参考Harbor官方文档

Rancher 安装

请参考Rancher官方文档

SSH无密钥登录

  1. ssh-keygen -t rsa -P ''    -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
    它在/home/<username>.ssh目录,.ssh下有id_rsa和id_rsa.pub。

  2. 在A机器上,scp id_rsa.pub 到B机器上/home/<username>.ssh目录下

  3. B机器上与A机器同用户下.ssh目录下执行:cat id_rsa.pud >> authorized_keys

  4. B机.ssh目录执行:chmod 600 authorized_keys

  5. 在A机器上登录B机器:ssh B

Jenkins配置

  1. 安装Docker Build and Publish 插件

  2. Jenkins的Job配置Docker Build and Publish


    webp

    image.png

  3. 调用远程shell升级Docker Containers

    webp

    image.png


    图片中1的远程脚本为清理Jenkins所在宿主机上旧版本的Docker Images
    图片中2的远程脚本为清理部署机器上面的旧版本Docker Images和升级Docker Images

  4. shell脚本
    1.上步骤图片1中shell

build_tag=$1oldtag=$(($build_tag - 2))
docker rmi $(docker images|grep "<docker images name>   $oldtag"|awk '{print $3}') 1>/dev/null 
if [ $? -eq 0 ];then
     echo "Docker RMI Images SUCCESS"else
    echo  "Docker RMI Images FAILED"fi

2.上步骤图片2中shell

  #/bin/shbuild_tag=$1echo $build_tagoldtag=$(($build_tag - 1))
v_number=$(docker images|grep "<docker image>   $oldtag"|awk '{print $2}')echo $v_numberdocker ps |grep "<containers name>" 1>/dev/null 2>/dev/nullif [ $? -eq 0 ];then
    docker stop <containers name> && docker rm <containers name>    if [ $? -eq 0 ];then
        docker rmi $(docker images|grep "<docker image>   $oldtag"|awk '{print $3}') 1>/dev/null 
    else 
        echo "Docker RMI Images FAILED"
    fielse
    echo  "Docker RMI Images FAILED"fidocker pull <docker image>:$build_tag 1>/dev/nullif [ $? -eq 0 ];then
        docker run -d --restart=always -e DATABASE_HOST=<db host> \
        -e DATABASE=<db-name> \
        -e DATAUSER=postgres \
        -e DATAPASSWD=<passwd> \
        -p 8087:8080 --name <containers name> \
           <docker image>:$build_tag
        if [ $? -eq 0 ];then
               echo "Docker Containers <containers name> RUN SUCCESS"
        else
               echo "Docker Containers <containers name> RUN FAILED"
        fielse 
        echo "DOCKER PULL FAILED"fi



作者:Aapon
链接:https://www.jianshu.com/p/a53b38f79364


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消