在 JIRA Studio 中为 Bamboo 创建 Windows AMI 以进行构建

Posted

技术标签:

【中文标题】在 JIRA Studio 中为 Bamboo 创建 Windows AMI 以进行构建【英文标题】:Creating a Windows AMI for Bamboo in JIRA Studio for builds 【发布时间】:2011-08-22 15:42:19 【问题描述】:

我的先决条件: - JIRA Studio(托管) - 使用 Bamboo 3.0.4 - ami-1cbd4475

我假设我必须将 Bamboo 远程代理(一些 jar)安装到这个 Windows 实例。但是我在我的 Jira Studio 的 Bamboo 配置中既找不到代理安装的任何链接(如 http://confluence.atlassian.com/display/BAMBOO/Creating+a+Remote+Agent 中所述),也找不到自己需要的代理版本。我的假设完全正确吗?

谁能描述为 Bamboo 设置 Windows AMI 的过程?

【问题讨论】:

【参考方案1】:

自己安装成功。感谢互联网和来自 Atlassian 的人。 所以下面是我做的步骤。

在 Windows AMI 上安装弹性代理

在任何需要的 Amazon Windows Image 实例中启动和 RDP 立即更改管理员密码 安装谷歌浏览器(为方便起见) 安装 Far Manager(为方便起见) 安装最新的JDK 更新 PATH 以指向 Java bin 目录。如果一切正常,那么 java -version 命令应该会给你 Java 的版本 从Atlassian下载适当版本的代理 Bamboo 3.0.4 的弹性代理可以找到here 将 zip 的内容解压到 c:\bamboo-elastic-agent 更新 PATH 以指向 c:\bamboo-elastic-agent\bin 创建文件夹 c:\bamboo-agent-home 在 c:\bamboo-elastic-agent\bin\ 中创建文件 launch-bamboo.bat,内容如下

@echo off 
setlocal enabledelayedexpansion 
set BIN_PATH=%~dp0 
set OLD_PWD=%CD% 
cd %BIN_PATH% 
for %%J in ("..\lib\*.jar") do (
if defined CLASSPATH (
set CLASSPATH=!CLASSPATH!;%%J) else set CLASSPATH=%%J)

@echo on 

java -server -Xms32m -Xmx512m -XX:MaxPermSize=256m -classpath %CLASSPATH% -Dbamboo.home=C:\bamboo-agent-home com.atlassian.bamboo.agent.elastic.client.ElasticAgentBootstrap 2>&1 > C:\bamboo-agent-home\bamboo-elastic-agent.log
@echo off
cd %OLD_PWD% 
set OLD_PWD=

尝试手动启动launch-bamboo.bat

如果一切配置正常,您应该在输出和代理日志中一无所获,或者得到类似的东西

    C:\bamboo-elastic-agent \bin>java -server -Xms32m -Xmx512m -XX:MaxPermSize=256m -classpath ..\lib\acegi-security-1.0.4.jar;..\lib\activation-1.1.1.jar;..\lib\activeio-core-3.1.2.jar;..\lib\act
    ivemq-core-5.3.2-atlassian-1.jar;..\lib\activemq-protobuf-1.0.jar;..\lib\activemq-ra-5.3.2.jar;..\lib\annotations-6.0.5.jar;..\lib\ant-1.7.1.jar;..\lib\ant-launcher-1.7.1.jar;..\lib\antlr-2.7.
    7.jar;..\lib\antlr-runtime-3.1.3.jar;..\lib\aopalliance-1.0.jar;..\lib\aspectjrt-1.6.9.jar;..\lib\aspectjweaver-1.6.9.jar;..\lib\atlassian-aws-0.15.jar;..\lib\atlassian-bamboo-agent-bootstrap-
    3.0.4.jar;..\lib\atlassian-bamboo-agent-core-3.0.4.jar;..\lib\atlassian-bamboo-agent-elastic-3.0.4.jar;..\lib\atlassian-bamboo-agent-remote-3.0.4.jar;..\lib\atlassian-bamboo-api-3.0.4.jar;..\l
    ib\atlassian-bamboo-core-3.0.4.jar;..\lib\atlassian-bamboo-license-3.0.4.jar;..\lib\atlassian-bandana-3.1.jar;..\lib\atlassian-bonnie-3.4.1.jar;..\lib\atlassian-bucket-0.17.jar;..\lib\atlassia
    n-cache-api-1.0.jar;..\lib\atlassian-config-0.9.jar;..\lib\atlassian-cookie-tools-2.0.jar;..\lib\atlassian-core-4.5.3.jar;..\lib\atlassian-event-2.1.0.jar;..\lib\atlassian-extras-2.4.jar;..\li
    b\atlassian-johnson-1.0.jar;..\lib\atlassian-mail-1.9.jar;..\lib\atlassian-plugins-core-2.6.4.jar;..\lib\atlassian-plugins-osgi-2.6.4.jar;..\lib\atlassian-plugins-osgi-events-2.6.4.jar;..\lib\
    atlassian-plugins-servlet-2.6.4.jar;..\lib\atlassian-plugins-spring-2.6.4.jar;..\lib\atlassian-plugins-webfragment-2.6.4.jar;..\lib\atlassian-plugins-webresource-2.6.4.jar;..\lib\atlassian-pro
    filing-1.8.1.jar;..\lib\atlassian-secure-random-1.0.jar;..\lib\atlassian-seraph-2.4.0.jar;..\lib\atlassian-spring-1.3.jar;..\lib\atlassian-trusted-apps-core-2.1.jar;..\lib\atlassian-trusted-ap
    ps-seraph-integration-2.1.jar;..\lib\atlassian-tunnel-0.4.jar;..\lib\atlassian-user-1.9.jar;..\lib\atlassian-util-concurrent-0.0.12.jar;..\lib\atlassian-velocity-0.5.jar;..\lib\atlassian-xwork
    -12-1.10.jar;..\lib\atlassian-xwork-core-1.10.jar;..\lib\axis-1.4.jar;..\lib\axis-jaxrpc-1.4.jar;..\lib\axis-saaj-1.4.jar;..\lib\axis-wsdl4j-1.5.1.jar;..\lib\backport-util-concurrent-2.1.jar;.
    .\lib\bcmail-jdk15-1.44.jar;..\lib\bcprov-jdk15-1.44.jar;..\lib\bndlib-0.0.255.jar;..\lib\commons-beanutils-1.8.3.jar;..\lib\commons-codec-1.3.jar;..\lib\commons-collections-3.2.1.jar;..\lib\c
    ommons-configuration-1.4.jar;..\lib\commons-dbcp-1.2.jar;..\lib\commons-digester-1.8.jar;..\lib\commons-discovery-0.2.jar;..\lib\commons-httpclient-3.0.1.jar;..\lib\commons-io-1.4-backport-IO-
    168.jar;..\lib\commons-jxpath-1.2.jar;..\lib\commons-lang-2.5.jar;..\lib\commons-logging-1.0.4.jar;..\lib\commons-pool-1.4-RC2-atlassian-1.jar;..\lib\dom4j-1.4.jar;..\lib\ehcache-1.6.0-atlassi
    an-3.jar;..\lib\exml-7.0.jar;..\lib\fontbox-1.2.1.jar;..\lib\freemarker-2.3.16-atlassian-4.jar;..\lib\geronimo-connector-2.0.1.jar;..\lib\geronimo-j2ee-connector_1.5_spec-2.0.0.jar;..\lib\gero
    nimo-j2ee-management_1.1_spec-1.0.1.jar;..\lib\geronimo-jms_1.1_spec-1.0.jar;..\lib\geronimo-jta_1.1_spec-1.0.jar;..\lib\geronimo-transaction-2.0.1.jar;..\lib\google-collections-1.0.jar;..\lib
    \hibernate-2.1.8-atlassian-9.jar;..\lib\howl-1.0.1-1.jar;..\lib\hsqldb-1.8.0.7.jar;..\lib\icu4j-3.8.jar;..\lib\isorelax-20020414.jar;..\lib\javacvs-atlassian-20080407.jar;..\lib\javassist-3.6.
    ga.jar;..\lib\jaxb-api-2.1.jar;..\lib\jaxb-impl-2.1.10.jar;..\lib\jaxen-1.1-beta-9.jar;..\lib\jcip-annotations-1.0.jar;..\lib\jcl-over-slf4j-1.5.8.jar;..\lib\jdom-1.0.jar;..\lib\jempbox-1.2.1.
    jar;..\lib\jencks-2.1.jar;..\lib\jencks-amqpool-2.1-atlassian-1.jar;..\lib\jira-soapclient-4.0.jar;..\lib\jmock-1.0.1.jar;..\lib\jms-1.1.jar;..\lib\jna-3.2.7.jar;..\lib\joda-time-1.6.jar;..\li
    b\jsch-0.1.38.jar;..\lib\jta-1.0.1B.jar;..\lib\junit-4.5.jar;..\lib\kahadb-5.3.2.jar;..\lib\ldaptemplate-1.0.1.jar;..\lib\lingo-1.3.jar;..\lib\log4j-1.2.15.jar;..\lib\lucene-analyzers-2.3.2.ja
    r;..\lib\lucene-core-2.3.2.jar;..\lib\mail-1.4.1.jar;..\lib\mockobjects-alt-jdk1.3-j2ee1.3-0.09.jar;..\lib\msv-20020414.jar;..\lib\odmg-3.0.jar;..\lib\ognl-2.7.3-atlassian-3.jar;..\lib\org.apa
    che.felix.framework-3.0.2.jar;..\lib\oro-2.0.8.jar;..\lib\oscore-2.2.7.jar;..\lib\osuser-1.0-20060106.jar;..\lib\p4java-0.7.5-atlassian-5.8.jar;..\lib\package-scanner-0.9.4.jar;..\lib\pdfbox-1
    .2.1.jar;..\lib\plexus-utils-1.5.9.jar;..\lib\poi-3.5-FINAL.jar;..\lib\poi-scratchpad-3.5-FINAL.jar;..\lib\propertyset-1.3-21Nov03.jar;..\lib\quartz-1.6.5.jar;..\lib\relaxngDatatype-20020414.j
    ar;..\lib\rife-continuations-0.0.2.jar;..\lib\rome-1.0.jar;..\lib\sal-api-2.2.1.jar;..\lib\sal-spi-2.2.1.jar;..\lib\sal-spring-2.2.1.jar;..\lib\saxpath-1.0-FCS.jar;..\lib\servlet-api-2.5.jar;.
    .\lib\sitemesh-2.2.1.jar;..\lib\slf4j-api-1.5.8.jar;..\lib\slf4j-log4j12-1.5.8.jar;..\lib\smack-3.0.4.jar;..\lib\smackx-3.0.4.jar;..\lib\spring-aop-2.0.7.jar;..\lib\spring-beans-2.0.7.jar;..\l
    ib\spring-context-2.0.7.jar;..\lib\spring-core-2.0.7.jar;..\lib\spring-dao-2.0.7.jar;..\lib\spring-hibernate2-2.0.7.jar;..\lib\spring-jdbc-2.0.7.jar;..\lib\spring-jms-2.0.7.jar;..\lib\spring-m
    ock-2.0.7.jar;..\lib\spring-remoting-2.0.7.jar;..\lib\spring-support-2.0.7.jar;..\lib\spring-web-2.0.7.jar;..\lib\sqljet-1.0.4.jar;..\lib\stax-api-1.0-2.jar;..\lib\stringtemplate-3.2.jar;..\li
    b\svnkit-1.3.5.7539.jar;..\lib\trilead-ssh2-build213-svnkit-1.3-patch.jar;..\lib\typica-1.6.jar;..\lib\velocity-1.4.jar;..\lib\webwork-2.2.7-atlassian-5.jar;..\lib\wsdl4j-1.6.1.jar;..\lib\xapo
    ol-without-pool-1.4.jar;..\lib\xbean-spring-3.2.jar;..\lib\xercesImpl-2.9.1.jar;..\lib\xfire-core-1.2.6.jar;..\lib\xml-apis-1.3.03.jar;..\lib\xmlParserAPIs-2.6.2.jar;..\lib\XmlSchema-1.1.jar;.
    .\lib\xpp3_min-1.1.4c.jar;..\lib\xstream-1.3.1.jar;..\lib\xwork-1.2.5-atlassian-2.jar -Dbamboo.home=C:\bamboo-agent-home com.atlassian.bamboo.agent.elastic.client.ElasticAgentBootstrap 2>&1 1
    >C:\bamboo-agent-home\bamboo-elastic-agent.log
    java.io.FileNotFoundException: http://169.254.169.254/2008-02-01/user-data
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)
    at com.atlassian.urlfetcher.URLFetcherImpl.fetchSerializedObject(URLFetcherImpl.java:16)
    at com.atlassian.aws.ec2.EC2Utils.getUserData(EC2Utils.java:69)
    at com.atlassian.bamboo.agent.elastic.client.ElasticAgentBootstrap.main(ElasticAgentBootstrap.java:41)

