diff --git a/.travis/mvnsettings.xml b/.github/mvnsettings.xml similarity index 93% rename from .travis/mvnsettings.xml rename to .github/mvnsettings.xml index eb63c75..8ef66fa 100644 --- a/.travis/mvnsettings.xml +++ b/.github/mvnsettings.xml @@ -19,7 +19,7 @@ gpg - ${env.GPG_KEY_NAME} + ${env.GPG_KEYNAME} ${env.GPG_PASSPHRASE} diff --git a/.github/secrets.md b/.github/secrets.md new file mode 100644 index 0000000..e363253 --- /dev/null +++ b/.github/secrets.md @@ -0,0 +1,28 @@ +# Secrets needed for deployment + +Secrets are stored in an environment for Github Actions to deploy to the Sonatype OSS repo. + +## GPG_KEYNAME + +The name of the GPG key used for signing. See `gpg -K` for key names. + +## GPG_KEY_BASE64 + +Base64-encoded key export of the signing key. + +```shell +gpg --export-secret-keys ${GPG_KEYNAME} | base64 +``` + +## GPG_PASSPHRASE + +Passphrase of the GPG key + +## OSSRH_JIRA_USERNAME + +User name used for authenticating at the Sonatype OSS repo. Same as the Password used to log in +at https://issues.sonatype.org + +## OSSRH_JIRA_PASSWORD + +Password used for authenticating at the Sonatype OSS repo. diff --git a/.github/sign_and_deploy.sh b/.github/sign_and_deploy.sh new file mode 100755 index 0000000..6d252c7 --- /dev/null +++ b/.github/sign_and_deploy.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +KEY_FILE='daniel.flassak.open.source.private.key' + +echo $GPG_KEY_BASE64 | base64 -d > ${KEY_FILE} +gpg --passphrase "${GPG_PASSPHRASE}" --batch --yes --fast-import ${KEY_FILE} + +if [[ "${REF_TYPE}" == "tag" ]]; then + # 'install' cannot be used in addition to 'deploy', because that makes the signatures invalid by re-creating jars + # after they have been signed. + # + # So we can **only** call the 'deploy' target here, which is why 'source:jar' and 'javadoc:jar' are called + # explicitly before 'deploy' so that their artifacts are signed, too. + # + # '-P sign' is used here instead of 'gpg:sign', because 'gpg:sign' seemingly has the same effect as 'install' + # (invalid signatures to to re-created jars) + # + # There may be an easier way to sign and deploy all the artifacts (sources, javadoc, binaries and pom), but after + # four hours of debugging this, I'm satisfied that it works at all. + mvn --batch-mode -DskipTests=true -Dproject.version=${REF_NAME} -P sign clean source:jar javadoc:jar deploy + SUCCESS=$? +else + echo "this should only be run for tags" + SUCCESS=1 +fi + +# just to be safe, although this deleting these should not be necessary +rm ${KEY_FILE} +rm -rf ~/.gnupg + +exit ${SUCCESS} diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml new file mode 100644 index 0000000..4701d06 --- /dev/null +++ b/.github/workflows/build-and-deploy.yml @@ -0,0 +1,25 @@ +name: Build and deploy to Sonatype OSS repo + +on: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + - '[0-9]+.[0-9]+.[0-9]+-SNAPSHOT' + +jobs: + build: + uses: ./.github/workflows/run-with-maven.yml + with: + COMMAND: mvn --batch-mode -Dmaven.compiler.showDeprecation=true -Dmaven.compiler.showWarnings=true clean verify + deploy: + needs: build + uses: ./.github/workflows/run-with-maven.yml + with: + ENVIRONMENT: sonatype-oss + COMMAND: ./.github/sign_and_deploy.sh + secrets: + GPG_KEYNAME: ${{ secrets.GPG_KEYNAME }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + GPG_KEY_BASE64: ${{ secrets.GPG_KEY_BASE64 }} + OSSRH_JIRA_PASSWORD: ${{ secrets.OSSRH_JIRA_PASSWORD }} + OSSRH_JIRA_USERNAME: ${{ secrets.OSSRH_JIRA_USERNAME}} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..42524c3 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,11 @@ +name: Build + +on: + push: + +jobs: + build: + uses: ./.github/workflows/run-with-maven.yml + with: + COMMAND: > + mvn --batch-mode -Dmaven.compiler.showDeprecation=true -Dmaven.compiler.showWarnings=true -Dproject.version=0.0.0-SNAPSHOT clean install diff --git a/.github/workflows/run-with-maven.yml b/.github/workflows/run-with-maven.yml new file mode 100644 index 0000000..d3acbad --- /dev/null +++ b/.github/workflows/run-with-maven.yml @@ -0,0 +1,61 @@ +name: Java CI with Maven + +on: + workflow_call: + inputs: + COMMAND: + description: command to execute in mvn context + type: string + required: true + ENVIRONMENT: + type: string + required: false + secrets: + GPG_KEYNAME: + required: false + GPG_PASSPHRASE: + required: false + GPG_KEY_BASE64: + required: false + OSSRH_JIRA_PASSWORD: + required: false + OSSRH_JIRA_USERNAME: + required: false + +jobs: + run-with-maven: + runs-on: ubuntu-latest + + environment: ${{ inputs.ENVIRONMENT }} + + steps: + - uses: actions/checkout@v2 + + - name: Cache local Maven repository + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + cache: maven + + - name: Run with mvn context + env: + GPG_KEYNAME: ${{ secrets.GPG_KEYNAME }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + GPG_KEY_BASE64: ${{ secrets.GPG_KEY_BASE64 }} + OSSRH_JIRA_PASSWORD: ${{ secrets.OSSRH_JIRA_PASSWORD }} + OSSRH_JIRA_USERNAME: ${{ secrets.OSSRH_JIRA_USERNAME}} + COMMAND: ${{ inputs.COMMAND }} + REF_TYPE: ${{ github.ref_type }} + REF_NAME: ${{ github.ref_name }} + + run: + cp .github/mvnsettings.xml ~/.m2/settings.xml && eval "${COMMAND}" diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar deleted file mode 100644 index 01e6799..0000000 Binary files a/.mvn/wrapper/maven-wrapper.jar and /dev/null differ diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index 7179346..0000000 --- a/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1 +0,0 @@ -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1ea0203..0000000 --- a/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -language: java -env: - global: - # OSSRH_JIRA_USERNAME - - secure: hYuO+7tFHjZ6cajBWYu3jzSMqenwKMu6vdVjJZ8SdDw6XEfqs07oCB9AozbFoyNjAbXQGEKvUYe7gOS6aiy7+xpKyLI55U4IDhdKn0JKWNrI2Xm7Ns3zTe6fsGY4dm8hvIl2hZwFpUYQmQz59s5aiiMzal1Qp8IP2KoNedKDnQsZfwVdvVon6VYJwKm7L48zWyYkHwz9hpo929aOanWDIvTqz//pVP5k8lIOaKP1FbQXvZKL6Wpa1WQdMi4XXhCZSgSiPVUP6C9q8up71FoxTNAbq5k4Ye2E2AOf0DLUXCAKGEr9MMdPe0gmZ9N5rxqWmGi3R7+OigtsqYD5r/d6uzdZg5viXR9DinMwMz9TnDP06j16Aj4DVL741dkN+7RYySTWa7Fv4EAz+ZHHY5pgSfUqSDgzwDgN041SGPg9rrbwtQlWMUosZmwSbPrP165nQi+xSdCyCrUs1fqj0ychJ5wRDPBgMANSDC3ayApRwMutHacaiqRT6QYe2tClx21nJOLzqOLEzumH51nJs3Q8TS44LfGQVVa0uQtSW/vDK6xSDr250vRPMZPERB0LSwSRgrlfczE6PBAmwgLIuPGab8I03agLVerDznzYrH0LZjvkUQgr3x/smjmurmlUUzK89rmCBxAJ2Gaj44R9SEbj1vnAclOT/s3vV8IWyLRir7g= - # OSSRH_JIRA_PASSWORD - - secure: XOOxSoj9inpt4v07Qv/FKMhWzcNqDvEBvtK2amiYu5DkDPrlRYUybMfH6YGn0Vi0zZVrzokCLrDN38RdLimOMEPmlMI6gCi+Np+3/mtzP+sQFh8HMdki+kmgxKsNAQsZxr86X8EvQaUtboBvlyC+SikYX+PVBC1mOLsGTXSQnxAf/YZj8JnDnRLA0F0C5KljMwzYzf9rj5ksVwvdzmO+Ou381ifrhrJPv4Zh6teRCa0pSD9jK5CHOgmzjhkMKhY1qEoA3qjvI6z+zBPjoYhg+MxeCYQqpKIm0gT/zH3wAOxPG5SIjUlHSmwkH4qySmFl4/oKwVJi/iRhQoma9Yb5TeeyjqZI7rotkunfeEl4Agi2EzVtFfVwbWXNRoAFb48/PSWm/L73J46XvzeGnDwsUddY6K8jg73qAEi5VCRBv0vrCN82PFyRJ+ZNdM/xVyNDRWixFWxq8VIVsjve6/QuE/Hk2AqUHRdiNn5OkzC7Li+EG7pVTJkMPOsH2xFoGdXRZMA7GIP2VVeGi3rUGaI/J5WIJAlGpW4J6ydREDYB+Rlpl0Uj1PQLFFSBqwe4B+4/iJPMlV8KHRK9mGlroWnvnf/i4vmEa1cseUTuORjWvzZCIezFcrT2hxA7obZqzfFWPKqWhdtmc49HbEEr6CHfAdleyPQOhV1zSM3x2dKsD7g= - # GPG_KEY_NAME - - secure: kbc+8UqserUftQS62cPMQ92gk5fJrr/SEWMH/cSL39bIfVN2G34ZaQPn8J28keYi8CLGjgWZGsz6svblmVu0ht4LTVa/G1mCoYrfC381R4mgKscOkDqf4TydXF1oY00wWSUzSpFuHf0JjaJqUzT/Jj1geNCZ5Q+6a4oA7ZQl7Z9W62Zdrj77wP4MG0BNOLy8CmoF1+oY118O9re2Zw3sTMSdGtybSEzZFwthYG+388nJQCbbZ9IPanczM+nnoJF0S5lPtgoEIYp6C5+1edGlGpQ6f5qhRqEHkahjxhzJkbwtzJvNDYdviaQ1FA9xYLt80J1NJA6RTh8oh4ncrLKNKD+zhvdWKDkxNR4PLD5BGoNyRlnJ5TUdo/n3S6ym8DJ/q0QwluIY3uPJWj3Pg31swQ3Q/c3b5Vavazlh4eFOLda57LX5uxytr93EpHUepEuWH0b3+8SrJjUHcf14H/zeeEZ7UXB1v3fUZiZNMffvwH5OEaJtV8MfDVHuc8aUoBlAbe3HjZKYvmJbUdBPaw5TInuIkGadRd8jLqd8zKzEvwt6yb766EIjcEH5+cDSz0hIViglhKIWShXWSc2KTuQ7FQuzmH2NuALxwz80QwzH19w0cW+F5K5BpyjfFNyFonMXDSUIj0ZRYlnPlOtN8Wim4dt+eVxGehHv0CRSki238SE= - # GPG_PASSPHRASE - - secure: IPx18pkp+mSe/+AmJ9bY1ezhC2AgSWioJNaTFvUQet0haqWVrXZzvmw7qobd9SFlZMJ1nMqQGqmrhxLZxCF5DBvM296W3fjGymAFoTovZBUfUuBsYHma6E3X/zhUZqvszdHRKVp9104QnoOcm+lsF3h/2REKolCDC/MwJARCNPJSo9410z1Kdz+gvJaEAbw+yF+R4qlTn61lK4e7h/20VPtQW4VzQP1tAqOqzmri1Ufw4zfRJWa04IStJOoPUawh/qXwg/UfEWKzX3dbwwyYD9+UpGfRU+iAgnu4BWd/UsHdshzrvFg5BsquTW4wJax6hBkt2dZxa6O8iWLBBtgt+zyOy/dFIvgaNy8sF1het68DfaCxEGReV+b5i6VJXwmidNLgOkDYklnaKlwLonUuYAt1xn0oD2CxE2dewMa+b0HlpPFxyOArTNV4rmn/KRPaDwGA9wUedk7zU6DKnUxljvbNJ5ol2maUnj3c6Cqvs7H/sWuMxQI88yjyQGqCWykBJbr2JaBL60CZ8S7WPYFDra2WXyVjwN3+yhEeA6Pf94c8mkyjBIdGUWz8vV6sXIJ4XqqyboIgFrpl3M07ho3/PZ4NbxY6TbmhjtDQHCS4R35wmqH4p1M/vB6YrWcEUpv29uFd3mwXbaRsn/mj7t/f7iAP9zCIzJatUrUbuV827lM= -jdk: openjdk11 -install: mvn install -P !build-extras -DskipTests=true -Dmaven.javadoc.skip=true -B - -V -script: mvn test -P !build-extras -B -cache: - directories: - - "~/.m2/repository" -after_success: ".travis/deploy_to_maven_central.sh" diff --git a/.travis/codesigning.asc.enc b/.travis/codesigning.asc.enc deleted file mode 100644 index a6433ce..0000000 Binary files a/.travis/codesigning.asc.enc and /dev/null differ diff --git a/.travis/deploy_to_maven_central.sh b/.travis/deploy_to_maven_central.sh deleted file mode 100755 index ddeb803..0000000 --- a/.travis/deploy_to_maven_central.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash -if [ "$TRAVIS_BRANCH" = 'master' ] && [ "$TRAVIS_PULL_REQUEST" == 'false' ] || [ ! -z "$TRAVIS_TAG" ]; then - openssl aes-256-cbc -K $encrypted_1bd4eaf46f33_key -iv $encrypted_1bd4eaf46f33_iv -in .travis/codesigning.asc.enc -out .travis/codesigning.asc -d - gpg --fast-import .travis/codesigning.asc - - if [ ! -z "$TRAVIS_TAG" ] - then - echo "on a tag -> set pom.xml to $TRAVIS_TAG" - mvn --settings .travis/mvnsettings.xml org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=$TRAVIS_TAG 1>/dev/null 2>/dev/null - else - echo "not on a tag -> keep snapshot version in pom.xml" - fi - - mvn deploy -P sign,build-extras --settings .travis/mvnsettings.xml -DskipTests=true -B -U -fi diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 6e64b52..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,60 +0,0 @@ -pipeline { - - agent any - - libraries { - lib('pac-pipeline-libraries@1.23.0') - } - - environment { - COMMIT_MESSAGE = getCommitMessage() - } - - options { - buildDiscarder(logRotator(numToKeepStr: '20', artifactNumToKeepStr: '0')) - } - - stages { - - stage('Build and push to artifactory') { - when { - not { - branch 'master' - } - } - steps { - mvn 'clean deploy -P instrumentation' - } - post { - success { - junit '**/target/surefire-reports/TEST-*.xml' - runSonar() - } - } - } - - stage('Release Artifact') { - when { - expression { - BRANCH_NAME == 'master' && !COMMIT_MESSAGE.startsWith('[maven-release-plugin]') - } - } - steps { - generateChangelog() - mvnRelease() - } - post { - success { - junit '**/target/surefire-reports/TEST-*.xml' - runSonar() - } - } - } - } - - post { - always { - cleanWs() - } - } -} diff --git a/checkstyle.xml b/checkstyle.xml index 0da26f2..bf77e46 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -126,7 +126,7 @@ - + @@ -210,6 +210,7 @@ + diff --git a/pom.xml b/pom.xml index ee64cd9..ff63184 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ de.dm.infrastructure structured-logging - 2.0.2-SNAPSHOT + ${project.version} structured-logging Structured logging and log testing @@ -29,6 +29,8 @@ + 2.0.2-SNAPSHOT + 1.8 UTF-8 7.2 @@ -41,15 +43,15 @@ 3.17.2 3.5.13 3.5.0 - 3.8.1 - 3.2.0 + 3.10.1 + 3.3.2 3.2.1 3.1.1 2.22.2 2.5.3 - 1.6 - ${maven-gpg-plugin.version}.8 - 8.36.2 + 3.0.1 + 1.6.8 + 8.45.1 @@ -239,14 +241,6 @@ org.apache.maven.plugins maven-source-plugin ${maven-source-plugin.version} - - - attach-sources - - jar-no-fork - - - org.apache.maven.plugins @@ -256,7 +250,8 @@ ${java.version} ${encoding} - + attach-javadocs