使用 Jenkins 实现 EDAS 持续集成

简介: 使用 Jenkins 实现 EDAS 持续集成

准备工作

在开始持续集成之前,需要完成下述的准备工作。

  1. 获取阿里云的 Access Key ID 和 Access Key Secret。

    1. 使用已经开通了 EDAS 服务的主账号登录阿里云官网。
    2. 进入 Access Key 控制台,创建 Access Key ID 和 Access Key Secret。

    AccessKey 控制台

  2. 在 EDAS 控制台创建应用。

    在使用 Jenkins 自动部署应用之前,需要先在 EDAS 控制台中创建一个可以部署的应用。

    1. 登录 EDAS 控制台
    2. 参考发布应用 ,创建应用。

      如果已经创建了应用,请忽略此步。 
      
    3. 在左侧导航栏中单击应用管理。找到您在上一步中创建的应用并单击进入详情页面,获取应用 ID 的字段内容。

    获取应用 ID

  3. 使用 GitLab 托管您的代码。

可以自行搭建 Gitlab 或者使用阿里云 Code

本文使用通过自行搭建的 GitLab 做演示,关于 Gitlab 的更多信息请参考 GitLab

  1. 了解并使用 Jenkins。

关于 Jenkins 的更多详细信息请参考 Jenkins 官网

目前,阿里云还没有合适的产品替代 Jenkins,不过即将推出基于 Jenkins 的 DevOps 平台,请持续关注。

创建持续集成

创建持续集成主要包含以下三个步骤:

安装和配置 Jenkins

  1. 安装 Jenkins。

安装 Jenkins,请参考 Jenkins。 如已安装则请忽略此步。

  1. 在 Jenkins 服务器安装 Python 运行环境(仅支持2.7及以上版本,不支持 Python3)。

安装 Python,请参考 Python。 如已安装请忽略此步。

  1. 在 Jenkins 中安装 Git 和 GitLab 插件。

在 Jenkins 控制台的菜单栏中选择系统管理 > 插件管理,安装插件。

  • 安装 GIT Client Plugin 和 GIT Plugin 插件可以帮助 Jenkins 拉取 Git 仓库中的代码。
  • 安装 Gitlab Hook Plugin 插件可以帮助 Jenkins 在收到 Gitlab 发来的 Hook 后触发一次构建。

安装 Git 和 Gitlab 插件

  1. 安装 JDK 和 Maven。

在 Jenkins 控制台的菜单栏中选择系统管理 > 系统设置,参考下图中的标示为 Jenkins 安装 JDK 和 Maven。

安装 JDK  和 Maven

  1. 生成 RSA 密钥对,导入 GitLab 和 Jenkins。 实现 Jenkins 拉取 GitLab 代码时的认证。

    1. 参考 GitLab 文档,创建 RSA 密钥对。

    GitLab 控制台

    1. 进入您的项目的 GitLab 首页,在菜单栏选择 Settings > Deploy Keys。然后单击 new deploy key 添加 key,导入密钥。

    创建部署密钥

    创建部署密钥2

    1. 通过 RSA 私钥添加 Jenkins 认证。

      1. 在 Jenkin s 首页单击 Credentials 菜单。 单击 Add credentials,在下图页面输入相关信息,单击 OK
      2. 选择 SSH Username with private key 的认证方式。

      按照图例填写 ScopeUserNamePrivate Key 等配置, 将第一步生成 RSA 密钥对中生成的私钥文件拷贝到"/var/jenkins_home/.ssh/id_rsa"文件。 图例中的 Scope、UserName、Private Key 可以根据您的需要来填写。

      Jenkins 认证

  2. 创建 Jenkins 项目。

    1. 在 Jenkins 首页左侧单击新建,创建 Jenkins 项目。

    创建 Jenkins 项目

    1. 配置 Git 项目地址时,勾选上一步中通过 RSA 创建的认证方式。正确配置后如下图所示。“Poll SCM” 必须勾选。

    配置 Jenkins

    1. 配置 Maven 构建和自定义构建动作 Execute shell
      (本文示例通过调用 Shell 命令完成构建后的自动部署,如果您的 Jenkins 是在 Windows 服务器上搭建的,则需要选择 Execute Windows batch command

)。

![配置 Jenkins 2](http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/55479/cn_zh/1497613588427/edas-ci-gitlab-config-jendins-project2.png)

上图中配置的*"python $WORKSPACE/build/build.py"*是一个 EDAS 提供的示例脚本,该脚本主要完成 WAR 包的上传和应用的部署工作。具体如何使用,在接下来的第三步、第四步中有详细说明。

注:如果部署的是 Docker 应用,脚本"python $WORKSPACE/build/build.py" 请使用"python $WORKSPACE/build/dockerbuild.py"

配置 Gitlab 的 Web Hook,实现自动构建

单击 GitLab 工程进入配置("Settings")页面,参考下图进行配置。 图中表示的 Jenkins 服务器地址为您的 Jenkins 服务器的 Web 访问地址如 http://localhost:8080/

