diff --git a/.travis.yml b/.travis.yml
index c942d1c8..86f29f4e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -19,8 +19,7 @@ branches:
only:
- master
- /^SP\/.+$/
- - release
- - /^release\/SP\/.+$/
+ - /^HF\/.+$/
- company_release
- /^ATS-.*$/
@@ -31,7 +30,7 @@ stages:
jobs:
include:
- - name: "Build"
+ - name: "Build + Tests"
stage: build
if: branch NOT IN (company_release)
before_install: bash _ci/init.sh
@@ -46,7 +45,7 @@ jobs:
- name: "Release"
stage: release
- if: branch = release OR branch =~ /^release\/SP\/.+$/
+ if: commit_message ~= /\[trigger release\]/ AND branch ~= /^(master|SP\/.+|HF\/.+)$/
before_install: bash _ci/init.sh
before_script: travis_wait bash _ci/cache_artifacts.sh
script: travis_wait 30 bash _ci/release.sh
diff --git a/alfresco-docker-alfresco-pdf-renderer/Dockerfile b/alfresco-docker-alfresco-pdf-renderer/Dockerfile
index 2b3b8e6f..222d94b0 100644
--- a/alfresco-docker-alfresco-pdf-renderer/Dockerfile
+++ b/alfresco-docker-alfresco-pdf-renderer/Dockerfile
@@ -2,7 +2,7 @@
# alfresco-pdf-renderer uses the PDFium library from Google Inc. See the license at https://pdfium.googlesource.com/pdfium/+/master/LICENSE or in /pdfium.txt.
-FROM alfresco/alfresco-base-java:11.0.1-openjdk-centos-7-6784d76a7b81
+FROM alfresco/alfresco-base-java:11.0.1-openjdk-centos-7-4c75291884e5
ENV ALFRESCO_PDF_RENDERER_LIB_RPM_URL=https://nexus.alfresco.com/nexus/service/local/repositories/releases/content/org/alfresco/alfresco-pdf-renderer/1.1/alfresco-pdf-renderer-1.1-linux.tgz
ENV PDFIUM_LICENSE_FILE=https://github.com/Alfresco/acs-community-packaging/blob/master/distribution/src/main/resources/licenses/3rd-party/pdfium.txt
diff --git a/alfresco-docker-imagemagick/Dockerfile b/alfresco-docker-imagemagick/Dockerfile
index 13ebcb22..d7a50b38 100644
--- a/alfresco-docker-imagemagick/Dockerfile
+++ b/alfresco-docker-imagemagick/Dockerfile
@@ -2,7 +2,7 @@
# ImageMagick is from ImageMagick Studio LLC. See the license at http://www.imagemagick.org/script/license.php or in /ImageMagick-license.txt.
-FROM alfresco/alfresco-base-java:11.0.1-openjdk-centos-7-6784d76a7b81
+FROM alfresco/alfresco-base-java:11.0.1-openjdk-centos-7-4c75291884e5
ARG IMAGEMAGICK_VERSION=7.0.7-27
diff --git a/alfresco-docker-libreoffice/Dockerfile b/alfresco-docker-libreoffice/Dockerfile
index ba09549f..72ef1dc4 100644
--- a/alfresco-docker-libreoffice/Dockerfile
+++ b/alfresco-docker-libreoffice/Dockerfile
@@ -2,7 +2,7 @@
# LibreOffice is from The Document Foundation. See the license at https://www.libreoffice.org/download/license/ or in /libreoffice.txt.
-FROM alfresco/alfresco-base-java:11.0.1-openjdk-centos-7-6784d76a7b81
+FROM alfresco/alfresco-base-java:11.0.1-openjdk-centos-7-4c75291884e5
ARG LIBREOFFICE_VERSION=6.1.6
diff --git a/alfresco-docker-tika/Dockerfile b/alfresco-docker-tika/Dockerfile
index ce0c6762..6cc50233 100644
--- a/alfresco-docker-tika/Dockerfile
+++ b/alfresco-docker-tika/Dockerfile
@@ -2,7 +2,7 @@
# Tika is from Apache. See the license at http://www.apache.org/licenses/LICENSE-2.0.
-FROM alfresco/alfresco-base-java:11.0.1-openjdk-centos-7-6784d76a7b81
+FROM alfresco/alfresco-base-java:11.0.1-openjdk-centos-7-4c75291884e5
ENV APACHE_LICENSE_FILE=https://github.com/Alfresco/acs-community-packaging/blob/master/distribution/src/main/resources/licenses/3rd-party/Apache%202.0.txt
ENV JAVA_OPTS=""
diff --git a/alfresco-docker-tika/pom.xml b/alfresco-docker-tika/pom.xml
index 2159a19b..734a95f8 100644
--- a/alfresco-docker-tika/pom.xml
+++ b/alfresco-docker-tika/pom.xml
@@ -86,12 +86,12 @@
org.bouncycastle
bcprov-jdk15on
- 1.63
+ 1.64
org.bouncycastle
bcmail-jdk15on
- 1.63
+ 1.64
diff --git a/alfresco-docker-transform-misc/Dockerfile b/alfresco-docker-transform-misc/Dockerfile
index 972c37a6..4fe2c395 100644
--- a/alfresco-docker-transform-misc/Dockerfile
+++ b/alfresco-docker-transform-misc/Dockerfile
@@ -1,6 +1,6 @@
# Image provides a container in which to run miscellaneous transformations for Alfresco Content Services.
-FROM alfresco/alfresco-base-java:11.0.1-openjdk-centos-7-6784d76a7b81
+FROM alfresco/alfresco-base-java:11.0.1-openjdk-centos-7-4c75291884e5
ENV APACHE_LICENSE_FILE=https://github.com/Alfresco/acs-community-packaging/blob/master/distribution/src/main/resources/licenses/3rd-party/Apache%202.0.txt
ENV JAVA_OPTS=""
diff --git a/alfresco-docker-transform-misc/pom.xml b/alfresco-docker-transform-misc/pom.xml
index f4c44288..964f7b45 100644
--- a/alfresco-docker-transform-misc/pom.xml
+++ b/alfresco-docker-transform-misc/pom.xml
@@ -70,7 +70,7 @@
org.apache.pdfbox
pdfbox-tools
- 2.0.17
+ 2.0.18
diff --git a/alfresco-transformer-base/pom.xml b/alfresco-transformer-base/pom.xml
index c55d8746..2fd9a99b 100644
--- a/alfresco-transformer-base/pom.xml
+++ b/alfresco-transformer-base/pom.xml
@@ -72,7 +72,7 @@
org.apache.maven.plugins
maven-jar-plugin
- 3.1.2
+ 3.2.0
diff --git a/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java b/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java
index 47eb8c6e..f561b8ef 100644
--- a/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java
+++ b/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java
@@ -35,7 +35,6 @@ import static org.springframework.http.HttpHeaders.CONTENT_TYPE;
import static org.springframework.http.HttpStatus.BAD_REQUEST;
import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
import static org.springframework.http.HttpStatus.OK;
-import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
@@ -352,7 +351,7 @@ public abstract class AbstractTransformerControllerTest
String response = mockMvc
.perform(MockMvcRequestBuilders.get("/transform/config"))
.andExpect(status().is(OK.value()))
- .andExpect(header().string(CONTENT_TYPE, APPLICATION_JSON_UTF8_VALUE))
+ .andExpect(header().string(CONTENT_TYPE, APPLICATION_JSON_VALUE))
.andReturn().getResponse().getContentAsString();
TransformConfig transformConfig = objectMapper.readValue(response, TransformConfig.class);
@@ -371,7 +370,7 @@ public abstract class AbstractTransformerControllerTest
String response = mockMvc
.perform(MockMvcRequestBuilders.get("/transform/config"))
.andExpect(status().is(OK.value()))
- .andExpect(header().string(CONTENT_TYPE, APPLICATION_JSON_UTF8_VALUE))
+ .andExpect(header().string(CONTENT_TYPE, APPLICATION_JSON_VALUE))
.andReturn().getResponse().getContentAsString();
TransformConfig transformConfig = objectMapper.readValue(response, TransformConfig.class);
@@ -398,7 +397,7 @@ public abstract class AbstractTransformerControllerTest
String response = mockMvc
.perform(MockMvcRequestBuilders.get("/transform/config"))
.andExpect(status().is(OK.value()))
- .andExpect(header().string(CONTENT_TYPE, APPLICATION_JSON_UTF8_VALUE))
+ .andExpect(header().string(CONTENT_TYPE, APPLICATION_JSON_VALUE))
.andReturn().getResponse().getContentAsString();
TransformConfig transformConfig = objectMapper.readValue(response, TransformConfig.class);
@@ -421,7 +420,7 @@ public abstract class AbstractTransformerControllerTest
String response = mockMvc
.perform(MockMvcRequestBuilders.get("/transform/config"))
.andExpect(status().is(OK.value()))
- .andExpect(header().string(CONTENT_TYPE, APPLICATION_JSON_UTF8_VALUE))
+ .andExpect(header().string(CONTENT_TYPE, APPLICATION_JSON_VALUE))
.andReturn().getResponse().getContentAsString();
TransformConfig transformConfig = objectMapper.readValue(response, TransformConfig.class);
diff --git a/docs/build-and-release.md b/docs/build-and-release.md
index 0c1d88bb..b9466530 100644
--- a/docs/build-and-release.md
+++ b/docs/build-and-release.md
@@ -4,36 +4,29 @@ The `.travis.yml` config file can be found in the root of the repository.
## Stages and Jobs
-1. **Build**: Java Build with Unit and Integration Tests, WhiteSource
-2. **Release**: Publish to Quay & DockerHub, Publish the S3 staging
-3. **Company Release**: Publish to S3 release
+1. **Build**: Java build with unit tests, integration tests and WhiteSource scan.
+2. **Release**: Release with artifact deployment to Nexus and AWS Staging bucket.
+3. **Company Release**: Artifact deployment to AWS Release bucket.
## Branches
Travis CI builds differ by branch:
-* `master`:
- - regular builds which include only the _Build_ stage;
- - the _Build_ stage updates the `latest` T-Engines images (only
- from the `master` branch) on both Quay and DockerHub:
- - alfresco/alfresco-pdf-renderer
- - alfresco/alfresco-imagemagick
- - alfresco/alfresco-tika
- - alfresco/alfresco-libreoffice
-
-* `ATS-*` (any branch starting with "ATS-"), `SP/1.3.N` and `SP/2.0.N`:
- - regular builds which include only the _Build_ stage;
- - although built and used on the CI agent, no docker images are updated on remote repositories;
-* `release`:
- - builds that include the _Build_ and _Release_ stages;
- - PR builds with release as the target branch only execute dry runs of the actual release,
- without actually publishing anything;
-* `release/SP/1.3.N` and `release/SP/2.0.N`:
- - builds that include the _Build_ and _Release_ stages;
- - PR builds with one of the release branches as the target branch only execute dry runs of the actual release,
-without actually publishing anything;
- - the branches should be deleted once the builds are completed
-* `company_release`:
- - builds that include only the `company_release` stage;
+* `master` / `SP/*` / `HF/*` branches:
+ - regular builds which include the _Build_ stage;
+ > On the `master` branch only the _Build_ stage updates the `latest` T-Engines images on
+ > both Quay and DockerHub:
+ > - alfresco/alfresco-pdf-renderer
+ > - alfresco/alfresco-imagemagick
+ > - alfresco/alfresco-tika
+ > - alfresco/alfresco-libreoffice
+ - if the commit message contains the `[trigger release]` tag, the builds will also
+ include the _Release_ stage;
+ - PR builds where the latest commit contains the `[trigger release]` tag will execute dry runs
+ of the release jobs (no artifacts will be published until the PR is actually merged).
+* `ATS-*` branches:
+ - regular builds which include only the _Build_ and _Tests_ stages;
+* `company_release` branch:
+ - builds that include the _Company Release_ stage only.
- the `company_release` branch should be used for one-off events; once used (a build
completes), the branch should be deleted.
@@ -42,65 +35,43 @@ All other branches are ignored.
## Release process steps & info
Prerequisites:
- - the `master` branch has a green build and it contains all the changes that should be included in
- the next release
+ - the `master` / `SP/*` / `HF/*` branch is green and it contains all the changes that should be
+ included in the next release.
Steps:
-1. Create a new branch from the `master` branch with the name `ATS-###_release_version`;
-2. (Optional) Update the project version if the current POM version is not the next desired
- release; use a maven command, i.e. `mvn versions:set -DnewVersion=2.0.19-SNAPSHOT versions:commit`;
-3. Update the project's dependencies (remove the `-SNAPSHOT` suffixes) through a new commit on the
- `ATS-###_release_version` branch;
-4. Open a new Pull Request from the `ATS-###_release_version` branch into the `release` branch and
- wait for a green build; the **Release** stage on the PR build will only execute a _Dry_Run_ of
- the release;
-5. Once it is approved, merge the PR through the **Create a merge commit** option (as opposed to
- _Squash and merge_ or _Rebase and merge_), delete the `ATS-###_release_version` branch, and wait
- for a green build on the `release` branch;
-6. Merge back the `release` branch into the `master` branch;
-7. Update the project dependencies (append the `-SNAPSHOT` suffixes)
+1. Create a new branch with the name `ATS-###_release_version` from the `master` / `SP/*`/ `HF/*`
+branch.
+2. Update the project version if the current POM version is not the next desired release; use a
+maven command, i.e.
+ ```bash
+ mvn versions:set -DnewVersion=#.##.#-SNAPSHOT versions:commit
+ ```
+3. Update the project's dependencies (remove the `-SNAPSHOT` suffixes - only for dependencies, not
+ for the local project version).
+4. Create a new commit with the `[trigger release]` tag in its message. If no local changes have
+been generated by steps (2) and (3), then an empty commit should be created - e.g.
+ ```bash
+ git commit --allow-empty -m "ATS-###: Release AIS #.##.# [trigger release]"
+ ```
+
+ > The location of the `[trigger release]` tag in the commit message is irrelevant.
-Steps (6) and (7) can be done either directly from an IDE or through the GitHub flow, by creating
-another branch and PR. Just make sure you don't add extra commits directly to the release branch,
-as this will trigger another release.
-
-After the release, the reference deployments (docker-compose, helm) should be updated with the
-latest docker image tags.
-
-### Release of a Service Pack (SP/1.3.N or SP/2.0.N)
-Prerequisites:
- - the `SP/` ( could be 1.3.N or 2.0.N) branch has a green build and it contains all the changes that should be included in
- the next release
-
-**NOTE**: Make sure you release the proper version and the `SP/` is merged into the correct `release/SP/` (both having the same version).
-E.g. When releasing a 1.3.N Service Pack, a new branch (`ATS-###_release_version`) should be created from `SP/1.3.N` and the PR should target the `release/SP/1.3.N` branch.
-
-Steps (similar to those describing the release from `master`):
-1. Create a new branch from the `SP/` (SP/1.3.N or SP/2.0.N) branch with the name `ATS-###_release_version`;
-2. (Optional) Update the project version if the current POM version is not the next desired
- release; use a maven command, i.e. `mvn versions:set -DnewVersion=1.3.1-SNAPSHOT versions:commit`;
-3. Update the project's dependencies (remove the `-SNAPSHOT` suffixes) through a new commit on the
- `ATS-###_release_version` branch;
-4. Open a new Pull Request from the `ATS-###_release_version` branch into the `release/SP/` branch and
- wait for a green build; the **Release** stage on the PR build will only execute a _Dry_Run_ of
- the release;
-5. Once it is approved, merge the PR through the **Create a merge commit** option (as opposed to
- _Squash and merge_ or _Rebase and merge_), delete the `ATS-###_release_version` branch, and wait
- for a green build on the `release` branch;
-6. Merge back the `release/SP/` branch into the `SP/` branch;
-7. Update the project dependencies (append the `-SNAPSHOT` suffixes)
+ > If for any reason your PR contains multiple commits, the commit with the `[trigger release]`
+ tag should be the last (newest) one. This will trigger the Release dry runs.
+5. Open a new Pull Request from the `ATS-###_release_version` branch into the original
+`master` / `SP/*` / `HF/*` branch and wait for a green build; the **Release** stage on the PR build
+ will only execute a _Dry_Run_ of the release.
+6. Once it is approved, merge the PR, preferably through the **Rebase and merge** option. If the
+**Create a merge commit** (_Merge pull request_) or **Squash and merge** options are used, you
+need to ensure that the _commit message_ contains the `[trigger release]` tag (sub-string).
## Company Release process steps & info
Prerequisites:
- - Engineering Release of the desired version has been done.
-
-Steps:
-1. Create a new `company_release` branch from `release`. This job uses the git tag to identify the
- version to be uploaded to S3 release bucket.
-2. If the last commit on `company_release` branch contains `[skip_ci]` in its message it will
- prevent Travis from starting a build. Push an empty commit in order to trigger the build,
- `git commit --allow-empty -m "Company Release "`. Wait for a green build on the branch.
-3. Delete local and remote `company_release` branch.
+ - The **Release** stage is complete - i.e. the release commit is tagged and the release
+ artifacts are deployed on Nexus.
-### Release of a Service Pack (SP/1.3.N or SP/2.0.N)
-Follow the steps described in the previous section, but instead of creating the `company_release` from `release`, it needs to be created from the proper `release/SP/` (depending on what version needs the Company Release).
+Steps:
+1. Create a new `company_release` branch from the `master` / `SP/*`/ `HF/*` branch. This job uses
+the latest branch git tag to identify the version that must be uploaded to the S3 release bucket.
+2. Wait for a green build on the branch.
+3. Delete local and remote `company_release` branch.
diff --git a/pom.xml b/pom.xml
index a0e9a8f6..81d15f51 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.1.8.RELEASE
+ 2.2.3.RELEASE
@@ -15,19 +15,19 @@
pom
- 1.8
- 1.8
- 1.8
+ 11
+ 11
+ 11
latest
- 2.0.17
+ 2.0.18
3.0.1.1
${project.version}
1.0.2.7
5.15.9
- 2.10.0
- 3.3.3
- 4.0.1
+ 2.10.2
+ 3.3.5
+ 4.1.1
@@ -43,7 +43,7 @@
scm:git:https://github.com/Alfresco/alfresco-transform-core.git
scm:git:https://github.com/Alfresco/alfresco-transform-core.git
https://github.com/Alfresco/alfresco-transform-core
- 2.1.0
+ HEAD
@@ -140,7 +140,7 @@
com.google.guava
guava
- 28.1-jre
+ 28.2-jre
@@ -163,7 +163,7 @@
commons-codec
commons-codec
- 1.13
+ 1.14
@@ -292,19 +292,19 @@
io.fabric8
fabric8-maven-plugin
- 4.2.0
+ 4.3.1
io.fabric8
docker-maven-plugin
- 0.31.0
+ 0.32.0
true
before-integration-tests
pre-integration-test
-
+ stop
start