[Integration, Cloud] CI, DevOps and ALM for Oracle SOA Suite with Oracle Developer Cloud Service

原文はこちら。
https://blogs.oracle.com/shay/entry/ci_devops_and_alm_for

多数の開発者がJDeveloperを使ってOracle SOA Suiteでアプリケーションを開発していますが、このエントリでは、JDeveloperとOracle Developer Cloud Service(DevCS)を組み合わせて利用すると、開発とデリバリライフサイクルの全体を自動化できることをご紹介します。
Oracle Developer Cloud Service
https://cloud.oracle.com/ja_JP/developer_service
Developer Cloud Serviceのユニークな側面の一つとして、JDeveloperのインスタンスを有しており、ビルド環境で利用できる、というものがあります。この機能を使うと、Oracle SOA Suiteのアーティファクトを開発するお客様は、あたかも開発時に実行するのと同じ感じで、OJDeployメカニズムを活用して、継続的インテグレーションサイクル(Continuous Integration Cycle)の中でアプリケーションをパッケージングすることができます。
JDeveloper 12.2.1で追加されたDevCS統合機能を使うと、開発者はDevCSが提供するGitサーバとの統合だけではなく、DevCSタスク追跡システムと直接対話し、さらにコードの変更を特定のタスクに紐付けることができるようになっています。
この10分の動画で以下の内容をご紹介します。
  • Oracle SOA SuiteのアーティファクトのためのAntベースでのビルドを作成
  • Developer Cloud Serviceで継続的インテグレーションビルドを自動化し、Oracle SOA Suite用にパッケージング
  • SOAプロジェクトコードをGitとDeveloper Cloud Serviceで管理
  • JDeveloperからタスクを追跡し、Developer Cloud Serviceでアジャイル開発を監視