配置 Web Hook

配置完成后可以单击页面中的 "Test Hook" 进行测试。

测试 Web Hook

调用 EDAS Open API 进行部署

  1. 下载示例工程 demo.zip
  2. 拷贝示例中的 build 目录到您的 Git 工程中。
  3. 打开 build 目录中的.osscredentials 文件,配置为您在准备工作中获取的 Access Key ID 和 Access Key Secret。

获取 AKSK

  1. 由于部署分为普通应用和 Docker 应用,由于 Open API 不相同,配置方式不同,分别介绍:

    • 普通应用

    打开 build 目录中的 config.json 文件,配置 WAR 包地址,应用 ID 等属性。 配置文件格式满足 JSON 格式。

    config.json

    "host"配置项代表了您访问的 EDAS 的控制台的域名或者 IP,如果您使用的是公有云的 EDAS 服务,则无需修改"edas"的"host"和"port"属性。

    "apps"配置项中可以配置多个应用,也可以只配置一个。 各配置项的含义及获取方式如下:

    • appName:应用名称,准备工作中创建,通过 EDAS 控制台可以取到。
    • appId:应用 ID,准备工作中创建,通过 EDAS 控制台可以取到。
    • userId;您登录阿里云的用户 ID。
    • target:Maven 编译后打出来的 WAR 的本地路径,以 Git 项目为根目录的相对目录。
    • deployGroupId:应用分组 ID。
    • batch:分批发布。
  • Docker 应用

Docker 应用支持 WAR 部署和镜像部署(其中镜像部署只需要在 Jenkins 项目中配置 Maven 构建和自定义构建动作 Execute shell,内容为"python $WORKSPACE/build/dockerbuild.py"。)

打开 build 目录中的 dockerconfig.json 文件,配置 WAR 包地址,应用 ID 等属性。 配置文件格式满足 JSON 格式。

dockerconfig.json

"apps"配置项中可以配置多个应用,上图配置了两个应用,第一个为 Docker 应用 WAR 包部署方式,第二个为 Docker 应用镜像部署方式,各配置项的含义及获取方式如下:

  • appName:应用名称,准备工作中创建,通过 EDAS 控制台可以取到。
  • appId:应用 ID,准备工作中创建,通过 EDAS 控制台可以取到。
  • userId;您登录阿里云的用户 ID。
  • type:部署方式类型。upload 为 WAR 包部署,image 为镜像部署。
  • target:Maven 编译后打出来的 WAR 的本地路径,WAR 部署不能为空。
  • imageUrl:镜像地址。image 部署时,不能为空。
  • packageVersion:部署包的版本号。
  • description:描述信息。
  • deployToStr:应用分组 ID。 为"all"时,代表该应用所有应用实例。
  • regionId:区域 ID,应用所在的区域 ID。
配置正确后,提交变更到 GitLab。

如果上述步骤配置正确,这次提交会触发一次 GitLab Hook。 Jenkins 在接受到这个 Hook 后会构建您的 Maven 项目,并在构建结束时调用 Open API 触发部署。

说明:如为 Docker 镜像部署方式,配置完成后,可手动触发 jenkins 项目。

相关实践学习
使用DAS实现数据库自动SQL优化
本场景介绍如何使用DAS实现数据库自动SQL优化。
SpringMVC框架入门
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts2等。 相关的阿里云产品企业级分布式应用服务 EDAS:企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )等微服务运行环境,助力您的各类应用轻松上云。产品详情: https://www.aliyun.com/product/edas 
目录
相关文章
|
29天前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
48 2
|
17天前
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
1月前
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
54 4
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
70 0
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
165 0
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
88 1
|
3月前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
安装Git、配置用户信息、生成SSH密钥以及在Gitee上创建项目仓库等。
81 0
|
监控 应用服务中间件
如下请问EDAS的这个问题怎么解决? 应用id:2b0e6935-47fb-40ec-a11d-7dac320aecc1 集群中的节点内存是足够的,部署跑不起来 可以帮忙看看吗,以前集群下应用发布都是正常的,最近集群下应用部署基本都报错跑不起来,提示节点不可用
如下请问EDAS的这个问题怎么解决? 应用id:2b0e6935-47fb-40ec-a11d-7dac320aecc1 集群中的节点内存是足够的,部署跑不起来 可以帮忙看看吗,以前集群下应用发布都是正常的,最近集群下应用部署基本都报错跑不起来,提示节点不可用
137 2
|
Kubernetes 负载均衡 Serverless
通过EDAS部署并访问应用
本实验旨在通过使用分布式应用服务EDAS纳管容器服务ASK,掌握微服务应用的部署和访问。
|
Kubernetes Serverless 应用服务中间件
通过EDAS实现K8s微服务应用的金丝雀发布
本实验旨在通过使用分布式应用服务EDAS纳管容器服务ASK,体验微服务应用的部署、访问和高级发布能力。

热门文章

最新文章

相关产品

  • 企业级分布式应用服务