Beruflich Dokumente
Kultur Dokumente
Aino Andriessen
AMIS
Continuous Integration
Conditions
Infrastructure
Scripting
No IDE
Scripting
Maven
ant
make
shell scripts
sql scripts
...
Demo
-----------------------------------------------------------------------Reactor Summary:
-----------------------------------------------------------------------HR1 ................................................... SUCCESS [3.003s]
HR1 model ............................................. SUCCESS [7.866s]
HR1 viewController .................................... SUCCESS [54.451s]
HR1 ear ............................................... SUCCESS [14.591s]
HR1 integration ....................................... SUCCESS [0.312s]
----------------------------------------------------------------------------------------------------------------------------------------------BUILD SUCCESSFUL
-----------------------------------------------------------------------Total time: 1 minute 20 seconds
Finished at: Fri Jun 01 17:32:01 CEST 2007
Final Memory: 10M/18M
-----------------------------------------------------------------------
mvn test
[INFO] [surefire:test]
[INFO] Surefire report directory: D:\projects\myprojects\odtugDemo\hr1\model\tar
get\surefire-reports
------------------------------------------------------TESTS
------------------------------------------------------Running nl.amis.demo.odtug.model.queries.OdtugTstViewTest
Jun 1, 2007 7:04:22 PM oracle.adf.share.config.ADFConfigFactory findOrCreateADFC
onfig
INFO: oracle.adf.share.config.ADFConfigFactory No META-INF/adf-config.xml found
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.606 sec
Running nl.amis.demo.odtug.model.queries.RegionsViewTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec
Running nl.amis.adf.fwk.test.Java5Test
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec
Running nl.amis.demo.odtug.model.queries.JobsViewTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.046 sec
Running nl.amis.demo.odtug.model.queries.EmployeesViewTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.032 sec
Running nl.amis.demo.odtug.model.queries.DepartmentsViewTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec
Running nl.amis.demo.odtug.model.queries.LocationsViewTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec
Running nl.amis.demo.odtug.model.queries.CountriesViewTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec
Results :
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0
mvn package
[INFO] [exec:exec]
[[INFO] 07/06/01 17:21:22 Notification ==>Uploading file hr1.ear ...
[INFO]
[INFO] 07/06/01 17:21:22 Notification ==>Application Deployer for hr1 STARTS.
[INFO]
[INFO] 07/06/01 17:21:22 Notification ==>Copy the archive to :\server\oc4j_101310\j2ee\home\applications\hr1.ear
[INFO]
[INFO] 07/06/01 17:21:22 Notification ==>Initialize C:\server\oc4j_101310\j2ee\home\applications\hr1.ear begins...
[INFO]
[INFO] 07/06/01 17:21:24 Notification ==>Initialize hr1-viewController-1.0-SNAPSHOT begins...
[INFO]
[INFO] 07/06/01 17:21:24 Notification ==>Initialize hr1-viewController-1.0-SNAPSHOT ends...
[INFO]
[INFO] 07/06/01 17:21:24 Notification ==>Started application : hr1
[INFO]
[INFO] 07/06/01 17:21:24 Notification ==>Binding web application(s) to site default-web-site begins...
[INFO]
[INFO] 07/06/01 17:21:24 Notification ==>Binding hr1-viewController-1.0-SNAPSHOT web-module for application
hr1 to site default-web-site under context root /hr1
[INFO]
[INFO] 07/06/01 17:21:31 Notification ==>Initializing Servlet: javax.faces.webapp.FacesServlet for web application
hr1-viewController-1.0-SNAPSHOT
[INFO]
[INFO] 07/06/01 17:21:31 Notification ==>Binding web application(s) to site default-web-site ends...
[INFO]
[INFO] 07/06/01 17:21:31 Notification ==>Application Deployer for hr1 COMPLETES.
Operation time: 8273 msecs
10
mvn deploy
[INFO] [deploy:deploy]
[INFO] Retrieving previous build number from ATAMaven2SnapshotsRepo
Uploading: file:\\amis-test-aa\maven2snapshots/nl/amis/demo/odtug/hr1/hr1-model/1.0-SNAPSHOT/hr1-model-1.020070601.171522-4.jar
50K uploaded
[INFO] Retrieving previous metadata from ATAMaven2SnapshotsRepo
[INFO] Uploading repository metadata for: 'snapshot nl.amis.demo.odtug.hr1:hr1-model:1.0-SNAPSHOT'
[INFO] -------------------------------------------------------------------------
11
mvn site
12
13
Demo Summary
Unittesting
Make a build
Deploy ear file to OC4J
Perform integrationtests
Share artifacts
Share information
14
Infrastructure
15
Software Studio
16
Software development
17
Nightly build
Continuum
Scheduler
http://ci.amis.nl:8080/continuum/servlet/continuum
18
19
Maven
Build Lifecycle
actions / goals (tasks)
20
Convention
over
configuration
21
POM example
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>nl.amis.demo.odtug.hr1</groupId>
<artifactId>hr1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>model</module>
<module>viewController</module>
<module>ear</module>
</modules>
<name>HR1</name>
<description>This application manages employees and general company
information.</description>
<url>http://localhost:8800/hr1/faces/index.jspx</url>
<organization>
<name>AMIS Services</name>
<url>http://www.amis.nl</url>
</organization>
<issueManagement>
<system>Jira</system>
<url>http://dev.amis.nl/jira/browse/PAG</url>
</issueManagement>
22
POM example
<scm>
<connection>scm:svn:http://subversion.amis.nl/users/aino_a/hr1/trunk/
</connection>
<developerConnection>
scm:svn:http://subversion.amis.nl/users/aino_a/hr1/trunk/
</developerConnection>
<url>http://subversion.amis.nl/users/aino_a/hr1/trunk/</url>
</scm>
<developers>
<developer>
<id>aino.andriessen</id>
<name>Aino Andriessen</name>
<email>aino.andriessen@amis.nl</email>
<organization>AMIS</organization>
<roles><role>developer</role></roles>
<timezone>+1</timezone>
</developer>
</developers>
<distributionManagement>
<repository>
<id>AMISMaven2Repo</id>
<url>file:\\ci.amis.nl\maven2</url>
</repository>
</distributionManagement>
23
Pom Example
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<configLocation>
src/main/resources/amis_checkstyle.xml
</configLocation>
</configuration>
</plugin>
</plugins>
</reporting>
</project>
24
Build Lifecycle
validate
generate-sources
process-sources
generate-resources
process-resources
compile
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources
test-compile
test
prepare-package
package
pre-integration-test
integration-test
post-integration-test
verify
install
deploy
25
Execution
mvn compile
mvn compile:compile
mvn compile:test-compile
mvn package
mvn jar
mvn jar:jar
mvn jar:sign
mvn test-jar:jar
26
Plugins
27
Dependency Management
28
Maven repositories
29
Maven repositories 2
Local
Internal
Central
http://repo1.maven.org/maven2/
External
Codehaus
java.net
...
30
Internal repository
commercial libraries
non-public libraries
company products
31
http://ci.amis.nl/maven2/
http://ci.amis.nl/maven2snapshots/
32
Deploy
33
Snapshots
34
Testing
Unittests
JUnit
TestNG
Integration tests
Database tests
...
35
Integration tests
Run tests
Undeploy application
Stop application server
36
Integration tests
Front-end
Selenium
JMeter
Back-end / Database
QCTO
utPLSQL
Tools
dbunit
Maven sql plugin
Maven exec plugin
(JDeveloper) ant tasks
37
Release
mvn release:prepare
update version
tag in scm
mvn release:perform
deploy tagged version
artifact
sources
doc
38
Maven projectsites
Documentation
Project info
Reports
http://ci.amis.nl/projectsites/
39
Reports
Profiles
Archetype
Cargo plugin
Multi module projects
...
40
41
Dependency management
Crete or generate POM files
Tools
42
Tools
admin_client.jar utility
deployment to OC4J
ojspc.jar utility
pre compilation of jsf files
[JDeveloper]
[oc4j]
43
44
Dependencies
45
Required libraries
ADF
JDeveloper
Other
ADF
10.1.3.0
10.1.3.36.73
10.1.3.1
10.1.3.39.84
10.1.3.2
10.1.3.40.66
10.1.3.3
10.1.3.41.57
JDev
46
Directory layout
Default Maven layout
JDev project settings
47
ADF Archetype
AMIS maven-archetype-adf :
mvn archetype:create
-DarchetypeGroupId=nl.amis.maven.archetypes
-DarchetypeArtifactId=maven-archetype-adf
-DarchetypeVersion=10.1.3.3[-SNAPSHOT]
-DremoteRepositories=http://ci.amis.nl/maven2(snapshots)
-DgroupId=nl.amis.demo
-DartifactId=hr1
48
Projectfile generation
49
Deploy to OC4J
Command-line
oc4j admin_client.jar utility
in ear project or associated with a certain
phase
mvn exec:exec -PlocalOC4J
50
Example
<profile>
<id>devOC4J</id>
<plugin>
<activation>
<groupId>org.codehaus.mojo</groupId>
<activeByDefault>false</activeByDefault>
<artifactId>exec-maven-plugin</artifactId>
</activation>
<properties>
<executions>
<ias.server.url>ci.amis.nl</ias.server.url>
<execution>
<ias.server.port>8888</ias.server.port>
<id>deployApp</id>
<ias.deploy.url>deployer:oc4j:${ias.server.url}</ias.deploy.url>
<phase>pre-integration-test</phase> <ias.username>oc4jadmin</ias.username>
<goals>
<ias.password>oc4jadmin</ias.password>
</properties>
<goal>exec</goal>
</profile>
</goals>
<configuration>
<executable>${java.home}/bin/java</executable>
<arguments>
<argument>-jar</argument>
<argument>${oc4j.adminclient.home}\j2ee\home\admin_client.jar</argument>
<argument>${ias.deploy.url}</argument>
<argument>${ias.username}</argument>
<argument>${ias.password}</argument>
<argument>-deploy</argument>
<argument>-file</argument>
<argument>../ear/target/hr1-ear-${version}.ear</argument>
<argument>-deploymentName</argument>
<argument>hr1</argument>
<argument>-bindAllWebApps</argument>
</arguments>
</configuration>
java -jar C:\server\oc4j_101310\j2ee\home\admin_client.jar
</execution>
deployer:oc4j:localhost
</executions>
oc4jadmin oc4jadmin
</plugin>
-deploy -file hr1-ear-1.0-SNAPSHOT.ear
-deploymentName hr1 -bindAllWebApps
dec 20, 2007
51
52
Installation of Maven
http://maven.apache.org/download.html
Unzip
Environment settings : M2_HOME , PATH
mvn -verify
settings.xml
<M2_HOME>/conf/ or <user.dir>/.m2/
[local repository]
servers
credentials
internal repositories
local configurations
oc4j installation
53
Conclusion
54
aino.andriessen@amis.nl
http://technology.amis.nl/blog
55