如果您收到错误消息:错误:C:\Program Files\Java\jre6\bin\server\jvm.dll 处没有服务器 JVM,则复制 C:\Program Files\Java\jdk1.6.0 \jre\bin 到 C:\Program Files\Java\jre1.6.0\bin

下载 NSSM 以配置要作为服务启动的批处理文件 提取 使用 nssm.exe 启动安装竹代理 输入路径 c:\bamboo-elastic-agent\bin\launch-bamboo.bat 完成 确保将服务竹代理配置为在 Windows 服务管理器中自动启动 在 cmd 中输入 services.msc 检查竹代理服务启动为自动 将防火墙配置为允许端口 26224 或在高级防火墙选项中设置以记录丢弃的数据包 停止实例 创建临时 AMI 从 Bamboo 启动此临时 AMI 通过 RDP 登录到此临时 AMI 的实例 查看被阻止的端口 找出被阻塞的 Bamboo 端口号 终止临时 AMI 的实例 注销临时 AMI 恢复停止的原始实例 配置防火墙以允许此端口 在 Amazon 控制台停止实例 不要将其与终止混淆。您应该在控制台上停止实例或通过 RDP 定期关闭 Windows 在 Amazon 控制台中创建此已停止实例的 AMI 您可以在创建 AMI 后终止已停止的实例

【讨论】:

对于 3.0.4-studio-10 我成功使用了atlassian.com/software/bamboo/downloads/binary/… 有人知道为什么在这篇文章中:devopscloud.net/2011/03/25/…作者使用EC2 Api吗?不知道它是干什么用的。

以上是关于在 JIRA Studio 中为 Bamboo 创建 Windows AMI 以进行构建的主要内容,如果未能解决你的问题,请参考以下文章

Jira On Demand 与 Bamboo 的集成

Bamboo 卡在验证 Jira 服务器

在 Ant Bamboo 构建中使用 Jira 或默认项目版本

Bamboo 可以在 JIRA 中更改票证的状态吗

JIRA 更新时的 Bamboo 触发器,反之亦然

列出 Bamboo 执行的 Jira 项目的所有构建