Docker搭建jenkins实现持续集成持续交付

二、基于docker-compose安装jenkins

version: '3.1'
services:
  jenkins:
    restart: always
    image: jenkinsci/jenkins
    container_name: jenkins
    ports:
      # 发布端口
      - 8080:8080
      # 基于 JNLP 的 Jenkins 代理通过 TCP 端口 50000 与 Jenkins master 进行通信
      - 50000:50000
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./data:/var/jenkins_home

若通过docker-compose up过程中出现Docker 数据卷问题,可通过下面命令结局:

chown -R 1000 /usr/local/docker/jenkins/data

1. Jenkins 首次启动

第一次启动jenkins时,可以通过docker logs jenkins 查看初始密码。

cat /usr/local/docker/jenkins/data/secrets/initialAdminPassword

2. 自定义安装插件

image

一定要安装的插件

Dashboard View
Publish over SSH
Maven Integration plugin
Locale 本地化插件 (显示中文)
Choice Parameter 动态参数插件(支持一键回滚)

3. 安装本地化插件后的设置

系统管理-》系统设置-》 Locale Default -> 输入 zh_CN ->Ignore browser preference and force this language to all users(打√)

上传javamaven 并解压

javamaven的jar上传到jenkins的宿主机路径:/usr/local/docker/jenkins/data目录。并进行解压。

解压:

tar -zxvf xxx.tar.gz

删除压缩包:
rm -fr xxx.tar.gz

4. 在jenkin页面配置jdkmaven

系统管理-》global tool configuration(通用工具配置)-》JDK 安装 -》新增jdk

JDK 别名: JDK 1.8.0.152 X64

JAVA_HOME: 系统管理-》系统设置-》主目录:/var/jenkins_home/jdk1.8.0_152

安装maven

Name :Apache Maven 3.5.3

MAVEN_HOME: /var/jenkins_home/apache-maven-3.5.3

保存

5. 配置 Jenkins 的 GitLab SSH 免密登录

  • 交互式进入 Jenkins 容器

docker exec -it jenkins /bin/bash

  • 生成 SSH KEY

ssh-keygen -t rsa -C "your_email@example.com"

  • 查看公钥

cat /var/jenkins_home/.ssh/id_rsa.pub

  • 复制公钥到 GitLab

gitlab -》 设置 -》 SSH秘钥

  • 手动克隆一次项目,该步骤的主要作用是为了生成和服务器的验证信息

克隆之前,cd,后再 git clone gitlab项目地址
此操作是为了拿到 cd .ssh/目录下的known_hosts文件。

6. 配置 Publish over SSH

  • 系统管理-》系统设置-》Publish over SSH
image

其中 Remote Directory 是指 Jenkins 可以在目标服务器操作的目录。
在配置的远程服务器上配置usr/local/jenkins目录。

  • 测试是否能够正常通信

Test Configuration

7. 在jenkins配置项目

  • New Item -》 myshop-dependencies-》 丢弃旧的构建 :10 -》 源码管理: git : 项目的gitlab地址 -》 立即构建

  • gitlab为项目打标签(参数化构建,为了版本回滚)

进入项目-》新建标签 :v1.0.0

8. 配置正式构建

项目-》配置-》源码管理:None;
参数化构建过程-》添加参数:Extended Choice Parameter -》 Name: RELEASE_VERSION-》 Base Parameter Types: Single Select -》Choose Source for Value:Grovy Script :

def ver_keys = [ 'bash', '-c', 'cd /var/jenkins_home/workspace/myshop-operation;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 ' ]
ver_keys.execute().text.tokenize('\n')

Post Steps(构建步骤)-》Add post-build step -》 Excute shell

echo $RELEASE_VERSION
cd /var/jenkins_home/workspace/myshop-dependencies
git checkout $RELEASE_VERSION
git pull origin $RELEASE_VERSION
mvn clean install

9. Send files or execute commands over SSH(发送文件或执行远程命令)

  • Source files:需要传输到远程目标服务器的文件
    **/*.jar,docker/**
  • Remove prefix:删除前缀。比如传输 **/*.jar,我们打包的 .jar 文件是在target 目录下的,传输时会一并创建target 目录,如果不希望创建 target 目录,则可以使用该参数屏蔽掉这些前缀文件夹。
  • Remote directory:在远程目标服务器创建操作目录myshop-service-user-provider
  • Exec command:在远程目标服务器执行控制台命令
cd /usr/local/jenkins/myshop-service-user-provider
cp target/myshop-service-user-provider-1.0.0-SNAPSHOT.jar docker
cd docker
docker build -t 192.168.10.133:5000/myshop-service-user-provider:v1.0.0 .
docker push 192.168.10.133:5000/myshop-service-user-provider:v1.0.0
docker-compose down
docker-compose up -d
docker image prune -f

准备工作完成之后就可以对项目进行构建,参数化构建时,第一次构建时,要确认使用groovy 脚本进行构建

  • 构建项目-》Build With Parameters -》 In-Process Script Approval-》Approve -》 然后再重新进行构建
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353