From 7cfd0304154ed36f395e678c694ca3dffb73f81d Mon Sep 17 00:00:00 2001
From: vharseko <vharseko@3a-systems.ru>
Date: Tue, 19 Apr 2022 13:05:44 +0000
Subject: [PATCH] Migrate release from Travis to GitHub (#217)

---
 opendj-packages/opendj-docker/pom.xml                                                             |    3 
 opendj-packages/opendj-docker/Dockerfile-alpine                                                   |    0 
 opendj-packages/pom.xml                                                                           |   16 +
 opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateMessageFileMojo.java |    2 
 opendj-packages/opendj-msi/opendj-msi-standard/pom.xml                                            |   67 +++++--
 opendj-doc-generated-ref/pom.xml                                                                  |    2 
 opendj-packages/opendj-msi/pom.xml                                                                |    6 
 .github/workflows/deploy.yml                                                                      |  116 +++++++++++-
 pom.xml                                                                                           |   13 +
 opendj-packages/opendj-docker/Dockerfile                                                          |   11 
 /dev/null                                                                                         |  102 -----------
 opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateRefEntriesMojo.java  |    7 
 .github/workflows/release.yml                                                                     |  135 +++++++++++++++
 .github/workflows/build.yml                                                                       |   43 ++++
 14 files changed, 368 insertions(+), 155 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 05bbd0b..578bba1 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -15,14 +15,28 @@
         java: [ '8', '11']
         os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ]
     steps:
-    - uses: actions/checkout@v2
+    - name:  Install wine+rpm for ditribution
+      if: runner.os == 'Linux'
+      shell: bash
+      run:   |
+         sudo dpkg --add-architecture i386
+         sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 86B72ED9
+         sudo add-apt-repository 'deb [arch=amd64] https://mirror.mxe.cc/repos/apt focal main'
+         sudo apt -qq update
+         sudo apt install -y --allow-downgrades libpcre2-8-0=10.34-7
+         sudo apt install -y wine32 
+         wine --version
+    - uses: actions/checkout@v3
+      with:
+        fetch-depth: 0
+        submodules: recursive
     - name: Java ${{ matrix.Java }} (${{ matrix.os }})
       uses: actions/setup-java@v2
       with:
         java-version: ${{ matrix.java }}
         distribution: 'adopt'
     - name: Cache Maven packages
-      uses: actions/cache@v2
+      uses: actions/cache@v3
       with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }}
@@ -30,4 +44,27 @@
     - name: Build with Maven
       env:
         MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.retryHandler.count=10
