使用 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 
目录
相关文章
|
4月前
|
jenkins Java 持续交付
【项目集成工具】Jenkins
【项目集成工具】Jenkins
|
23天前
|
jenkins Java 持续交付
Docker搭建持续集成平台Jenkins最简教程
Jenkins 是一个广泛使用的开源持续集成工具,它能够自动化构建、测试和部署软件项目。在本文中,我们将使用 Docker 搭建一个基于 Jenkins 的持续集成平台。
108 2
|
30天前
|
jenkins Java 持续交付
Docker Swarm总结+Jenkins安装配置与集成(5/5)
Docker Swarm总结+Jenkins安装配置与集成(5/5)
47 0
|
30天前
|
jenkins Java 持续交付
Docker Swarm总结+Jenkins安装配置与集成snarqube和目标服务器(4/5)
Docker Swarm总结+Jenkins安装配置与集成snarqube和目标服务器(4/5)
42 0
|
7月前
|
jenkins 持续交付 开发工具
如何基于Docker搭建jenkins集成开发环境?建议收藏
如何基于Docker搭建jenkins集成开发环境?建议收藏
|
6月前
|
运维 jenkins 机器人
Jenkins配置项目集成钉钉通知
Jenkins配置项目集成钉钉通知
|
7月前
|
jenkins 应用服务中间件 持续交付
1小时带你入门Jenkins持续集成自动化环境搭建
1小时带你入门Jenkins持续集成自动化环境搭建
|
7月前
|
jenkins Java 持续交付
使用 Jenkins 创建微服务应用的持续集成
使用 Jenkins 创建微服务应用的持续集成
81 0
|
8月前
|
监控 NoSQL jenkins
2021-9-11大连东软实训---gitlab 、jenkins和sonar集成
2021-9-11大连东软实训---gitlab 、jenkins和sonar集成
66 0

相关产品

  • 企业级分布式应用服务