name: Build Maven on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: name: Maven build runs-on: ${{ matrix.os }} strategy: matrix: java: [ '8', '11'] os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] steps: - 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@v3 with: path: ~/.m2/repository key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2-repository - 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 --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: Docker test if: runner.os == 'Linux' shell: bash run: | echo '${GITHUB_REPOSITORY,,}:$git_version_last' docker run --rm -it -d --name=opendj_1 --health-cmd='/opt/opendj/bin/ldapsearch --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "" --searchScope base "(objectClass=*)" 1.1 || /opt/opendj/bin/stop-ds || exit 1' --health-retries=10 --health-timeout=10s '${GITHUB_REPOSITORY,,}:$git_version_last' timeout 30s bash -c 'until docker inspect --format="{{json .State.Health.Status}}" opendj_1 | grep -q \"healthy\"; do sleep 10; done' docker stop opendj_1 || true - 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