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
发表回复