Archetypes - Change platform archetype build approach

- Build the project using package goal instead of install
- Copy the test dependencies only when IT is executed
- Add the build_start_it_supported task to execution scripts
This commit is contained in:
Jose Luis Osorno 2019-03-26 12:25:07 +01:00
parent d949a778ef
commit ea4c12a836
4 changed files with 83 additions and 63 deletions

View File

@ -14,6 +14,8 @@ All the services of the project are now run as docker containers. The run script
* `build_start`. Build the whole project, recreate the ACS docker image, start the dockerised environment composed by ACS, Share (optional), ASS
and PostgreSQL and tail the logs of all the containers.
* `build_start_it_supported`. Build the whole project including dependencies required for IT execution, recreate the ACS docker image, start the dockerised environment
composed by ACS, Share (optional), ASS and PostgreSQL and tail the logs of all the containers.
* `start`. Start the dockerised environment without building the project and tail the logs of all the containers.
* `stop`. Stop the dockerised environment.
* `purge`. Stop the dockerised container and delete all the persistent data (docker volumes).

View File

@ -192,6 +192,44 @@
</resources>
</configuration>
</execution>
<execution>
<id>copy-repository-extension</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
<resources>
<resource>
<directory>target</directory>
<includes>
<include>${build.finalName}.jar</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-repository-tests</id>
<phase>pre-integration-test</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
<resources>
<resource>
<directory>target</directory>
<includes>
<include>${build.finalName}-tests.jar</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
@ -200,73 +238,29 @@
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<!-- Copy the repository extension and the dependencies required for execute integration tests -->
<!-- Copy the dependencies required for execute integration tests -->
<execution>
<id>copy-repo-extension</id>
<phase>pre-integration-test</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${project.version}</version>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
</artifactItem>
<!-- Test dependencies -->
<!-- We need these dependencies installed in ACS in order to execute the test remotely making use of the Alfresco RAD module -->
<artifactItem>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
</artifactItem>
<artifactItem>
<groupId>org.alfresco.maven</groupId>
<artifactId>alfresco-rad</artifactId>
<version>${alfresco.sdk.version}</version>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
</artifactItem>
<artifactItem>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
</artifactItem>
<artifactItem>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
</artifactItem>
<artifactItem>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<!-- Copy other dependencies (JARs or AMPs) declared in the platform module -->
<execution>
<id>copy-third-party-dependencies</id>
<id>collect-test-artifacts</id>
<phase>pre-integration-test</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
<excludeScope>compile</excludeScope>
</configuration>
</execution>
<!-- Collect extensions (JARs or AMPs) declared in this module to be deployed to docker -->
<execution>
<id>collect-extensions</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
<includeScope>runtime</includeScope>
<!-- IMPORTANT: if using amp dependencies only, add <includeTypes>amp</includeTypes> -->
</configuration>
</execution>
</executions>

View File

@ -12,7 +12,7 @@ IF NOT [%M2_HOME%]==[] (
)
IF [%1]==[] (
echo "Usage: %0 {build_start|start|stop|purge|tail|build_test|test}"
echo "Usage: %0 {build_start|build_start_it_supported|start|stop|purge|tail|build_test|test}"
GOTO END
)
@ -23,6 +23,14 @@ IF %1==build_start (
CALL :tail
GOTO END
)
IF %1==build_start_it_supported (
CALL :down
CALL :build
CALL :prepare_test
CALL :start
CALL :tail
GOTO END
)
IF %1==start (
CALL :start
CALL :tail
@ -44,6 +52,7 @@ IF %1==tail (
IF %1==build_test (
CALL :down
CALL :build
CALL :prepare_test
CALL :start
CALL :test
CALL :tail_all
@ -70,7 +79,7 @@ EXIT /B 0
)
EXIT /B 0
:build
call %MVN_EXEC% clean install -DskipTests
call %MVN_EXEC% clean package
EXIT /B 0
:tail
docker-compose -f "%COMPOSE_FILE_PATH%" logs -f
@ -78,6 +87,9 @@ EXIT /B 0
:tail_all
docker-compose -f "%COMPOSE_FILE_PATH%" logs --tail="all"
EXIT /B 0
:prepare_test
call %MVN_EXEC% verify -DskipTests=true
EXIT /B 0
:test
call %MVN_EXEC% verify
EXIT /B 0

View File

@ -29,7 +29,7 @@ purge() {
}
build() {
${symbol_dollar}MVN_EXEC clean install -DskipTests=true
${symbol_dollar}MVN_EXEC clean package
}
tail() {
@ -40,6 +40,10 @@ tail_all() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs --tail="all"
}
prepare_test() {
${symbol_dollar}MVN_EXEC verify -DskipTests=true
}
test() {
${symbol_dollar}MVN_EXEC verify
}
@ -51,6 +55,13 @@ case "${symbol_dollar}1" in
start
tail
;;
build_start_it_supported)
down
build
prepare_test
start
tail
;;
start)
start
tail
@ -68,6 +79,7 @@ case "${symbol_dollar}1" in
build_test)
down
build
prepare_test
start
test
tail_all
@ -77,5 +89,5 @@ case "${symbol_dollar}1" in
test
;;
*)
echo "Usage: ${symbol_dollar}0 {build_start|start|stop|purge|tail|build_test|test}"
echo "Usage: ${symbol_dollar}0 {build_start|build_start_it_supported|start|stop|purge|tail|build_test|test}"
esac