diff --git a/.github/settings.xml b/.github/settings.xml new file mode 100644 index 0000000..da1b7ba --- /dev/null +++ b/.github/settings.xml @@ -0,0 +1,66 @@ + + + + maven2.releases.levigo.de + ${REPOSITORY_RELEASE_USERID} + ${REPOSITORY_RELEASE_CREDENTIALS} + + + + + + + central-nexus + + true + + + + maven-central + https://repo.maven.apache.org/maven2/ + + false + + + true + + + + maven2.releases.levigo.de + ${REPOSITORY_URL} + + true + + + true + + + + + + maven-central + https://repo.maven.apache.org/maven2/ + + false + + + true + + + + maven2.releases.levigo.de + ${REPOSITORY_URL} + + true + + + true + + + + + + diff --git a/.github/workflows/continuous-delivery.yml b/.github/workflows/continuous-delivery.yml new file mode 100644 index 0000000..d24da14 --- /dev/null +++ b/.github/workflows/continuous-delivery.yml @@ -0,0 +1,133 @@ +name: Continuous Delivery + +on: + push: + branches: + - 'main' + paths-ignore: + - '.github/workflows/continuous-integration.yml' + +env: + # This will suppress any download for dependencies and plugins or upload messages which would clutter the console log. + # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work. + MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true" + # As of Maven 3.3.0 instead of this you may define these options in `.mvn/maven.config` so the same config is used + # when running from the command line. + # `installAtEnd` and `deployAtEnd` are only effective with recent version of the corresponding plugins. + MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true" + TAG_PREFIX: 'jadice-dss-utils-' + +jobs: + + build: + runs-on: ubuntu-22.04 + timeout-minutes: 15 + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + ## compute the string of the next version + - name: Bump version and create tag + id: semanticversion + uses: mathieudutour/github-tag-action@v6.2 + with: + release_branches: master + github_token: ${{ secrets.GITHUB_TOKEN }} + fetch_all_tags: true + tag_prefix: ${{ env.TAG_PREFIX }} + + ## check if the computed string of the next version is conform to our regex + - name: Verify and print new build number + run: | + if echo '${{ steps.semanticversion.outputs.new_tag }}' |grep -Eq '^${{ env.TAG_PREFIX }}[0-9]+[.][0-9]+[.][0-9]+$'; then + echo Tag '${{ steps.semanticversion.outputs.new_tag }}', New version '${{ steps.semanticversion.outputs.new_version }}', Changelog '${{ steps.semanticversion.outputs.changelog }}' + else + echo 'unexpected tag format - aborting' + exit -1 + fi + + - name: Set version and tag variables + run: | + echo "NEW_VERSION=${{ steps.semanticversion.outputs.new_version }}" >> $GITHUB_ENV \ + && echo "NEW_TAG=${{ env.TAG_PREFIX }}${{ steps.semanticversion.outputs.new_version }}" >> $GITHUB_ENV + + ## Configure JDK + - name: Set up JDK + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' + + ## Enable Caching + - uses: actions/cache@v3 + id: cache + with: + path: | + ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + ## Configure maven settings + - name: Prepare maven settings + env: + REPOSITORY_URL: ${{ secrets.LEVIGO_NEXUS_REPO_RELEASES }} + REPOSITORY_RELEASE_USERID: ${{ secrets.PUB_NEXUS2_USERNAME_RW }} + REPOSITORY_RELEASE_CREDENTIALS: ${{ secrets.PUB_NEXUS2_PASSWORD_RW}} + run: | + echo NEXUS2_REPO_RELEASES ${{ secrets.NEXUS2_REPO_RELEASES }} + mkdir -p ~/.m2 + envsubst < ./.github/settings.xml > ~/.m2/settings.xml + + ## Build with maven + - name: Set version + id: version + run: | + echo Releasing as ${{ env.NEW_VERSION }} + mvn ${{ env.MAVEN_CLI_OPTS }} versions:set -DnewVersion=${{ env.NEW_VERSION }} + + - name: Perform build + run: mvn -B verify -Dmaven.test.failure.ignore=true + + ## Publish test report + - name: Publish Test Report for JDK 11 + id: test-report + uses: scacap/action-surefire-report@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + fail_on_test_failures: true + check_name: Test Report for JDK 11 + + ## Deploy + - name: Deploy packages + run: mvn ${{ env.MAVEN_CLI_OPTS }} deploy -Dmaven.install.skip=true + + ## Create Release + - name: Create Release + id: create_release + uses: softprops/action-gh-release@v2 + with: + name: Release ${{ env.NEW_VERSION }} + tag_name: ${{ steps.semanticversion.outputs.new_tag }} + draft: false + prerelease: false + files: | + ./target/documentplatform-standard14-fonts-${{ steps.semanticversion.outputs.new_version }}.jar + ./target/documentplatform-standard14-fonts-${{ steps.semanticversion.outputs.new_version }}-javadoc.jar + ./target/documentplatform-standard14-fonts-${{ steps.semanticversion.outputs.new_version }}-sources.jar + + ## Notify developers + - name: Notify developers + uses: 8398a7/action-slack@v3 + with: + username: GitHub + icon_emoji: octocat + channel: ci_docp + status: ${{ job.status }} + fields: repo,message,commit,author,action,eventName,ref + text: Released new version `${{ env.NEW_VERSION }}` of *${{ github.repository }}* + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + if: failure() diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml new file mode 100644 index 0000000..c4053b7 --- /dev/null +++ b/.github/workflows/continuous-integration.yml @@ -0,0 +1,88 @@ +name: Continuous Integration + +on: + push: + branches-ignore: + - 'main' + paths-ignore: + # !! Attention!! removing the following line may produce an endless loop on the build system!! + - '**/README.md' + - '.github/workflows/continuous-delivery.yml' + +env: + # This will suppress any download for dependencies and plugins or upload messages which would clutter the console log. + # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work. + MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true" + # As of Maven 3.3.0 instead of this you may define these options in `.mvn/maven.config` so the same config is used + # when running from the command line. + # `installAtEnd` and `deployAtEnd` are only effective with recent version of the corresponding plugins. + MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true" + +jobs: + build: + runs-on: ubuntu-22.04 + timeout-minutes: 15 + + strategy: + fail-fast: false + matrix: + jdk: [ 11 ] + + + steps: + - uses: actions/checkout@v4 + + ## Configure JDK + - name: Set up JDK + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: 11 + + ## Enable Caching + # Reduce cache size by excluding artifacts with the project.groupId + - uses: actions/cache@v3 + with: + path: | + ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + ## Configure maven settings + - name: Prepare maven settings + env: + REPOSITORY_URL: ${{ secrets.LEVIGO_NEXUS_REPO_RELEASES }} + REPOSITORY_RELEASE_USERID: ${{ secrets.PUB_NEXUS2_USERNAME_RW }} + REPOSITORY_RELEASE_CREDENTIALS: ${{ secrets.PUB_NEXUS2_PASSWORD_RW}} + run: | + echo NEXUS2_REPO_RELEASES ${{ secrets.NEXUS2_REPO_RELEASES }} + mkdir -p ~/.m2 + envsubst < ./.github/settings.xml > ~/.m2/settings.xml + + ## Build with maven + - name: Perform build + run: mvn ${{ env.MAVEN_CLI_OPTS }} verify -Dmaven.test.failure.ignore=true + + ## Publish test report + - name: Publish Test Report for JDK 11 + id: test-report + uses: scacap/action-surefire-report@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + fail_on_test_failures: true + check_name: Test Report for JDK 11 + + ## Notify developers + - name: Notify developers + uses: 8398a7/action-slack@v3 + with: + username: GitHub + icon_emoji: octocat + channel: ci_docp + status: ${{ job.status }} + fields: repo,message,commit,author,action,eventName,ref + text: ${{ github.workflow }} ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + if: ${{ failure() &&github.actor != 'dependabot[bot]' }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd2d743 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +# exclude target directories +target +**/target/ +**/git.properties + +release.properties +pom.xml.releaseBackup + +# eclipse project files and directories +.classpath +.project +.settings +.recommenders +.metadata + +# exclude IntelliJ IDEA files +.idea +**/*.iml +.run + +/.expected-vs-actual/ +/.failed/ \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..8b74298 --- /dev/null +++ b/pom.xml @@ -0,0 +1,94 @@ + + 4.0.0 + org.jadice.util + jadice-dss-utils + pom + jadice dss signature utils + 7.0.0-SNAPSHOT + + + 1.2.13 + org.jadice.util + 6.1 + + + + + ${project.groupId} + signature-base + + + + + eu.europa.ec.joinup.sd-dss + dss-validation + + + + eu.europa.ec.joinup.sd-dss + dss-tsl-validation + + + + eu.europa.ec.joinup.sd-dss + dss-utils-google-guava + + + + eu.europa.ec.joinup.sd-dss + dss-pades-pdfbox + + + + eu.europa.ec.joinup.sd-dss + dss-crl-parser-stream + + + + eu.europa.ec.joinup.sd-dss + dss-service + + + + + + eu.europa.ec.joinup.sd-dss + dss-xades + + + + + + + eu.europa.ec.joinup.sd-dss + dss-bom + ${dss.version} + pom + import + + + + + + scm:git:ssh://git@github.com:levigo/jadice-dss-utils.git + + + scm:git:ssh://git@github.com:levigo/jadice-dss-utils.git + + HEAD + + https://github.com/levigo/jadice-dss-utils + + + + + maven2.releases.levigo.de + https://levigo.de/maven2/content/repositories/levigo-releases/ + + + maven2.snapshots.levigo.de + https://levigo.de/maven2/content/repositories/levigo-snapshots/ + + +