Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器 精选 原创 三和大神梁某 2018-11-15 14:52:41 博主文章分类:Gitlab&Jenkins ©著作权 文章标签 jenkins pipeline 利用 tag 文章分类 运维 ©著作权归作者所有:来自51CTO博客作者三和大神梁某的原创作品,请联系作者获取转载授权,否则将追究法律责任 环境 测试部署主机IP:192.168.1.1 Jenkins主机IP:192.168.1.2 Harbor主机IP:192.168.1.3 Gitlab主机IP:192.168.0.10 系统信息: 系统:CentOS 7.5 内核:4.18.7-1.el7.elrepo.x86_64 Docker版本:18.09 docker-compose版本:1.23.1 有道笔记原文,为了防止复制粘贴出来的代码格式有误~~~~ 所有主机的Docker安装方式 wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce mkdir /etc/docker/ cat << EOF > /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"], "live-restore": true, "default-shm-size": "128M", "max-concurrent-downloads": 10, "oom-score-adjust": -1000, "debug": false } EOF systemctl enable docker systemctl restart docker 安装Gitlab 参考这篇文章: bigboss/2129284 Docker方式安装: https://github.com/JyBigBoss/docker-compose/blob/master/gitlab/docker-compose.yaml 安装Harbor 参考: bigboss/2316525 安装Jenkins yum install -y python-pip pip install docker-compose cd $HOME && mkdir jenkins && cd jenkins wget https://raw.githubusercontent.com/JyBigBoss/docker-compose/master/jenkins/Dockerfile wget https://raw.githubusercontent.com/JyBigBoss/docker-compose/master/jenkins/docker-compose.yaml docker-compose up -d Jenkins需要安装的插件 Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication Gitlab、Git Parameter、Git Tag Message、Pipeline、docker-build-step、Docker Pipeline 创建git仓库 在web页面创建一个test仓库,并在在仓库中新建一个index.html文件 cd $HOME git clone git@192.168.0.10:yfg/test.git cd test/ cat << EOF > index.html Test 123 EOF git add . git commit -m 'add index.html' git push #创建两个tag git tag v1 -m 'version:1' git push --tags git tag v2 -m 'version:2' git push --tags 在Harbor上创建一个test仓库 配置Jenkins 打开Jenkins的设置页面,配置Publish over SSH插件 创建一个流水线(pipeline)项目 编写pipeline脚本,下面是这次测试发布用到的脚本 Docker Pipeline插件用法:https://jenkins.io/zh/doc/book/pipeline/docker/ 完整的pipeline脚本 node { stage(' Git clone ') { git branch: 'master', credentialsId: 'a4a81561-8bc0-426e-89f9-b4d4aa1925d6', url: 'git@192.168.0.10:yfg/test.git' env.check_to_tag="$TAG" sh '[ -n "${check_to_tag}" ] && git checkout ${check_to_tag} || { echo -e "切换至指定的tag的版本,tag:${check_to_tag} 不存在或为空,请检查输入的tag!" && exit 111; }' } stage("Create Dockerfile"){ sh '''cat << EOF > Dockerfile FROM python:3.7.1-alpine RUN mkdir /test WORKDIR /test COPY ./ /test EXPOSE 8000 CMD ["python","-m","http.server"] EOF''' sh 'cat Dockerfile' } stage("Create docker-compose.yaml "){ sh '''cat << EOF > docker-compose.yaml version: "2.4" services: http: image: registry.lotbrick.com/test/http:${check_to_tag} container_name: python-http_server ports: - "80:8000" restart: always EOF''' sh 'cat docker-compose.yaml' } stage('Build Image And Push to registry') { //withRegistry('仓库地址','jenkins凭据ID') docker.withRegistry('https://registry.lotbrick.com', '9ffa7ef5-38c6-49da-8936-ec596359be56'){ //build当前目录(workspace)下的Dockerfile def BuildImage = docker.build("registry.lotbrick.com/test/http:${check_to_tag}") //Push刚才Build出来的镜像 BuildImage.push() } } stage('Depoly'){ //调用Publish Over SSH插件,上传docker-compose.yaml文件并且执行deploy脚本 sshPublisher(publishers: [sshPublisherDesc(configName: 'jenkins_pipeline_test_deploy', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '/bin/bash /root/deploy/deploy.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/root/deploy', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'docker-compose.yaml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } } 生成流水线脚本的方法 Jenkins凭据ID获取方法 发布脚本:depoly.sh:放到要部署代码的主机的/root/deploy目录下 #!/bin/bash echo '正在更新版本......' cd /root/deploy IMAGE_NAME='registry.lotbrick.com/test/http' DOCKER_TAG=`awk -F ':' '/.*image/{print $NF}' docker-compose.yaml` echo -e "\n" docker-compose pull && docker-compose up -d if [ "$?" == 0 ];then echo '删除旧的image' OLD_IMAGE=`docker images | grep $IMAGE_NAME | awk '{print $2,$3}' | grep -v "${DOCKER_TAG}" |awk '{print $1}'` for i in $OLD_IMAGE;do docker rmi http:$i done else echo "更新版本失败!!!" exit 111 fi 测试发布 第一次发布 再来一次 #感觉没玩够,再传个代码测试一回 cd $HOME git clone https://github.com/HFIProgramming/mikutap.git \cp -r mikutap/* test/ cd test git add . git commit -m 'add mikutap page' git tag v3 -m 'add mikutap page' git push --tags 赞 收藏 评论 分享 举报 上一篇:Docker私有仓库Harbor v1.6.1安装 下一篇:kubernetes搭建rook-ceph 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 Docker部署Jenkins+Pipeline Git+Maven+Pipeline+Jenkins部署项目持续集成 git docker Jenkins pipeline maven git clone 与 git 安装 git clone 与 git 安装 git 安装程序 自定义 Ansible学习笔记16:标签tag 在 Ansible Playbook 中,tags 是一种非常有用的功能,允许指定哪些任务应该被执行,哪些任务应该被跳过。这对于大型 playbook,特别是只需要执行其中的一部分任务时,非常有用。Tags 的用法:在 playbook 的 YAML 文件中,你可以为每个任务分配一个或多个标签。标签是一个简单的字符串,可以是你选择的任何名称。以下是一个简单的示例,展示了如何在 playbook 中 ansible git 切换tag git查看tag命令:git taggit切换到taggit checkout tag_name 此时git可能会提示你当前处于“detachedHEAD”状态。因为t git GIT : IDEA切换到某个tag 背景看一本presto的书,发现版本用的是presto-0.107这个版本。然后我去Apache clone下源码,发现分支只有几个,但是下载页面却有很多不同的版本 然后看Tag发现有很多。然后我现在需要 0.107版本的,发现上面没有,百度一下可以git到某个TAG点击后填入你的tag名称,我填写的是 0.107,然后就可以git到相关的代码了。但是如过你想提交到一个新的分 git .net d3 git切换tag并提交代码 git切换tag并提交代码 由于公司线上也有多套环境,每次发版本之后会打tag,但是某个环境可能不是master的代码,修复bug时就需要以tag为基准分支作为热修复分支。 tag是只读分支,所以需要重命名为新分支 1. fetch 线上所有的tag到本地 git fetch --tags 2. 切 线上多环境 tag git 重命名 热修复 Git 回退版本查看切换分支和tag Git回退版本查看所有的历史版本,获取你git的某个历史版本的idgitlog恢复到历史版本gitresethardfae6966548e3ae76cfa7f38a461c438cf75ba965把修改推到远程服务器gitpushfuoriginmastergitreset(–mixed)HEAD1回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交 git 暂存区 远程服务器 Git Tag Git Tag git 远程分支 git 打tag 查看Tag //podspec文件中获取Git版本控制的项目需要tag号,$ git tag -m "first release" "0.1.0" $ git push --tags git 版本控制 Git之tag 1 tag相关命令1) 打上taggit tag v1.0.0git tag -a v1.0.0 -m 'info'2) 查看taggit tag3) 切换taggit checkout tagname4) 删除taggit tag -d v1.0.05) 推送远程推送单个taggit push origin v1.0.0推送所有t... git tag 推送 编程 Git——git tag 标签管理 摘要同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签。开发中在发布某个软件版本(比如v1.0 等等)的时候,通常使用版本库软件命令来对某一版本打上一个标签,以方便标识。命令描述git tag tag_name新建标签 默认为HEADgit tag -a tag_name -m 'xxx'添加标签并指定标签描述信息git tag查看所有标签git tag -d tag_name删除 git 推送 新建标签 【git】git tag常用指令 1.创建一个taggit tag [-a] tagname 2.列出所有taggit tag 3.创建一个加描述的taggit tag -a tagname [-m <msg>] 4.删除本地taggit tag -d tagname 5.列出远程所有tag,注意git版本1.7(包括1.7)一下后边需要加上git仓库地址git ls-remot git tag git打tag 今天jira上收到一个SQA:上线未打tag整理下如何对已上线的代码打tag1.列出当前已有的tag:gittagv1.0.3v1.0.4-201703081020v1.0.5-201704141453v1.0.6-201704151447v2.3.12.列出要查看的tag匹配,可以gittag-lv1.0.*v1.0.3v1.0.4-201703081020v1.0.5-201704141453 tag git Git tag管理 文章目录1. 什么是tag2. tag命令 2.1 创建tag 2.2 查看标签 2.3 删除标签 2.4 检出标签3. IDEA下操作tag3.1 创建tag3.2 检出特定tag1. 什么是tagtag是git版本库的一个标记,指向某个commit的指针,tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 …这样的标签。2. tag命令 git 推送 ide git branch tag git checkout tag_name切换taggit checkout -b branch_name tag_nametag上创建分支tag 和branch的区别Git tag是一系列commit的中的一个点,只能查看,不能移动。branch是一系列串联的commit的线。git tag的用法我们常常在代码封板时,使用git 创建一个tag ,这样一个不可修改的历史代码版本就像被我们封存起 git 运维 电子邮件地址 git切换到某个tag, 从tag切换回当前分支 git clone 整个仓库后使用,以下命令就可以取得该 tag 对应的代码了 git checkout tag_name 但是,这时候 git 可能会提示你当前处于一个“detached HEAD" 状态。(detached 分离的) 因为 tag 相当于是一个快照,是不能更改它的代码的。 直接使 git 解决方法 远程分支 其他 git 切换远端仓库tag git远程仓库地址迁移 最近,装了git的本地服务器坏掉了, 没办法只能临时进行仓库的迁移 保证项目正常进行在项目的根目录执行右键执行查询当前仓库的远程地址git remote -v 查看现有远程仓库的地址url修改及添加远程地址1.修改命令 git remote set-url origin URL 更换远程仓库地址,把URL更换为新的url地址2.先删后加git remote rm origin git 切换远端仓库tag 两个git库之间迁移 git git仓库 svn git 创建tag , 查看tag , 删除tag 2157 git tag //查看tag 2158 git tag test_tag c809ddbf83939a89659e51dc2a5fe183af384233 //在某个commit 上打tag 2159 git tag 2169 git push origin test_tag //!!! git 推送 删除线 数据 git tag用法 git tag用法 git d3 删除线 推送 git tag标签 命令git push origin <tagname>可以推送一个本地标签; 命令git push origin --tags可以推送全部未推送过的本地标签; 命令git tag -d <tagname>可以删除一个本地标签; 命令git push origin :refs/tags/<tagnam ... git 推送 IT