还在手动部署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')
    • 源码管理: 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
相关文章
|
1月前
|
Java 测试技术 Maven
maven 打jar包:mvn clean package
maven 打jar包:mvn clean package
49 7
|
11天前
|
Java jenkins 持续交付
Java项目jar包启动脚本,适用jenkins或定时任务或手动执行
Java项目jar包启动脚本,适用jenkins或定时任务或手动执行
|
28天前
|
Oracle Java 关系型数据库
实时计算 Flink版操作报错合集之本地打成jar包,运行报错,idea运行不报错,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
38 6
|
1月前
|
Java Maven
向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录(一)
向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录
26 0
|
20小时前
|
Oracle 关系型数据库 Java
实时计算 Flink版产品使用问题之源码 deploy,生成带有时间戳的jar包,如何修改配置信息
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3天前
|
Oracle Java 关系型数据库
各种数据库对应的jar包、驱动类名和URL格式
各种数据库对应的jar包、驱动类名和URL格式
23 0
|
3天前
|
IDE 数据可视化 Java
Java基础6-Java文件和Java包结构和常用的jar包(二)
Java基础6-Java文件和Java包结构和常用的jar包(二)
10 0
|
3天前
|
Java Unix 编译器
Java基础6-Java文件和Java包结构和常用的jar包(一)
Java基础6-Java文件和Java包结构和常用的jar包(一)
14 0
|
7天前
|
存储 DataWorks 安全
DataWorks产品使用合集之jar包格式是什么
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
14 6
|
7天前
|
SQL DataWorks 监控
DataWorks产品使用合集之如何创建一个函数并使用JAR包里面的方法
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
12 3