转载

结合使用 Maven 和 Bluemix DevOps Services 交付管道

Apache Maven 是基于 Java™ 的项目的一个强大的构建工具。Maven 自动解析构建流程所需的组件或插件的依赖关系,从 Maven 存储库下载它们。本教程将展示如何结合使用 Bluemix DevOps Services 交付管道和 Maven。我们将从一个简单的 Java 应用程序和一个关联的单元测试开始,您将在交付管道中配置一个构建阶段,以便使用 Maven 执行构建和测试。然后您将添加第二个阶段来将应用程序推送到云。

本教程包含两个独立的章节。第一节是一个快速练习,您在其中为一个预先构建的 Maven 项目配置 Bluemix DevOps Services 管道。在第二节(即更高级的一节)中,您将在使用交付管道之前从头开发一个 Maven 项目。您将在第二个练习中学到更多的知识,所以推荐您阅读完该练习。

阅读: Apache Maven 2 简介

阅读: IBM Bluemix DevOps Services 简介,第 4 部分:使用交付管道自动部署到 Bluemix

阅读: 交付管道入门

阅读: 构建和部署资源

观看: 观看 IBM Bluemix 实战演示

您将在交付管道中配置一个构建阶段,以便使用 Maven 完成构建和测试。然后您将添加第二个阶段,将应用程序推送到云。

构建您的应用程序需要做的准备工作

对于所有两节内容:

  • IBM Bluemix 和 Bluemix DevOps Services 上的帐户,两个帐户都被链接到您的 IBM ID
  • 基本的 Java 编程知识

对于从头构建练习(可选):

  • 一个 GitHub 帐户
  • Cloud Foundry 命令行工具
  • Maven 命令行工具
  • Git 命令行工具

运行应用程序

获取代码

Java 应用程序本身很简单,不是本教程的重点,但它的代码演示了两个很有用的基本编程技术。

快速练习,第 1 步. 创建作者的存储库的分支

要配置您自己的交付管道并将应用程序推送到您的 Bluemix 帐户,必须在 Bluemix 上创建一个空间并创建我的 Bluemix DevOps Services 项目的分支。

  1. 如果以前没有在 Bluemix 上创建空间,那么请在系统提示时登录并创建一个空间。
  2. 向上滚动并单击本教程的 获取代码 按钮。如果尚未登录,请登录到您的 Bluemix DevOps Services 帐户。
  3. 单击 romeokienzler | developerWorksMaven 项目的概述页面中的 FORK PROJECT 按钮。
  4. 在 Fork Project 对话框中,输入 myDeveloperWorksMaven 作为项目名称。选择一个 Bluemix 空间并在其他字段中保留默认值: 结合使用 Maven 和 Bluemix DevOps Services 交付管道
  5. 单击 CREATE

快速练习,第 2 步. 配置交付管道的第一个阶段

在这一步中,您将配置交付管道,以便从您存储库中签出源代码,运行 Maven 命令来构建示例应用程序和运行 JUnit 测试。

  1. 在您的 Bluemix DevOps Services 项目中,单击 BUILD & DEPLOY 按钮进入交付管道。
  2. 单击 ADD STAGE 按钮。
  3. 在 Stage Configuration 对话框中,选择 Only execute jobs when a user manually runs this stage 单选按钮并单击 SAVE结合使用 Maven 和 Bluemix DevOps Services 交付管道

    点击查看大图

    关闭 [x]

    结合使用 Maven 和 Bluemix DevOps Services 交付管道

  4. 单击齿轮符号,然后选择 Configure Stage结合使用 Maven 和 Bluemix DevOps Services 交付管道
  5. 单击 JOBS 选项卡,单击 ADD JOB ,然后从 Select Job Type 列表中选择 Build结合使用 Maven 和 Bluemix DevOps Services 交付管道
  6. 从 Builder Type 列表中选择 Maven 并单击 SAVE结合使用 Maven 和 Bluemix DevOps Services 交付管道
  7. 单击阶段窗口顶部的 Run Stage 按钮(指向右侧的三角形)。该阶段运行后,阶段窗口将包含一条 JOBS COMPLETED SUCCESSFULLY 消息: 结合使用 Maven 和 Bluemix DevOps Services 交付管道 您可以单击 View logs and history 链接查看此阶段的输出。该阶段从您在第 1 步中分支出的 Git 存储库签出了源代码,运行一个 Maven 命令来读取已提供的 pom.xml 文件。在这个 POM 中,我定义了一个构建阶段和一个 JUnit 测试阶段;在成功完成构建后,JUnit 测试将运行。Maven 自动解析 JUnit JAR 的依赖项,从公共 Maven 存储库下载它们。

