还在手动部署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
相关文章
|
4月前
|
Kubernetes Java Docker
利用(K8S)配合Docker部署jar包
通过Docker打包并部署到Kubernetes(K8S)集群的过程。首先,通过SpringBoot生成jar包,接着在K8S环境中创建并编辑Dockerfile文件。随后构建Docker镜像,并将其推送到镜像仓库。最后,通过一系列kubectl命令(如get pods、get svc、logs等),展示了如何在K8S中管理应用,包括查看Pod状态、服务信息、Pod日志以及重启Pod等操作。
239 3
|
3月前
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
808 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
6月前
|
Java
[JarEditor]可直接修改jar包的IDEA插件
### 修改JAR包变得更简单:JarEditor插件简介 **背景:** 开发中常需修改JAR包中的class文件,传统方法耗时费力。JarEditor插件让你一键编辑JAR包内文件,无需解压。 **插件使用:** 1. **安装:** 在IDEA插件市场搜索JarEditor并安装。 2. **修改class:** 打开JAR文件中的class,直接编辑,保存后一键构建更新JAR。 3. **文件管理:** 右键菜单支持在JAR内新增/删除/重命名文件等操作。 4. **搜索:** 使用内置搜索功能快速定位JAR包内的字符串。
596 2
[JarEditor]可直接修改jar包的IDEA插件
|
6月前
|
弹性计算 Java Serverless
Serverless 应用引擎操作报错合集之上传自定义JAR包,启动时报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
Java Linux Shell
【Azure 应用服务】部署Jar到App Service for Linux,因启动命令路径配置错误而引起:( Application Error 问题
【Azure 应用服务】部署Jar到App Service for Linux,因启动命令路径配置错误而引起:( Application Error 问题
|
5月前
|
Java Spring
【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)
【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)
|
5月前
|
Java Windows
【Azure 应用服务】App Service 部署txt静态文件和Jar包在不同目录中的解决办法
【Azure 应用服务】App Service 部署txt静态文件和Jar包在不同目录中的解决办法
|
5月前
|
Java Spring
【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)
【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)
|
6月前
|
关系型数据库 Java 分布式数据库
PolarDB产品使用问题之部署到服务器上的Java应用(以jar包形式运行)无法连接,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。