ところで、Mavenを使ってビルドの自動化をしたい場合も、完全に自動化可能であり、DevCSでサポートしています。以下の動画で実現方法をご紹介しています。
Soa Cloud Service + Developer Cloud Service: Integration
https://community.oracle.com/community/cloud_computing/platform-as-a-service-paas/oracle-developer-cloud-service/blog/2015/11/05/soa-cloud-service-developer-cloud-service-integration
DevCSプロジェクトの作成やGitリポジトリの作成、タスクの追跡やアジャイルチームボードの作成がどれほど迅速・簡単にできるかわからない場合は以下のエントリにある動画をご覧ください。
Using the Oracle Developer Cloud Service for Git version management for JDeveloper/ADF apps
https://blogs.oracle.com/shay/entry/using_the_oracle_developer_cloud
Agile Development with Oracle Developer Cloud Service and JDeveloper 12.2.1
thttps://blogs.oracle.com/shay/entry/agile_development_with_oracle_developer
開発者は、Oracle SOA Cloud Serviceへの全てのサブスクリプションを持っている場合にはDeveloper Cloud Serviceへのアクセスが可能であることにご注意ください。
以下の2個のantファイルは、この動画で使ったものです。
build.propertiesでアプリケーション名やプロジェクト名を現在取り組んでいるものにふさわしい名前に変更できます。
動画でわかるように、build.xmlは自動生成されるため、必要な行を追加するだけでよいのです。
<property environment="env" />
build.properties
oracle.commons=../../../../oracle_common/
oracle.commons=../../../../oracle_common/
install.dir=../../../..
oracle.home=${env.ORACLE_HOME_SOA_12_2_1}
oracle.jdeveloper.workspace.path=${env.WORKSPACE}/e2e-1201-composites.jws
middleware.home=${env.MIDDLEWARE_HOME_SOA_12_2_1}
workspace=${env.WORKSPACE}
oracle.jdeveloper.ant.library=${env.ORACLE_HOME_SOA_12_2_1}/jdev/lib/ant-jdeveloper.jar
oracle.jdeveloper.deploy.dir=${env.WORKSPACE}/ProcessOrder/deploy
oracle.jdeveloper.ojdeploy.path=${oracle.home}/jdev/bin/ojdeploy
javac.nowarn=off
oracle.jdeveloper.project.name=ProcessOrder
oracle.jdeveloper.deploy.outputfile=${env.WORKSPACE}/e2e-1201-composites/ProcessOrder/deploy/${profile.name}
output.dir=classes
javac.deprecation=off
oracle.jdeveloper.deploy.profile.name=*
javac.debug=on
build.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!--Ant buildfile generated by Oracle JDeveloper-->
<!--Generated Jul 25, 2016 5:11:09 PM-->
<project xmlns="antlib:org.apache.tools.ant" name="ProcessOrder" default="all" basedir=".">
 <property environment="env" /> 
 <property file="build.properties"/>
  <path id="library.SOA.Designtime">
    <pathelement location="${install.dir}/soa/plugins/jdeveloper/extensions/oracle.sca.modeler.jar"/>
  </path>
  <path id="library.SOA.Runtime">
    <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.fabric_11.1.1/fabric-runtime.jar"/>
    <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.fabric_11.1.1/tracking-api.jar"/>
    <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.fabric_11.1.1/tracking-core.jar"/>
    <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.fabric_11.1.1/edn.jar"/>
    <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.mgmt_11.1.1/soa-infra-mgmt.jar"/>
    <pathelement location="${oracle.commons}/modules/com.oracle.webservices.fabric-common-api.jar"/>
  </path>
  <path id="library.BPEL.Runtime">
    <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.bpel_11.1.1/orabpel.jar"/>
  </path>
  <path id="library.Mediator.Runtime">
    <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.mediator_11.1.1/mediator_client.jar"/>
  </path>
  <path id="library.MDS.Runtime">
    <pathelement location="${oracle.commons}/modules/oracle.mds/mdsrt.jar"/>
  </path>
  <path id="library.BC4J.Service.Runtime">
    <pathelement location="${oracle.commons}/modules/oracle.adf.model/adfbcsvc.jar"/>
    <pathelement location="${oracle.commons}/modules/oracle.adf.model/adfbcsvc-share.jar"/>
    <pathelement location="${oracle.commons}/modules/commonj.sdo.backward.jar"/>
    <pathelement location="${oracle.commons}/modules/commonj.sdo.jar"/>
    <pathelement location="${oracle.commons}/modules/oracle.toplink/eclipselink.jar"/>
    <pathelement location="${oracle.commons}/modules/com.oracle.webservices.fmw.wsclient-impl.jar"/>
    <pathelement location="${oracle.commons}/modules/com.oracle.webservices.fmw.jrf-ws-api.jar"/>
    <pathelement location="${oracle.commons}/modules/com.oracle.webservices.fmw.web-common-schemas-impl.jar"/>
  </path>
  <path id="classpath">
    <path refid="library.SOA.Designtime"/>
    <path refid="library.SOA.Runtime"/>
    <path refid="library.BPEL.Runtime"/>
    <path refid="library.Mediator.Runtime"/>
    <path refid="library.MDS.Runtime"/>
    <path refid="library.BC4J.Service.Runtime"/>
  </path>
  <target name="init">
    <tstamp/>
    <mkdir dir="${output.dir}"/>
  </target>
  <target name="all" description="Build the project" depends="deploy,compile,copy"/>
  <target name="clean" description="Clean the project">
    <delete includeemptydirs="true" quiet="true">
      <fileset dir="${output.dir}" includes="**/*"/>
    </delete>
  </target>
  <target name="deploy" description="Deploy JDeveloper profiles" depends="init">
    <taskdef name="ojdeploy" classname="oracle.jdeveloper.deploy.ant.OJDeployAntTask" uri="oraclelib:OJDeployAntTask"
             classpath="${oracle.jdeveloper.ant.library}"/>
    <ora:ojdeploy xmlns:ora="oraclelib:OJDeployAntTask" executable="${oracle.jdeveloper.ojdeploy.path}"
                  ora:buildscript="${oracle.jdeveloper.deploy.dir}/ojdeploy-build.xml"
                  ora:statuslog="${oracle.jdeveloper.deploy.dir}/ojdeploy-statuslog.xml">
      <ora:deploy>
        <ora:parameter name="workspace" value="${oracle.jdeveloper.workspace.path}"/>
        <ora:parameter name="project" value="${oracle.jdeveloper.project.name}"/>
        <ora:parameter name="profile" value="${oracle.jdeveloper.deploy.profile.name}"/>
        <ora:parameter name="nocompile" value="false"/>
        <ora:parameter name="outputfile" value="${oracle.jdeveloper.deploy.outputfile}"/>
      </ora:deploy>
    </ora:ojdeploy>
  </target>
  <target name="compile" description="Compile Java source files" depends="init">
    <javac destdir="${output.dir}" classpathref="classpath" debug="${javac.debug}" nowarn="${javac.nowarn}"
           deprecation="${javac.deprecation}" encoding="UTF8" source="1.8" target="1.8">
      <src path="SOA/SCA-INF/src"/>
    </javac>
  </target>
  <target name="copy" description="Copy files to output directory" depends="init">
    <patternset id="copy.patterns">
      <include name="**/*.GIF"/>
      <include name="**/*.JPEG"/>
      <include name="**/*.JPG"/>
      <include name="**/*.PNG"/>
      <include name="**/*.cpx"/>
      <include name="**/*.dcx"/>
      <include name="**/*.ejx"/>
      <include name="**/*.gif"/>
      <include name="**/*.ini"/>
      <include name="**/*.jpeg"/>
      <include name="**/*.jpg"/>
      <include name="**/*.png"/>
      <include name="**/*.properties"/>
      <include name="**/*.sva"/>
      <include name="**/*.tag"/>
      <include name="**/*.tld"/>
      <include name="**/*.wsdl"/>
      <include name="**/*.xcfg"/>
      <include name="**/*.xlf"/>
      <include name="**/*.xml"/>
      <include name="**/*.xsd"/>
      <include name="**/*.xsl"/>
      <include name="**/*.exm"/>
      <include name="**/*.xml"/>
      <exclude name="build.xml"/>
    </patternset>
    <copy todir="${output.dir}">
      <fileset dir="SOA/SCA-INF/src">
        <patternset refid="copy.patterns"/>
      </fileset>
      <fileset dir=".">
        <patternset refid="copy.patterns"/>
      </fileset>
    </copy>
  </target>
</project>

0 件のコメント:

コメントを投稿