-      run: mvn --batch-mode  --update-snapshots package --file pom.xml
\ No newline at end of file
+      run: mvn --batch-mode --errors --update-snapshots package --file pom.xml
+    - name: Docker build
+      if: runner.os == 'Linux'
+      shell: bash
+      run:   |
+         git fetch -t; export git_version_last="$(git describe --abbrev=0 --tags)" ; echo "last release: $git_version_last"
+         docker build opendj-packages/opendj-docker -f opendj-packages/opendj-docker/Dockerfile -t ${GITHUB_REPOSITORY,,}:$git_version_last --build-arg VERSION=$git_version_last
+         docker build opendj-packages/opendj-docker -f opendj-packages/opendj-docker/Dockerfile-alpine -t ${GITHUB_REPOSITORY,,}:$git_version_last-alpine --build-arg VERSION=$git_version_last
+    - name: Upload artifacts OpenDJ Server
+      uses: actions/upload-artifact@v3
+      with:
+        name: ${{ matrix.os }}-${{ matrix.java }}
+        retention-days: 5
+        path:  |
+            opendj-server-legacy/target/package/*.zip
+            opendj-ldap-toolkit/target/*.zip
+            opendj-packages/opendj-deb/opendj-deb-standard/target/*.deb
+            opendj-packages/opendj-rpm/opendj-rpm-standard/target/rpm/opendj/RPMS/noarch/*.rpm
+            opendj-packages/opendj-msi/opendj-msi-standard/target/*.msi
+            opendj-packages/opendj-docker/target/Dockerfile.zip
+            opendj-packages/opendj-openshift-template/*.yaml
+            opendj-doc-generated-ref/target/*.zip
+            opendj-dsml-servlet/target/*.war
+            opendj-rest2ldap-servlet/target/*.war
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 3034bf4..852df8a 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -1,4 +1,4 @@
-name: Deploy Maven
+name: Package/Deploy Maven
 
 on:
   workflow_run:
@@ -8,21 +8,28 @@
 jobs:
   deploy:
     name: Maven deploy
-    if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event=='push' }}
+    if: ${{ github.event.workflow_run.conclusion == 'success' }}
     runs-on: 'ubuntu-latest'
     steps:
       - name: Print github context
         env:
           GITHUB_CONTEXT: ${{ toJSON(github) }}
         run: echo "$GITHUB_CONTEXT"
-      - name: Install gpg secret key
-        env:
-           GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
-        if: ${{ env.GPG_PRIVATE_KEY!=''}}
-        run: |
-           cat <(echo -e "${{ secrets.GPG_PRIVATE_KEY }}") | gpg --batch --import
-           gpg --list-secret-keys --keyid-format LONG
-      - uses: actions/checkout@v2
+      - name: Install wine+rpm for ditribution
+        if: runner.os == 'Linux'
+        shell: bash
+        run:   |
+           sudo dpkg --add-architecture i386
+           sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 86B72ED9
+           sudo add-apt-repository 'deb [arch=amd64] https://mirror.mxe.cc/repos/apt focal main'
+           sudo apt -qq update
+           sudo apt install -y --allow-downgrades libpcre2-8-0=10.34-7
+           sudo apt install -y wine32 
+           wine --version
+      - uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
+          submodules: recursive
       - name: Set up Java for publishing to Maven Central Repository OSS
         uses: actions/setup-java@v2
         with:
@@ -37,10 +44,95 @@
          path: ~/.m2/repository
          key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }}
          restore-keys: ${{ runner.os }}-m2-repository
+      - name: Install gpg secret key
+        env:
+           GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
+        if: ${{ env.GPG_PRIVATE_KEY!=''}}
+        run: |
+           cat <(echo -e "${{ secrets.GPG_PRIVATE_KEY }}") | gpg --batch --import
+           gpg --list-secret-keys --keyid-format LONG
+      - name: Build package local
+        env:
+          MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.retryHandler.count=10
+        if: ${{ !(github.event.workflow_run.event=='push' && env.MAVEN_USERNAME!='' && env.MAVEN_PASSWORD!='')}}
+        run: mvn --batch-mode --errors --update-snapshots -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} package --file pom.xml
       - name: Publish to the Maven Central Repository
         env:
           MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
           MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
           MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.retryHandler.count=10
-        if: ${{ env.MAVEN_USERNAME!='' && env.MAVEN_PASSWORD!=''}}
-        run: mvn --batch-mode --update-snapshots -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} deploy --file pom.xml
+        if: ${{ github.event.workflow_run.event=='push' && env.MAVEN_USERNAME!='' && env.MAVEN_PASSWORD!=''}}
+        run: mvn --batch-mode --errors --update-snapshots -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} deploy --file pom.xml
+      - name: Upload artifacts OpenDJ Server
+        uses: actions/upload-artifact@v3
+        with:
+         name: OpenDJ Server
+         path: opendj-server-legacy/target/package/*.zip
+      - name: Upload artifacts OpenDJ SDK Toolkit
+        uses: actions/upload-artifact@v3
+        with:
+         name: OpenDJ SDK Toolkit
+         path: opendj-ldap-toolkit/target/*.zip
+      - name: Upload artifacts OpenDJ Debian Package
+        uses: actions/upload-artifact@v3
+        with:
+         name: OpenDJ Debian Package
+         path: opendj-packages/opendj-deb/opendj-deb-standard/target/*.deb
+      - name: Upload artifacts OpenDJ RPM Package
+        uses: actions/upload-artifact@v3
+        with:
+         name: OpenDJ RPM Package
+         path: opendj-packages/opendj-rpm/opendj-rpm-standard/target/rpm/opendj/RPMS/noarch/*.rpm
+      - name: Upload artifacts OpenDJ MSI Package
+        uses: actions/upload-artifact@v3
+        with:
+         name: OpenDJ MSI Package
+         path: opendj-packages/opendj-msi/opendj-msi-standard/target/*.msi
+      - name: Upload artifacts OpenDJ Docker Packages
+        uses: actions/upload-artifact@v3
+        with:
+         name: OpenDJ Docker Packages
+         path: opendj-packages/opendj-docker/target/Dockerfile.zip
+      - name: Upload artifacts OpenDJ Openshift template
+        uses: actions/upload-artifact@v3
+        with:
+         name: OpenDJ Openshift template
+         path: opendj-packages/opendj-openshift-template/*.yaml
+      - name: Upload artifacts OpenDJ Doc Generated Reference
+        uses: actions/upload-artifact@v3
+        with:
+         name: OpenDJ Doc Generated References
+         path: opendj-doc-generated-ref/target/*.zip
+      - name: Upload artifacts OpenDJ DSML Gateway
+        uses: actions/upload-artifact@v3
+        with:
+         name: OpenDJ DSML Gateway
+         path: opendj-dsml-servlet/target/*.war
+      - name: Upload artifacts OpenDJ Commons REST LDAP Gateway
+        uses: actions/upload-artifact@v3
+        with:
+         name: OpenDJ Commons REST LDAP Gateway
+         path: opendj-rest2ldap-servlet/target/*.war
+      - name: Configure Git User
+        run: |
+          git config --global user.name "Open Identity Platform Community"
+          git config --global user.email "open-identity-platform-opendj@googlegroups.com"
+          cd ..
+      - uses: actions/checkout@v3
+        continue-on-error: true
+        with:
+          repository: ${{ github.repository }}.wiki
+          path: ${{ github.event.repository.name }}.wiki
+      - name: Publish docs in wiki
+        continue-on-error: true
+        shell: bash
+        env:
+          GITHUB_ACTOR: ${{ github.actor }}
+          GITHUB_TOKEN: ${{ github.token }}
+        run:   |
+           cd ${{ github.event.repository.name }}.wiki
+           rm -rf docbkx
+           mv ../opendj-doc-generated-ref/target/docbkx ../${{ github.event.repository.name }}.wiki
+           git add -A
+           git commit -a -m "upload docs after deploy ${{ github.sha }}"
+           git push --quiet --force
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..1bfd3dc
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,135 @@
+name: Release Maven
+
+on:
+  workflow_dispatch:
+    inputs:
+      releaseVersion:
+        description: "Default version to use when preparing a release."
+        required: true
+        default: "X.Y.Z"
+      developmentVersion:
+        description: "Default version to use for new local working copy."
+        required: true
+        default: "X.Y.Z-SNAPSHOT"
+jobs:
+  release:
+    name: Maven release
+    runs-on: 'ubuntu-latest'
+    steps:
+      - name: Print github context
+        env:
+          GITHUB_CONTEXT: ${{ toJSON(github) }}
+        run: echo "$GITHUB_CONTEXT"
+      - name: Install wine+rpm for ditribution
+        shell: bash
+        run:   |
+           sudo dpkg --add-architecture i386
+           sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 86B72ED9
+           sudo add-apt-repository 'deb [arch=amd64] https://mirror.mxe.cc/repos/apt focal main'
+           sudo apt -qq update
+           sudo apt install -y --allow-downgrades libpcre2-8-0=10.34-7
+           sudo apt install -y wine32 
+           wine --version
+      - uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
+          submodules: recursive
+      - name: Set up Java for publishing to Maven Central Repository OSS
+        uses: actions/setup-java@v2
+        with:
+          java-version: '8'
+          distribution: 'adopt'
+          server-id: ossrh
+          server-username: MAVEN_USERNAME
+          server-password: MAVEN_PASSWORD
+      - name: Cache Maven packages
+        uses: actions/cache@v2
+        with:
+         path: ~/.m2/repository
+         key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }}
+         restore-keys: ${{ runner.os }}-m2-repository
+      - name: Install gpg secret key
+        env:
+           GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
+        if: ${{ env.GPG_PRIVATE_KEY!=''}}
+        run: |
+           cat <(echo -e "${{ secrets.GPG_PRIVATE_KEY }}") | gpg --batch --import
+           gpg --list-secret-keys --keyid-format LONG
+      - name: Configure Git User
+        run: |
+          git config --global user.name "Open Identity Platform Community"
+          git config --global user.email "open-identity-platform-opendj@googlegroups.com"
+      - name: Release and publish to the Maven Central Repository
+        env:
+          GITHUB_ACTOR: ${{ github.actor }}
+          GITHUB_TOKEN: ${{ github.token }}
+          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
+          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
+          MAVEN_OPTS: -Dhttps.protocols=TLSv1.2 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.retryHandler.count=10
+        if: ${{ env.MAVEN_USERNAME!='' && env.MAVEN_PASSWORD!='' }}
+        run: mvn --batch-mode -Darguments="-Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }}" -DtagNameFormat="${{ github.event.inputs.releaseVersion }}" -DreleaseVersion=${{ github.event.inputs.releaseVersion }} -DdevelopmentVersion=${{ github.event.inputs.developmentVersion }} release:prepare release:perform --file pom.xml
+      - name: Release on GitHub
+        uses: softprops/action-gh-release@v1
+        with:
+          name: ${{ github.event.inputs.releaseVersion }}
+          tag_name: ${{ github.event.inputs.releaseVersion }}
+          draft: false
+          prerelease: false
+          fail_on_unmatched_files: false
+          generate_release_notes: true
+          files: |
+            opendj-server-legacy/target/package/*.zip
+            opendj-ldap-toolkit/target/*.zip
+            opendj-packages/opendj-deb/opendj-deb-standard/target/*.deb
+            opendj-packages/opendj-rpm/opendj-rpm-standard/target/rpm/opendj/RPMS/noarch/*.rpm
+            opendj-packages/opendj-msi/opendj-msi-standard/target/*.msi
+            opendj-packages/opendj-docker/target/Dockerfile.zip
+            opendj-packages/opendj-openshift-template/*.yaml
+            opendj-doc-generated-ref/target/*.zip
+            opendj-dsml-servlet/target/*.war
+            opendj-rest2ldap-servlet/target/*.war
+      - name: Docker publish hub.docker.com
+        if: ${{ secrets.DOCKER_PASSWORD!='' && secrets.DOCKER_USERNAME!=''}}
+        continue-on-error: true
+        shell: bash
+        run:   |
+          echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
+          docker build opendj-packages/opendj-docker -f opendj-packages/opendj-docker/Dockerfile -t ${GITHUB_REPOSITORY,,} -t ${GITHUB_REPOSITORY,,}:${{ github.event.inputs.releaseVersion }} --build-arg VERSION=${{ github.event.inputs.releaseVersion }}
+          docker push ${GITHUB_REPOSITORY,,}
+          docker push ${GITHUB_REPOSITORY,,}:${{ github.event.inputs.releaseVersion }}
+          docker build opendj-packages/opendj-docker -f opendj-packages/opendj-docker/Dockerfile-alpine -t ${GITHUB_REPOSITORY,,}:alpine -t ${GITHUB_REPOSITORY,,}:${{ github.event.inputs.releaseVersion }}-alpine --build-arg VERSION=${{ github.event.inputs.releaseVersion }}
+          docker push ${GITHUB_REPOSITORY,,}:alpine
+          docker push ${GITHUB_REPOSITORY,,}:${{ github.event.inputs.releaseVersion }}-alpine
+      - name: Docker publish docker.pkg.github.com
+        continue-on-error: true
+        shell: bash
+        env:
+          GITHUB_REPOSITORY_NAME: ${{ github.event.repository.name }}
+        run:   |
+          echo "${{ secrets.GITHUB_TOKEN }}" | docker login -u "Open Identity Platform Community" docker.pkg.github.com --password-stdin
+          docker build opendj-packages/opendj-docker -f opendj-packages/opendj-docker/Dockerfile -t docker.pkg.github.com/${GITHUB_REPOSITORY,,}/${GITHUB_REPOSITORY_NAME,,} -t docker.pkg.github.com/${GITHUB_REPOSITORY,,}:${{ github.event.inputs.releaseVersion }}/${GITHUB_REPOSITORY_NAME,,} --build-arg VERSION=${{ github.event.inputs.releaseVersion }}
+          docker push docker.pkg.github.com/${GITHUB_REPOSITORY,,}/${GITHUB_REPOSITORY_NAME,,}
+          docker push docker.pkg.github.com/${GITHUB_REPOSITORY,,}/${GITHUB_REPOSITORY_NAME,,}:${{ github.event.inputs.releaseVersion }}
+          docker build opendj-packages/opendj-docker -f opendj-packages/opendj-docker/Dockerfile-alpine -t docker.pkg.github.com/${GITHUB_REPOSITORY,,}/${GITHUB_REPOSITORY_NAME,,}:alpine -t docker.pkg.github.com/${GITHUB_REPOSITORY,,}/${GITHUB_REPOSITORY_NAME,,}:${{ github.event.inputs.releaseVersion }}-alpine --build-arg VERSION=${{ github.event.inputs.releaseVersion }}
+          docker push docker.pkg.github.com/${GITHUB_REPOSITORY,,}/${GITHUB_REPOSITORY_NAME,,}:alpine
+          docker push docker.pkg.github.com/${GITHUB_REPOSITORY,,}/${GITHUB_REPOSITORY_NAME,,}:${{ github.event.inputs.releaseVersion }}-alpine
+      - uses: actions/checkout@v3
+        continue-on-error: true
+        with:
+          repository: ${{ github.repository }}.wiki
+          path: ${{ github.event.repository.name }}.wiki
+      - name: Publish docs in wiki
+        continue-on-error: true
+        shell: bash
+        env:
+          GITHUB_ACTOR: ${{ github.actor }}
+          GITHUB_TOKEN: ${{ github.token }}
+        run:   |
+           cd ${{ github.event.repository.name }}.wiki
+           rm -rf docbkx
+           mv ../opendj-doc-generated-ref/target/docbkx ../${{ github.event.repository.name }}.wiki
+           git add -A
+           git commit -a -m "upload docs after release ${{ github.event.inputs.releaseVersion }}"
+           git push --quiet --force
+           git tag -f ${{ github.event.inputs.releaseVersion }}           
+           git push --quiet --force ${{ github.event.inputs.releaseVersion }}
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 80f98a3..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,102 +0,0 @@
-language: java
-cache:
-  directories:
-   - $HOME/.m2
-matrix:
-  include:
-  - os: linux
-    jdk: openjdk8
-    sudo: required
-    services:
-      - docker
-    before_deploy:
-      - git config --local user.name "Open Identity Platform Community" && git config --local user.email "open-identity-platform-opendj@googlegroups.com"
-      - git checkout -f $TRAVIS_BRANCH
-      - git tag -f $git_version && git tag -d $git_version
-      - mvn -B -DtagNameFormat="$git_version" -DreleaseVersion="$git_version" -DignoreSnapshots=true  -DpushChanges=false -DscmCommentPrefix="[ci skip] $git_version_last->$git_version " -DskipTests -Darguments=-DskipTests -Dresume=false -P distribution release:prepare
-      - git push --quiet --force https://$GITHUBKEY@github.com/$TRAVIS_REPO_SLUG.git >/dev/null 2>&1
-      - git push --quiet --force https://$GITHUBKEY@github.com/$TRAVIS_REPO_SLUG.git $git_version >/dev/null 2>&1
-      - export compare="$(git rev-list -n 1 $git_version_last)...$(git rev-list -n 1 $git_version)"
-    deploy:
-      provider: releases
-      draft: false
-      prerelease: false
-      target_commitish: $(git rev-list -n 1 $git_version)
-      tag_name: $git_version
-      name: $git_version
-      body: $compare
-      api_key:
-        secure: bprK7kiogA+nA4TuYU7BHHIPasg2Ve7dG/eZRQ+mJpH2y6GXFBqoEpN2AQECrJ5IgVQZ9WyBc+/PXhjh/VYrg3bvU9lE2zTnkQa5kiPFGnC5cOmqO2dSdUjiBcm3yBO9J3pL//Qsr8g7fv9g5580yMW/NYMs0R70S5ystqjJFSFQHXLkWJBzXQnIyMqjPNsndmqR9lnqX690u298z9H56pNrZqK851NVjTX9WKIoWlVezCSp3nwvAD5tW+p1A0Sy/6kPheYyudEHvHO5zUe33vh3lxB/qqXzIszlEPvIzzcig/ElxTCQ+4eWL34MlGLUzeJ8DdR7JshIPkTrAQ9i5nbOIP0NLu5wfNh642Sl4diGqa+7ioAmhIQuQmBJcOb0l9pP01fLVmgJoPVLGctWpklB9FdNCu96EtHmqj6FmsQzSTpmkfhCjRrgPHQYTZNcl25xdN6GSYZpiP2fYSmp06Wz2mi2OO2gvwjU2iX2b8j/koJ8kWQHrCYamTKbu4X08Vd+lE3EupTBfBzmiPiu8pC5PRi+nmilKdg40lsga++HB3IRRoPYhULo29Yfh6kMmWrP4Pn7RFOyI0Jm5NhLlZW2A5Q+FpEr8qyiLV1eC5RxMlAdaqassz2aWgwxrJC2taF0gUnZbg6w0xa5O0UAl0VAAGAJb2cXl9yJDCkYL18=
-      skip_cleanup: true
-      overwrite: true
-      file_glob: true
-      file:
-        - "opendj-server-legacy/target/package/*.zip"
-        - "opendj-ldap-toolkit/target/*.zip"
-        - "opendj-packages/opendj-deb/opendj-deb-standard/target/*.deb"
-        - "opendj-packages/opendj-rpm/opendj-rpm-standard/target/rpm/opendj/RPMS/noarch/*.rpm"
-        - "opendj-packages/opendj-msi/opendj-msi-standard/target/*.msi"
-        - "opendj-packages/opendj-docker/target/Dockerfile.zip"
-        - "opendj-packages/opendj-openshift-template/*.yaml"
-        - "opendj-doc-generated-ref/target/*.zip"
-        - "opendj-dsml-servlet/target/*.war"
-        - "opendj-rest2ldap-servlet/target/*.war"
-      on:
-        repo: OpenIdentityPlatform/OpenDJ
-        tags: false
-        branch:
-          - master
-          - travis
-    after_deploy:
-      - echo 'after_deploy'
-      - echo 'publish docs in wiki'
-      -   git clone https://$GITHUBKEY@github.com/$TRAVIS_REPO_SLUG.wiki.git ../wiki >/dev/null 2>&1
-      -   rm -rf ../wiki/docbkx; mv opendj-doc-generated-ref/target/docbkx ../wiki;
-      -   cd ../wiki; git add -A; git commit -a -m "upload docs after deploy $git_version"; git tag -f $git_version
-      -   git push --quiet --force https://$GITHUBKEY@github.com/$TRAVIS_REPO_SLUG.wiki.git >/dev/null 2>&1
-      -   git push --quiet --force https://$GITHUBKEY@github.com/$TRAVIS_REPO_SLUG.wiki.git $git_version >/dev/null 2>&1
-      -   cd $TRAVIS_BUILD_DIR
-      - echo 'build and push Docker'
-      -   echo "$DOCKER_PASSWORD" | docker login -u "openidentityplatformcommunity" --password-stdin
-      -   docker build ./opendj-packages/opendj-docker -t openidentityplatform/opendj -t openidentityplatform/opendj:$git_version
-      -   docker push openidentityplatform/opendj:$git_version
-      -   docker push openidentityplatform/opendj
-      - echo 'build and push Github Docker'
-      -   echo "$GITHUBKEY" | docker login -u "Open Identity Platform Community" docker.pkg.github.com --password-stdin
-      -   docker build ./opendj-packages/opendj-docker -t docker.pkg.github.com/openidentityplatform/opendj/opendj -t docker.pkg.github.com/openidentityplatform/opendj/opendj:$git_version
-      -   docker push docker.pkg.github.com/openidentityplatform/opendj/opendj:$git_version
-      -   docker push docker.pkg.github.com/openidentityplatform/opendj/opendj         
-  - os: linux
-    jdk: oraclejdk11
-  - os: linux
-    jdk: openjdk11
-  - os: osx
-    osx_image: xcode9.3
-    env:
-      - WINEPREFIX=~/.wine32 WINEARCH=win32 # wine on mac hangs
-  - os: osx
-    osx_image: xcode10.1
-    env:
-      - WINEPREFIX=~/.wine32 WINEARCH=win32 # wine on mac hangs
-  allow_failures:
-  - os: osx
-branches:
-  except:
-    - /[0-9]+\.[0-9]+\.[0-9]+$/
-notifications:
-  email:
-  - open-identity-platform-opendj@googlegroups.com
-before_install:
-  - date -u
-  - uname -a
-  - if [[ "$TRAVIS_OS_NAME" == "osx" ]] ; then brew update && brew install rpm && brew cask install wine-stable; else sudo apt-get install -y rpm && sudo dpkg --add-architecture i386 && wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add - && sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main' && sudo apt update && sudo apt install --install-recommends winehq-stable ; fi
-  - git fetch -t
-  - export git_version_last="$(git describe --abbrev=0 --tags)"
-  - export git_version="$(echo $git_version_last | awk -F . '{ printf "%d.%d.%d", $1,$2,$3 + 1}')"
-  - env | sort
-  - git log `git describe --tags --abbrev=0 HEAD^`..HEAD --oneline
-install:
-  - #mvn -q -B -V -DskipTests -Dmaven.javadoc.skip=true install -f commons
-script:
-  - echo "mvn -B install $INSTALL_SUFFIX"
-  - eval "mvn -B install $INSTALL_SUFFIX"
diff --git a/opendj-doc-generated-ref/pom.xml b/opendj-doc-generated-ref/pom.xml
index af03b39..999705a 100644
--- a/opendj-doc-generated-ref/pom.xml
+++ b/opendj-doc-generated-ref/pom.xml
@@ -359,7 +359,7 @@
         <profile>
             <id>man-pages</id>
             <activation>
-            		<activeByDefault>true</activeByDefault>
+            		<os><family>unix</family></os>
             	</activation>
             <build><finalName>${project.groupId}.${project.artifactId}</finalName>
                 <plugins>
diff --git a/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateMessageFileMojo.java b/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateMessageFileMojo.java
index 3484023..aaae5e3 100644
--- a/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateMessageFileMojo.java
+++ b/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateMessageFileMojo.java
@@ -365,7 +365,7 @@
         final JarFile jarFile = new JarFile(
                 Paths.get(project.getBuild().getDirectory(), "opendj", "lib", "opendj.jar").toString());
         return jarFile.getInputStream(jarFile.getJarEntry(
-                Paths.get("org", "opends", "messages", category + ".properties").toString()));
+                Paths.get("org", "opends", "messages", category + ".properties").toString().replace('\\','/')));
     }
 
     private Map<MessagePropertyKey, String> loadErrorProperties(Properties properties) throws Exception {
diff --git a/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateRefEntriesMojo.java b/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateRefEntriesMojo.java
index 61a6bad..a2168d4 100644
--- a/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateRefEntriesMojo.java
+++ b/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateRefEntriesMojo.java
@@ -274,10 +274,11 @@
                     builder.append(line).append(System.getProperty("line.separator"));
                 }
             }
+            reader.close();
             writeToFile(builder.toString(), output);
-            if (!pageCopy.delete()) {
-                throw new IOException("Failed to delete " +  pageCopy.getName());
-            }
+        }
+        if (pageCopy.exists() && !pageCopy.delete()) {
+            throw new IOException("Failed to delete " +pageCopy.getPath() + " " + pageCopy.getName());
         }
     }
 
diff --git a/opendj-packages/opendj-docker/Dockerfile b/opendj-packages/opendj-docker/Dockerfile
index 201ed80..aa79413 100644
--- a/opendj-packages/opendj-docker/Dockerfile
+++ b/opendj-packages/opendj-docker/Dockerfile
@@ -1,4 +1,4 @@
-FROM openjdk:8-jre-slim
+FROM openjdk:11-jre-slim
 
 MAINTAINER Open Identity Platform Community <open-identity-platform-opendj@googlegroups.com>
 
@@ -14,13 +14,14 @@
     OPENDJ_REPLICATION_TYPE=${OPENDJ_REPLICATION_TYPE} \
     OPENDJ_USER="opendj"
 
+ARG VERSION=@project_version@
+
 WORKDIR /opt
 
-ADD target/opendj-*.zip .
-
 RUN apt-get update \
- && apt-get install -y --no-install-recommends unzip \
- && unzip opendj-*.zip \
+ && apt-get install -y --no-install-recommends wget unzip \
+ && wget --quiet https://github.com/OpenIdentityPlatform/OpenDJ/releases/download/$VERSION/opendj-$VERSION.zip \
+ && unzip opendj-$VERSION.zip \
  && apt-get remove -y --purge unzip \
  && rm -rf /var/lib/apt/lists/* \
  && rm -r opendj-*.zip \
diff --git a/opendj-packages/opendj-docker/alpine/Dockerfile b/opendj-packages/opendj-docker/Dockerfile-alpine
similarity index 100%
rename from opendj-packages/opendj-docker/alpine/Dockerfile
rename to opendj-packages/opendj-docker/Dockerfile-alpine
diff --git a/opendj-packages/opendj-docker/pom.xml b/opendj-packages/opendj-docker/pom.xml
index 45b5a2a..7d34951 100644
--- a/opendj-packages/opendj-docker/pom.xml
+++ b/opendj-packages/opendj-docker/pom.xml
@@ -77,7 +77,8 @@
 		          <tasks>
 			          <zip basedir="${project.build.directory}" destfile="${project.build.directory}/Dockerfile.zip" includes="opendj-docker/**">
 	                  	<fileset dir="${basedir}">
-	      					<include name="Dockerfile" />  <!--NOTE DIFFERENCE HERE-->
+	      					<include name="Dockerfile*" /> 
+	      					<include name="../opendj-openshift-template/*.yaml" /> 
 	                      	<include name="bootstrap/**" />
 	                      	<include name="run.sh" />
 	  					</fileset>
diff --git a/opendj-packages/opendj-msi/opendj-msi-standard/pom.xml b/opendj-packages/opendj-msi/opendj-msi-standard/pom.xml
index 528a939..a2982cf 100644
--- a/opendj-packages/opendj-msi/opendj-msi-standard/pom.xml
+++ b/opendj-packages/opendj-msi/opendj-msi-standard/pom.xml
@@ -162,7 +162,7 @@
                         </goals>
                         <configuration>
                             <target>
-                            	   <delete dir="${user.home}/.msi" />
+                            	<delete dir="${user.home}/.msi" />
                                 <mkdir dir="${user.home}/.msi" />
                                 <copy toDir="${user.home}/.msi">
                                     <fileset dir="${package.dir}">
@@ -182,27 +182,60 @@
                                 <copy file="${msi.resources}/package.wxs" toDir="${project.build.directory}" />
                                 <copy file="${msi.resources}/opendjbanner.bmp" toDir="${project.build.directory}" />
                                 <copy file="${msi.resources}/opendjdialog.bmp" toDir="${project.build.directory}" />
-								
-								<exec executable="wine" resultproperty="WineExitStatusCode" failifexecutionfails="false">
+
+								<exec osfamily="windows" executable="${project.build.directory}\wix\heat.exe" dir="${project.build.directory}" failifexecutionfails="false" resultproperty="heatStatusCode">
+								   <arg value="dir" /> <arg value="${user.home}\.msi" />
+                                    <arg value="-nologo" />
+                                    <arg value="-cg" /><arg value="all" />
+                                    <arg value="-gg" />
+                                    <arg value="-sfrag" />
+                                    <arg value="-srd" />
+                                    <arg value="-ke" />
+                                    <arg value="-dr" /><arg value="OPENDJ" />
+                                    <arg value="-var" /><arg value="var.src" />
+                                    <arg value="-template" /><arg value="fragment" />
+                                    <arg value="-o" /><arg value="payload.wxs" />
+                                    <arg value="-v" />
+                                </exec>
+                                <exec osfamily="windows" executable="${project.build.directory}\wix\candle.exe" dir="${project.build.directory}" resultproperty="candleStatusCode">
+                                	<arg value="-nologo" />
+                                    <arg value="-dsrc=${user.home}\.msi" />
+                                    <arg value="-dname=${product.name}" />
+                                    <arg value="-dmajor=${parsedVersion.majorVersion}" />
+                                    <arg value="-dminor=${parsedVersion.minorVersion}" />
+                                    <arg value="-dpoint=${parsedVersion.incrementalVersion}" />
+                                    <arg value="package.wxs" />
+                                    <arg value="payload.wxs" />
+                                    <arg value="-v" />
+                                </exec>
+                                <exec osfamily="windows" executable="${project.build.directory}\wix\light.exe" dir="${project.build.directory}" resultproperty="lightStatusCode">
+                                    <arg value="-nologo" />
+                                    <arg value="-ext" /> <arg value="WixUIExtension" />
+                                    <arg value="-out" /> <arg value="${product.name.lowercase}-${project.version}.msi" />
+                                    <arg value="-sval" />
+                                    <arg value="-v" />
+                                    <arg value="package.wixobj" />
+                                    <arg value="payload.wixobj" />
+                                </exec>
+
+
+								<exec osfamily="unix" executable="wine" resultproperty="WineExitStatusCode" failifexecutionfails="false">
 									<arg value="wineboot" />
 									<arg value="--init" />
 								</exec>
-								<echo>WineExitStatusCode=${WineExitStatusCode}</echo>
 								
-								<exec executable="sh" resultproperty="WineTricksExitStatusCode" failifexecutionfails="false">
+								<exec osfamily="unix" executable="sh" resultproperty="WineTricksExitStatusCode" failifexecutionfails="false">
 									<arg value="${project.build.directory}/winetricks/winetricks-LAST.sh" />
 									<arg value="--unattended" />
 									<arg value="dotnet40" />
 									<arg value="dotnet_verifier" />
 								</exec>
-								<echo>WineTricksExitStatusCode=${WineTricksExitStatusCode}</echo>
 								
 								<property name="exec.heat" value="wine" /><property name="param.heat" value="${project.build.directory}/wix/heat.exe" />
 								<property name="exec.candle" value="wine" /><property name="param.candle" value="${project.build.directory}/wix/candle.exe" />
 								<property name="exec.light" value="wine" /><property name="param.light" value="${project.build.directory}/wix/light.exe" />
-							    
 							    <echo>------------------- ${exec.heat} ${param.heat} -------------------</echo>
-								<exec executable="${exec.heat}" dir="${project.build.directory}" failifexecutionfails="false" resultproperty="heatStatusCode">
+								<exec osfamily="unix"  executable="${exec.heat}" dir="${project.build.directory}" failifexecutionfails="false" resultproperty="heatStatusCode">
 								   <arg value="${param.heat}" />
                                     <arg value="dir" /> <arg value="${user.home}/.msi" />
                                     <arg value="-nologo" />
@@ -217,10 +250,9 @@
                                     <arg value="-o" /><arg value="payload.wxs" />
                                     <arg value="-v" />
                                 </exec>
-                                <echo>heatStatusCode=${heatStatusCode}</echo>
                                 <echo>------------------- ${exec.candle} ${param.candle} -------------------</echo>
-                                <exec executable="${exec.candle}" dir="${project.build.directory}" resultproperty="candleStatusCode">
-                                	   <arg value="${param.candle}" />
+                                <exec osfamily="unix" executable="${exec.candle}" dir="${project.build.directory}" resultproperty="candleStatusCode">
+                                	<arg value="${param.candle}" />
                                     <arg value="-nologo" />
                                     <arg value="-dsrc=${user.home}/.msi" />
                                     <arg value="-dname=${product.name}" />
@@ -231,10 +263,9 @@
                                     <arg value="payload.wxs" />
                                     <arg value="-v" />
                                 </exec>
-                                <echo>candleStatusCode=${candleStatusCode}</echo>
                                 <echo>------------------- ${exec.light} ${param.light} -------------------</echo>
-                                <exec executable="${exec.light}" dir="${project.build.directory}" resultproperty="lightStatusCode">
-                                	   <arg value="${param.light}" />
+                                <exec osfamily="unix" executable="${exec.light}" dir="${project.build.directory}" resultproperty="lightStatusCode">
+                                	<arg value="${param.light}" />
                                     <arg value="-nologo" />
                                     <arg value="-ext" /> <arg value="WixUIExtension" />
                                     <arg value="-out" /> <arg value="${product.name.lowercase}-${project.version}.msi" />
@@ -243,11 +274,11 @@
                                     <arg value="package.wixobj" />
                                     <arg value="payload.wixobj" />
                                 </exec>
-                                <echo>lightStatusCode=${lightStatusCode}</echo>
-								<chmod file="${project.build.directory}/${product.name.lowercase}-${project.version}.msi" perm="ugo+r" verbose="true" />
-								<exec executable="ls" dir="${project.build.directory}">
-                                	   <arg value="-laht" />
+                                <chmod file="${project.build.directory}/${product.name.lowercase}-${project.version}.msi" perm="ugo+r" verbose="true" />
+								<exec osfamily="unix" executable="ls" dir="${project.build.directory}">
+                                	<arg value="-laht" />
                                 </exec>
+
                                 <delete dir="${user.home}/.msi" />
                                 <attachartifact file="${project.build.directory}/${product.name.lowercase}-${project.version}.msi" />
                             </target>
diff --git a/opendj-packages/opendj-msi/pom.xml b/opendj-packages/opendj-msi/pom.xml
index 2dfa79a..62a5e74 100644
--- a/opendj-packages/opendj-msi/pom.xml
+++ b/opendj-packages/opendj-msi/pom.xml
@@ -85,9 +85,9 @@
                 <module>opendj-msi-standard</module>
             </modules>
             <properties>
-                <exec.heat>${project.build.directory}/wix/heat.exe</exec.heat><param.heat />
-		        <exec.candle>${project.build.directory}/wix/candle.exe</exec.candle><param.candle />
-		        <exec.light>${project.build.directory}/wix/light.exe</exec.light><param.light />
+                <exec.heat>${project.build.directory}\wix\heat.exe</exec.heat><param.heat />
+		        <exec.candle>${project.build.directory}\wix\candle.exe</exec.candle><param.candle />
+		        <exec.light>${project.build.directory}\wix\light.exe</exec.light><param.light />
             </properties>
         </profile>
     </profiles>
diff --git a/opendj-packages/pom.xml b/opendj-packages/pom.xml
index 3b406bc..da6cc4a 100644
--- a/opendj-packages/pom.xml
+++ b/opendj-packages/pom.xml
@@ -43,9 +43,9 @@
 
     <profiles>
         <profile>
-            <id>distribution</id>
+            <id>distribution-unix</id>
             <activation>
-                <activeByDefault>false</activeByDefault>
+                <os><family>unix</family></os>
             </activation>
             <modules>
             	<module>../opendj-doc-generated-ref</module>
@@ -53,7 +53,17 @@
                 <module>opendj-rpm</module>
                 <module>opendj-svr4</module>
                 <module>opendj-msi</module>
-                <module>opendj-docker</module>
+    		 	<module>opendj-docker</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>distribution-windows</id>
+            <activation>
+                <os><family>windows</family></os>
+            </activation>
+            <modules>
+            	<module>opendj-msi</module>
+    	 		<module>opendj-docker</module>
             </modules>
         </profile>
     </profiles>
diff --git a/pom.xml b/pom.xml
index da2c421..719d8f2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,7 +80,7 @@
         <license>
             <name>CDDL-1.1</name>
             <url>https://github.com/OpenIdentityPlatform/OpenDJ/blob/master/LICENSE.md</url>
-            <comments>Common Development and Distribution License (CDDL) 1.0.
+            <comments>Common Development and Distribution License (CDDL) 1.1.
                 This license applies to OpenDJ source code as indicated in the
                 source files.
             </comments>
@@ -144,7 +144,7 @@
         	<dependency>
         		<groupId>org.openidentityplatform.commons</groupId>
         		<artifactId>parent</artifactId>
-        		<version>2.0.13-SNAPSHOT</version>
+        		<version>2.0.14</version>
         		<type>pom</type>
         		<scope>import</scope>
         	</dependency>
@@ -325,7 +325,7 @@
 			<plugin>
 		      <groupId>org.sonatype.plugins</groupId>
 		      <artifactId>nexus-staging-maven-plugin</artifactId>
-		      <version>1.6.11</version>
+		      <version>1.6.12</version>
 		      <extensions>true</extensions>
 		      <configuration>
 		        <serverId>ossrh</serverId>
@@ -335,6 +335,13 @@
 		        <keepStagingRepositoryOnFailure>true</keepStagingRepositoryOnFailure>
 		        <keepStagingRepositoryOnCloseRuleFailure>true</keepStagingRepositoryOnCloseRuleFailure>
 		      </configuration>
+		      <dependencies>
+		      	<dependency>
+			        <groupId>com.google.guava</groupId>
+			        <artifactId>guava</artifactId>
+			        <version>15.0</version>
+			     </dependency>
+		      </dependencies>
 		    </plugin>
         </plugins>
 

--
Gitblit v1.10.0