快速练习,第 3 步. 配置交付管道的第二个阶段

现在您已经使用 Maven 自动构建应用程序并对其进行了单元测试,您还可以添加一个阶段来自动将该应用程序部署到 Bluemix。

  1. 单击 ADD STAGE
  2. 单击 JOBS 选项卡,单击 ADD JOB ,然后从 Select Job Type 列表中选择 Deploy
  3. 将 Application Name 值更改为 myDeveloperWorksMavenUniqueName ,其中 UniqueName 表示 Bluemix 上的一个惟一名称。您部署的应用程序的 URL 将为 https://myDeveloperWorksMaven UniqueName .mybluemix.net。
  4. 在 Deploy Script 字段中,将第二行替换为:

    cf push "${CF_APP}" -p developerWorks-1.0-SNAPSHOT.jar -b java_buildpack

    结合使用 Maven 和 Bluemix DevOps Services 交付管道
  5. 单击 SAVE
  6. 管道更新完成后,单击任意一个 Run Stage 按钮。如果单击第一个阶段中的按钮,则会重新触发构建过程,在完成该过程后,将会立即启动部署。如果单击第二个阶段的 Run Stage 按钮,Maven 创建的 JAR 将从这里启动,因为前面的构建已经成功。
  7. 在浏览器中访问 https://myDeveloperWorksMaven UniqueName .mybluemix.net,查看您正在运行的应用程序。

可选练习,第 1 步. 创建 Maven 项目

在这一步中,您将从头创建 Maven 项目。

  1. 从您 PC 的命令行,更改到您选择的工作目录。
  2. 运行以下命令:

    mvn archetype:generate -DgroupId=com.ibm.developer -DartifactId=mavenFromScratch -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    该命令创建了一个 Maven 结构的项目,其中包含:

    • 一个已在使用的 pom.xml 文件,该文件中包含编译命令和一个 JUnit 阶段
    • 一个 src 目录,它包含 main 和 test 子目录及其子目录:
    结合使用 Maven 和 Bluemix DevOps Services 交付管道

可选练习,第 2 步. 创建 Bluemix DevOps Services 项目

现在您将在 GitHub 上创建一个存储库,然后从 Bluemix DevOps Services 连接到它。

  1. 在浏览器中访问 GitHub 并进行登录。
  2. 单击 Create new 按钮并选择 New repository结合使用 Maven 和 Bluemix DevOps Services 交付管道

    点击查看大图

    关闭 [x]

    结合使用 Maven 和 Bluemix DevOps Services 交付管道

  3. 在 Repository name 字段中输入 mavenFromScratch 并单击 Create repository 按钮: 结合使用 Maven 和 Bluemix DevOps Services 交付管道
  4. 访问 Bluemix DevOps Services 。如果尚未登录,请登录到您的帐户。
  5. 单击 CREATE PROJECT
  6. 输入 mavenFromScratch 作为项目名称,选择 Connect to an external GitHub repository
  7. https://github.com/yourGitHubUserName/mavenFromScratch.git 输入到 URL 字段中。
  8. 选择 Add features for Scrum development 复选框和 Make this a Bluemix Project 复选框。
  9. 单击 CREATE

可选练习,第 3 步. 将 Bluemix DevOps Services 项目与 Maven 项目合并

  1. 返回到您 PC 的命令行,确保您已经在所创建的 Maven 项目的工作目录的根目录下。
  2. 输入 cd 转到 mavenFromScratch 目录。
  3. 运行 git init 命令,将此项目初始化为一个 Git 项目。
  4. 运行以下命令将本地和远程存储库联系在一起:

    git remote add origin https://github.com/<em>yourGitHubUserName</em>/mavenFromScratch.git

