还在手动部署jar包吗?快速掌握Jekins安装,教你使用jekins的实现持续交付
        【摘要】 本文主要介绍了持续集成工具Jekins的使用,通过安装使用Jekins,实现对项目的持续集成和持续部署,监控持续重复的工作,将人员成本从项目部署的工作中开放出来。这篇文章从项目的配置,插件的安装,Jekins的配置一步一步详细说明的Jekins的使用。通过这篇文章,了解熟悉Jekins对微服务架构项目持续集成,持续部署的相关操作。
    
    
    
    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') 
 - Extended Choice Parameter: 
       
 - 源码管理: 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 
 
 - SSH Server: 
         
 
 - SSH Publishers: 
       
 
 - General: 参数化构建过程 
     
 - 保存
 - Build with Parameters
 
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                cloudbbs@huaweicloud.com
                
            
        
        
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)