Jenkins
-
Jenkins:
- 开源软件我的项目
- 基于 Java 开发的一种继续集成工具
- 用于监控继续反复的工作
-
旨在提供一个凋谢易用的 软件平台, 便于软件的继续集成
基于 Docker 装置 Jenkins
与继续集成中的 GitLab Runner 应该散布在不同的服务器上
- 创立工作目录: /usr/local/docker/jenkins
-
因为要在 docker-compose.yml 中应用 volumes 创立数据卷, 执行命令赋予 Docker 数据卷权限:
chown -R 1000 /usr/local/docker/jenkins/data
-
在 /usr/local/docker/jenkins 创立 docker-compose.yml
version: '3.1' services: jenkins: restart: always image: 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.yml 文件启动 Jenkins:
docker-compose up -d
-
解锁 Jenkins: Jenkins 第一次启动时须要输出初始密码解锁装置流程, 应用命令查看初始密码
docker logs jenkins
-
应用自定义插件的形式装置 Jenkins:
Dashboard View Publish Over SSH Extend Choice Parameter 也能够在 Jenkins 运行界面中的 Manage Jekins 中的 Manage Plugins 自定义下载安装
配置 Jenkins
配置 JDK&Maven
- 上传 JDK 和 Maven 的 tar 包到服务器(容器的数据卷目录)
- Manage Jekins -> Global Tool Configuration
-
装置 JDK,== 留神:== JAVA_HOME 的门路是 == 宿主机 == 目录:(宿主机是绝对宿体而言的)
/var/jenkins_home/jdk1.8.0_152
-
装置 Maven,== 留神:== MAVEN_HOME 的门路是 == 宿主机 == 目录:(宿主机是绝对宿体而言的)
/var/jenkins_home/apache-maven-3.5.3
装置动静参数插件(Extend Choice Parameter)
- 目标是不便在做我的项目构建时依照版本进行构建
-
反对一键回滚
应用 Jenkins 实现继续交付
- Jenkins 继续交付流程与 GitLab Runner 继续集成流程相似, 只是 GitLab Runner 默认曾经配置好 Git,Jenkins 须要配置多一个 GitLab 的 SSH 登录
-
Jenkins 继续交付流程:
- 拉取代码
- 打包构建
- 上传镜像
- 运行容器
-
保护清理
配置 Jenkins 的 GitLab SSH 免密登录
-
交互式进入 Jenkins 容器
docker exec -it jenkins /bin/bash
-
生成 SSH KEY
ssh-keygen -t rsa -C "email@example.com"
-
查看公钥
cat /var/jenkins_home/.ssh/id_rsa.pub
- 复制公钥到 GitLab
-
克隆我的项目获取到 known_hosts 文件
配置 Publish Over SSH
在 Jenkins 治理页面中零碎设置减少 SSH Server 配置
-
Name
测试环境 -192.168.32.255
-
Hostname
192.168.32.255
-
Username
root
-
Remote Directory(宿主机中可操作的目录)
/usr/local/jenkins
-
高级:Password
123456
-
高级:Port
22
-
高级:Timeout(ms)
300000
继续交付依赖治理我的项目
第一步是实现所有我的项目的父工程依赖我的项目的继续交付
- 我的项目创立标签: 在 GitLab 中给我的项目创立标签(版本号)
- 创立 Maven Project: 在 Jenkins 中新建一个基于 Maven 的工作
-
配置 Maven Project: 配置第一次构建 初始化
- General: 抛弃旧的构建
-
源码治理: Git
- Repository URL: ssh://git@192.168.32.255:8000/myshop/myshop-dependencies.git
- Branches to build: */master
-
第二次配置 Maven Project 开始应用
-
General: 参数化构建过程
-
Extended Choice Parameter:
- name: RELEASE_VERSION
- Basic Parameter Types: Parameter Type
-
Choose Source for Value:
-
Groovy Script
def var_key=['bash','-C','cd/var/jenkins_home/workspace/myshop-dependencies;git pull >/dev/null;git remote prune origin>/dev/null;git tag -l|sort -r |head -10'] var_key.excute().text.tokenize('\n')
-
-
- 源码治理: none
-
Post Steps: Add post-build step
-
Excute shell
echo $RELEASE_VERSION cd /var/jenkins_home/workspace/myshop-depedencies git checkout $RELEASE_VERSION git pull origin $RELEASE_VERSION mvn clean package
-
-
Add post-build step: Send files or execute commands over SSH
-
SSH Publishers:
-
SSH Server:
- name: 测试环境 -192.168.32.255
-
Transfers:
- Source files: /*.jar, docker/ (近程传送文件)
- (Remove prefix): target(删除近程传送过程中前缀为 target 的文件, 只实用于在上传过程中删除, 不会删除曾经上传胜利到近程服务器上的文件)
- Remote Directory: myshop-service-user-provider(近程创立目录, 并把文件近程传送到此目录中)
-
Exec command (在近程服务器进行命令操作: 进入 provider 目录, 拷贝我的项目 jar 包到 docker 目录, 进入 docker 目录, 构建我的项目 jar 包的镜像, 上传镜像, 进行容器, 启动容器, 清理虚悬镜像)
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.32.133:5000/myshop-service-user-provider:v1.0.0 docker push 192.168.32.133:5000/myshop-service-user-provider:v1.0.0 docker-compose down docker-compose up -d docker image prune -f
-
-
-
- 保留
- Build with Parameters