可选练习,第 4 步. 编辑 pom.xml 和 Java 代码,将更改推送到存储库

现在您需要在 Maven 项目结构中执行一些更改,并将它们推送回存储库。

  1. 在最喜欢的编辑器中打开 ./mavenFromScratch/pom.xml 文件。
  2. 在紧挨 </dependencies>

    标记之后,粘贴以下代码段:

    <build>      <plugins>        <plugin>          <groupId>org.apache.maven.plugins</groupId>          <artifactId>maven-jar-plugin</artifactId>          <version>2.4</version>          <configuration>            <archive>              <manifest>                  <mainClass>com.ibm.developer.App</mainClass>              </manifest>            </archive>          </configuration>        </plugin>      </plugins>  </build>

    最终版本类似于:

    <project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.ibm.developer</groupId>    <artifactId>developerWorks</artifactId>    <packaging>jar</packaging>    <version>1.0-SNAPSHOT</version>    <name>developerWorks</name>    <url>http://maven.apache.org</url>    <dependencies>      <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>3.8.1</version>        <scope>test</scope>      </dependency>    </dependencies>    <build>      <plugins>        <plugin>          <groupId>org.apache.maven.plugins</groupId>          <artifactId>maven-jar-plugin</artifactId>          <version>2.4</version>          <configuration>            <archive>              <manifest>                  <mainClass>com.ibm.developer.App</mainClass>              </manifest>            </archive>          </configuration>        </plugin>      </plugins>    </build>  </project>
    pom.xml 文件在 MANIFEST.MF 文件中创建一个主要类条目,以便最终的 JAR 可由 Cloud Foundry java-buildpack

    执行。

  3. 在您最喜欢的编辑器中打开 ./mavenFromScratch/src/test/java/com/ibm/developer/AppTest.java 文件并替换 testApp() 方法,使它看起来类似于:
    public void testApp()   {          assertTrue( App.veryComplicatedMethod() == 42 );   }
    保存文件。
  4. 在您最喜欢的编辑器中打开 ./mavenFromScratch/src/main/java/com/ibm/developer/App.java 文件并将内容替换为:
    package com.ibm.developer;  import java.io.IOException;  import java.net.ServerSocket;  import java.net.Socket;  /**  * Hello world!   *   */  public class App {   public static void main(String[] args) throws IOException {    int port = Integer.parseInt(System.getenv("VCAP_APP_PORT"));    ServerSocket ss = new ServerSocket(port);    while (true) {     Socket s = ss.accept();     s.getOutputStream()       .write(("HTTP/1.1 200 OK/nContent-Type: text/html; charset=utf-8/nContent-Length: 2/n/n" + veryComplicatedMethod()) .getBytes());    }   }   public static int veryComplicatedMethod() {    return 42;   }  } 
    保存文件。您已经为将所有内容推送到存储库做好了准备。

    Java 代码现在将创建一个 JUnit 测试,测试您的 App 类中的一个业务方法,它还会创建一个基本的、单线程的 HTTP Web 服务器来处理 Bluemix 中的请求。在生产应用程序中,将 ss.accept() 返回的 Socket 传递给一个单独的线程,并在写入响应后关闭它,这一步对于本演示用例是没有必要的。

  5. 从您的工作目录,输入 cd 转到 mavenFromScratch。
  6. 将所有文件添加到第一个提交集合中:

    git add -A。

  7. 运行:

    git commit -m &quot;modified maven project&quot;

  8. 将所有本地更改推送到远程存储库(提供您的 GitHub 用户名和密码,或者激活 密码缓存

    ):

    git push -u origin master

现在您可以使用自己的存储库代替我创建的存储库。跳到快速练习节中的第 2 步,配置 Bluemix DevOps Services 交付管道并完成练习。

结束语

在本教程中,您学习了如何在 Bluemix DevOps Services 中为一个 Maven 项目快速创建一个交付管道。在高级章节中,您还学习了如何从头设置一个 Maven 项目,并在 Bluemix DevOps Services 中将它推送到 Git 存储库。在此过程中,您学习了一些 JUnit 基础知识,以及如何在 Java 中使用 3 行代码编写一个 HTTP 服务器。

正文到此结束
Loading...