diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml new file mode 100644 index 000000000..232a6d367 --- /dev/null +++ b/.github/workflows/checks.yml @@ -0,0 +1,63 @@ +name: Basic checks + +on: + pull_request: + push: + branches: + - master + - release-* + tags-ignore: [ v.* ] + +jobs: + check-code-style: + name: Check Code Style + runs-on: ubuntu-18.04 + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + # we don't know what commit the last tag was it's safer to get entire repo so previousStableVersion resolves + fetch-depth: 0 + + - name: Checkout GitHub merge + if: github.event.pull_request + run: |- + git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch + git checkout scratch + + - name: Set up JDK 11 + uses: olafurpg/setup-scala@v10 + with: + java-version: adopt@1.11.0-9 + + - name: Cache Coursier cache + uses: coursier/cache-action@v5 + + - name: Code style check, compilation and binary-compatibility check + run: sbt "scalafmtCheckAll;headerCheckAll;+IntegrationTest/compile;mimaReportBinaryIssues" + + check-docs: + name: Check Docs + runs-on: ubuntu-18.04 + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Checkout GitHub merge + if: github.event.pull_request + run: |- + git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch + git checkout scratch + + - name: Set up JDK 11 + uses: olafurpg/setup-scala@v10 + with: + java-version: adopt@1.11.0-9 + + - name: Cache Coursier cache + uses: coursier/cache-action@v5 + + - name: Create all API docs for artifacts/website and all reference docs + run: sbt "unidoc; docs/paradox" diff --git a/.github/workflows/integration-tests-kube-api.yml b/.github/workflows/integration-tests-kube-api.yml new file mode 100644 index 000000000..feb1ddc58 --- /dev/null +++ b/.github/workflows/integration-tests-kube-api.yml @@ -0,0 +1,46 @@ +name: Integration test for Kubernetes API + +on: + pull_request: + push: + branches: + - master + - release-* + tags-ignore: [ v.* ] + schedule: + - cron: '0 2 * * *' # every day 2am + +jobs: + integration-test: + name: Integration Tests for Kubernetes API + runs-on: ubuntu-18.04 + strategy: + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Checkout GitHub merge + if: github.event.pull_request + run: |- + git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch + git checkout scratch + + - name: Set up JDK adopt@1.11.0-9 + uses: olafurpg/setup-scala@v10 + with: + java-version: adopt@1.11.0-9 + + - name: Cache Coursier cache + uses: coursier/cache-action@v5 + + - name: Start docker + run: |- + ./scripts/setup-minikube-for-linux.sh + ./integration-test/kubernetes-api/test.sh + + - name: Print logs on failure + if: ${{ failure() }} + run: find . -name "*.log" -exec ./scripts/cat-log.sh {} \; diff --git a/.github/workflows/integration-tests-kube-dns.yml b/.github/workflows/integration-tests-kube-dns.yml new file mode 100644 index 000000000..a81086d75 --- /dev/null +++ b/.github/workflows/integration-tests-kube-dns.yml @@ -0,0 +1,46 @@ +name: Integration test for Kubernetes DNS + +on: + pull_request: + push: + branches: + - master + - release-* + tags-ignore: [ v.* ] + schedule: + - cron: '0 2 * * *' # every day 2am + +jobs: + integration-test: + name: Integration Tests for Kubernetes DNS + runs-on: ubuntu-18.04 + strategy: + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Checkout GitHub merge + if: github.event.pull_request + run: |- + git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch + git checkout scratch + + - name: Set up JDK adopt@1.11.0-9 + uses: olafurpg/setup-scala@v10 + with: + java-version: adopt@1.11.0-9 + + - name: Cache Coursier cache + uses: coursier/cache-action@v5 + + - name: Start docker + run: |- + ./scripts/setup-minikube-for-linux.sh + ./integration-test/kubernetes-dns/test.sh + + - name: Print logs on failure + if: ${{ failure() }} + run: find . -name "*.log" -exec ./scripts/cat-log.sh {} \; diff --git a/.github/workflows/integration-tests-lease.yml b/.github/workflows/integration-tests-lease.yml new file mode 100644 index 000000000..fea132f88 --- /dev/null +++ b/.github/workflows/integration-tests-lease.yml @@ -0,0 +1,56 @@ +name: Integration test for Kubernetes Lease + +on: + pull_request: + push: + branches: + - master + - release-* + tags-ignore: [ v.* ] + schedule: + - cron: '0 2 * * *' # every day 2am + +jobs: + integration-test: + name: Integration test for Kubernetes Lease + runs-on: ubuntu-18.04 + strategy: + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Checkout GitHub merge + if: github.event.pull_request + run: |- + git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch + git checkout scratch + + - name: Set up JDK adopt@1.11.0-9 + uses: olafurpg/setup-scala@v10 + with: + java-version: adopt@1.11.0-9 + + - name: Cache Coursier cache + uses: coursier/cache-action@v5 + + - name: Start docker + timeout-minutes: 15 + run: |- + echo 'Starting minikube' + ./scripts/setup-minikube-for-linux.sh + echo 'Creating namespace' + kubectl create namespace lease + echo 'Creating resources' + kubectl apply -f ./lease-kubernetes/lease.yml + echo 'Adding proxy port' + kubectl proxy --port=8080 & + echo 'Running tests' + sbt ";lease-kubernetes/it:test" + ./lease-kubernetes-int-test/minikube-test.sh + + - name: Print logs on failure + if: ${{ failure() }} + run: find . -name "*.log" -exec ./scripts/cat-log.sh {} \; diff --git a/.github/workflows/integration-tests-maven.yml b/.github/workflows/integration-tests-maven.yml new file mode 100644 index 000000000..28ecbdb19 --- /dev/null +++ b/.github/workflows/integration-tests-maven.yml @@ -0,0 +1,47 @@ +name: Integration test for Kubernetes API with Maven + +on: + pull_request: + push: + branches: + - master + - release-* + tags-ignore: [ v.* ] + # Different than its sibilings, we don't configure this workflow to run as a cron job. + # The cron build compiles against Akka 2.6 and Akka HTTP 10.2, but the Maven example uses 2.5 and 10.1 + # see https://github.com/akka/akka-management/issues/744 + +jobs: + integration-test: + name: Integration Tests for Kubernetes API with Maven + runs-on: ubuntu-18.04 + strategy: + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Checkout GitHub merge + if: github.event.pull_request + run: |- + git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch + git checkout scratch + + - name: Set up JDK adopt@1.11.0-9 + uses: olafurpg/setup-scala@v10 + with: + java-version: adopt@1.11.0-9 + + - name: Cache Coursier cache + uses: coursier/cache-action@v5 + + - name: Start docker + run: |- + ./scripts/setup-minikube-for-linux.sh + ./integration-test/kubernetes-api-java/test.sh + + - name: Print logs on failure + if: ${{ failure() }} + run: find . -name "*.log" -exec ./scripts/cat-log.sh {} \; diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 4f5a00fcd..306d251ee 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -5,6 +5,7 @@ on: # branches to consider in the event; optional, defaults to all branches: - master + - release-* jobs: update_release_draft: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..b80977050 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,60 @@ +name: Release + +on: + push: + branches: + - master + - release-* + tags: ["*"] + +jobs: + release: + # runs on main repo only + if: github.repository == 'akka/akka-management' + name: Release + # the release environment provides access to secrets required in the release process + # https://github.com/akka/akka-management/settings/environments + environment: release + runs-on: ubuntu-18.04 + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + # we don't know what commit the last tag was it's safer to get entire repo so previousStableVersion resolves + fetch-depth: 0 + + - name: Checkout GitHub merge + if: github.event.pull_request + run: |- + git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch + git checkout scratch + + - name: Setup Scala with JDK 8 + uses: olafurpg/setup-scala@v10 + + - name: Cache Coursier cache + uses: coursier/cache-action@v5 + + - name: Whitesource check policies and update + env: + WHITESOURCE_PASSWORD: ${{ secrets.WHITESOURCE_PASSWORD }} + run: sbt ";whitesourceCheckPolicies ;whitesourceUpdate" + + - name: Publish artifacts for all Scala versions + env: + PGP_SECRET: ${{ secrets.PGP_SECRET }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + run: sbt ci-release + + - name: Publish API and reference documentation + env: + GUSTAV_KEY: ${{ secrets.GUSTAV_KEY }} + GUSTAV_PASSPHRASE: ${{ secrets.GUSTAV_PASSPHRASE }} + run: |+ + eval "$(ssh-agent -s)" + echo $GUSTAV_KEY | base64 -di > .github/id_rsa + chmod 600 .github/id_rsa + ssh-keygen -p -P "$GUSTAV_PASSPHRASE" -N "" -f .github/id_rsa + ssh-add .github/id_rsa + sbt "++2.13.5 docs/publishRsync" diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml new file mode 100644 index 000000000..7de2e0dce --- /dev/null +++ b/.github/workflows/unit-tests.yml @@ -0,0 +1,55 @@ +name: Unit Tests + +on: + pull_request: + push: + branches: + - master + - release-* + tags-ignore: [ v.* ] + schedule: + - cron: '0 2 * * *' # every day 2am + +jobs: + test: + name: Build and Test + runs-on: ubuntu-18.04 + strategy: + fail-fast: false + matrix: + include: + - { java-version: adopt@1.8, scala-version: 2.12.13, sbt-opts: '' } + - { java-version: adopt@1.11.0-9, scala-version: 2.12.13, sbt-opts: '-J-XX:+UnlockExperimentalVMOptions -J-XX:+UseJVMCICompiler' } + - { java-version: adopt@1.8, scala-version: 2.13.5, sbt-opts: '' } + - { java-version: adopt@1.11.0-9, scala-version: 2.13.5, sbt-opts: '-J-XX:+UnlockExperimentalVMOptions -J-XX:+UseJVMCICompiler' } + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Checkout GitHub merge + if: github.event.pull_request + run: |- + git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch + git checkout scratch + + - name: Setup JDK ${{ matrix.java-version }} + uses: olafurpg/setup-scala@v10 + with: + java-version: ${{ matrix.java-version }} + + - name: Cache Coursier cache + uses: coursier/cache-action@v5 + + # hack to solve "Cannot assign requested address" issue - https://github.community/t/github-action-and-oserror-errno-99-cannot-assign-requested-address/173973/1 + - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file + run: | + echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts + + - name: Run tests with Scala ${{ matrix.scala-version }} and Java ${{ matrix.java-version }} + run: sbt "++${{ matrix.scala-version }} test" ${{ matrix.sbt-opts }} + + - name: Print logs on failure + if: ${{ failure() }} + run: find . -name "*.log" -exec ./scripts/cat-log.sh {} \; \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 564385082..000000000 --- a/.travis.yml +++ /dev/null @@ -1,125 +0,0 @@ -version: ~> 1.0 -sudo: required -dist: xenial -addons: - apt: - packages: - - conntrack -language: scala - -git: - depth: 500 # to make sure we have enough depth to power git describe for sbt-dynver (used for snapshot version numbers) - -before_install: - # make comparing to origin/master work - - git remote set-branches --add origin master && git fetch - # using jabba for custom jdk management - - curl -sL https://git.io/jabba | bash && . ~/.jabba/jabba.sh - - jabba install adopt@1.8-0 - - jabba install adopt@1.11-0 - -script: - - jabba use ${JDK:=adopt@1.8-0} - - java -version - - sbt -jvm-opts .jvmopts-travis "$CMD" - -before_cache: - - find $HOME/.ivy2 -name "ivydata-*.properties" -print -delete - - find $HOME/.sbt -name "*.lock" -print -delete - -cache: - directories: - - $HOME/.cache/coursier - - $HOME/.ivy2/cache - - $HOME/.m2/repository # for Maven-based integration tests - - $HOME/.sbt - - $HOME/.jabba/jdk - -before_script: - - unset _JAVA_OPTIONS - -jobs: - include: - - stage: test - script: - - jabba use "adopt@1.8-0" - - git branch -f "$TRAVIS_BRANCH" && git checkout "$TRAVIS_BRANCH" - - sbt -jvm-opts .jvmopts-travis ";scalafmtCheckAll;+Test/compile; mimaReportBinaryIssues; docs/paradox" - name: "Compile on all Scala versions, check code style (fixed with `sbt Test/compile`), run Mima" - - - env: CMD="+test" - name: "Run tests on AdoptOpenJDK 8 (all Scala versions)" - - - env: - - JDK="adopt@1.11-0" - - CMD="+test" - name: "Run tests on AdoptOpenJDK 11 (all Scala versions)" - - - stage: integration - script: ./scripts/setup-minikube-for-linux.sh && ./integration-test/kubernetes-api/test.sh - name: "Integration test for Kubernetes API" - - - script: - - ./scripts/setup-minikube-for-linux.sh && ./integration-test/kubernetes-dns/test.sh - name: "Integration test for Kubernetes DNS" - - - script: ./scripts/setup-minikube-for-linux.sh && ./integration-test/kubernetes-api-java/test.sh - name: "Integration test for Kubernetes API with maven" - # The cron build compiles against Akka 2.6 and Akka HTTP 10.2, but the Maven example uses 2.5 and 10.1 - # see https://github.com/akka/akka-management/issues/744 - if: type != cron - - - script: - - ./scripts/setup-minikube-for-linux.sh - - kubectl create namespace lease - - kubectl apply -f ./lease-kubernetes/lease.yml - - kubectl proxy --port=8080 & - - sbt ";lease-kubernetes / it:test " - - ./lease-kubernetes-int-test/minikube-test.sh - name: "Kubernetes Lease Integration tests" - - - - stage: whitesource - script: - - jabba use "adopt@1.8-0" - - git branch -f "$TRAVIS_BRANCH" && git checkout "$TRAVIS_BRANCH" && sbt 'set credentials += Credentials("whitesource", "whitesourcesoftware.com", "", System.getenv("WHITESOURCE_KEY"))' whitesourceCheckPolicies whitesourceUpdate - name: "Check licenses with WhiteSource" - - - stage: publish - script: - - jabba use "adopt@1.8-0" - - sbt -J-XX:ReservedCodeCacheSize=128m +publish - name: Publish artifacts - - script: eval "$(ssh-agent -s)" && cp .travis/id_rsa /tmp/id_rsa && chmod 600 /tmp/id_rsa && ssh-keygen -p -P "$DEPLOY_PASSPHRASE" -N "" -f /tmp/id_rsa && ssh-add /tmp/id_rsa && sbt docs/publishRsync - name: Publish documentation - -stages: - - name: check - if: NOT tag =~ ^v - - name: test - if: NOT tag =~ ^v - - name: integration - if: NOT tag =~ ^v - - name: whitesource - if: repo = akka/akka-management AND ( ( branch = master AND type = push ) OR tag =~ ^v ) - - name: publish - if: repo = akka/akka-management AND ( ( branch = master AND type = push ) OR tag =~ ^v ) - -notifications: - email: - recipients: - secure: "Jqrw+zGxVFNxdPioir+dYW5vur2DfnVmSnQnmgf93yjkYFUoyLjqEW0CPPK3srv5AgVZL8KMrCVDTm3890e1LvEcPudZS6eiPrS58cvmfoxHkqNZd2c3PUFH+zlBVsdW2nlue8NHmLIS2R1oZuy9+i/a00qqbvn4sUylDiFQLAXOctIB7lUdXl/pmXiAxS9W3wWRbQqA7V6PrOy38HEWSB1OdzVZ/+rompBTjff1LzMt67bZKIeAJj+T942tO9MOgbLJUq+HcLg6Pvk8Swm8FPXcmHkEl9tULaOKHOnSJyU+XDYy5hBc+ymOh1xH0iXCki73b/a4Av5zVzFX2XFDAIRgzlJdfWO/QMg4G9joJcn12ozyBzR13mlontDV3hR8zJaRqy6buwW3v2DgX7873NwrjkwCR8Zy5unIE3UIvnUU5wISN+RpMHF8T/Oqu4mEYGOSPxqgxIOOZvnEKbyckYT2BSl4cZdWtiUdgWPsvAwJmBIZeuBu5OailqbySO0R5P0AeXgD7ae9LOFNxXuhuLsC/F7+KfboYcmQgpJrrHvU8ySpFq0i8lxDY9ahc5sGQ3IJidMNrK76VSKt2yTJb0my4KzEaxAfFcRuxRS4JQ+J53b5GZXaQw+a8+ThI6D8Lb3kPILQcSrP8dAbnkaggrnn20KxlPx1hC1YHf9Gz6g=" - on_success: never - on_failure: always - -env: - global: - # encrypt with: travis encrypt WHITESOURCE_KEY=... --com - - secure: "NrD8KdUpiq8wzxEH4EfiaxxBUHzBLmK8e7bD977gcUsvU2g+uUEaK8AiZiIBXf1cWfQCdqXfRom3ncj9h8DcaoLHjCQSdxTBtVmwxupL5KXS6rAOY61WrPbe2Cg6WW5J11aYT6pT+jXx58LjvRZsB4Tryl1UitnltMJWK/P+oipGbBdd9oR3GA5rLopCjuwozyjurlizwDCUbCOTaxc6w5Mv1S1b2+JnGjfApiex8ebhEnQlePBaDkOqHrnH9A58EhVYNclJNRkvu7mpBI6KcWJsBozHloSD20RWXiEF50bwuslBQLFBdsolo7jnYxQXRapgRKIukyFs1uhFr67t4pyHWXmbF5GrRa3jFCeAHLpH+Gcf2X43PN+K3kJm/FZQ1oNMKC/dHlhE2C9wwwMCSVorbJfuD6oTI/tee4ksCyZ9WWV+44ZFV1aIV5Dpx7hzeaQGkvDtQJK6tJEN5Tt4yP1rB9x4FC2KDugWaBUbnrFkGwiN9p7zXn/fhRRAsaDrZMeADNGMZ5tEPO+1kgOvvnBwpEwCT8si8k7SckOT1KnT2UnnA5xVzr9e1oUM6dBUECPfbsaTxjN2v9Y4TsyCt+qNsCiAvdKrDlRQEfcrbM6lm9mMSbaFSBfcThxrIRKAAh2oMc/jD0h15uWHzMO2+D6um4FtM0/WhXh//0dosJ0=" - # encrypt with: travis encrypt BINTRAY_USER=... --com - - secure: "WfaoarV06fbA1e4/EtmsfEDWQk6OJ83lGwG8Q9gn5rDMSJL4qeqtyenI5B6DcFvLdamO2Otep90Dw8Ow9iF7rbycZJovvZjuZAESUZMV4Okjp+KMOlo3KmFCRhx+Fc3Ycy4IcvpcUS4xC/OzDXKjxhWEMaVhqixfj4NNR+A5HGpQocfna2ZmPJ0zEVdhx++/uhs5kf7LghmKeDwu9IeBnJgz6/ZFy3A7g2RHmkYK+V/jH45fxMY9BnbKfT4iKtfIQU2Mt8DlR+ucCwFWltPYr8ebdOPLtPcCmIigKMa1u/FKCvZknzIGpkivYi+6Jhyoqp80twdacn65fT71B6xKyabRsDEfHWHR0EXugodP/pRF0TtXDSFrI76T3iOYHI32LkzKfWv/TV7ZCLfrmN16Rrk+GGsS/KMbOZ915nJaEyc08IX3nrH/sI/etmFpPniHC/tVnyrPGBUkX9pOr7WQhWFzDQ63Z+BB8R+JnJa0g/vUcCE6gdnbh/0+lz4wTCamlBUDIwm30sMdozX3WSgIt4yRcQYyhcntxfqSkjYjrypLX7GQW//1ZJENPNTgwvKrXcuFoBtBnN2vqn4HlFoCZEsFzOVIdaJgv2boyKCC4jKCCYoP4L+w882X9nDHRotT8npov3/YBeLQSV2i67wcO245KJYgb8lP8qSXUhGxQns=" - # encrypt with: travis encrypt BINTRAY_PASS=... --com - ## BINTRAY_PASS must be set to the not the - - secure: "dqU4LsksI3HEDPAkqcthUPYFfJWO9y61jttyWL0XQJWZ9ZxNgzk3lgZ/tde6u1iYTeyhgbEf21/y809kdMLF3AaDeN4/1qH3gk62+kchQTo/BO2xRjDajWJiYSuTo0L5UCE1W9iKP18hhLoba95Wl0vsozq7rv7CyxYQ6poN7A44JjXeufrLzcLjS9zzgBXL5f+2Ot5Z/zda092Sb8i0KYZpaF6y0gq57unm5KgZZgvPIHR54qpattCEsWxEsfBqdYkYwXi1iVSnH7Zla6SolbmGW0cJqiVnUSZ65mEBMVQ+GVnS2xQsTZs1/vwXLV/pMJBOsdtdxPVRMQtn93ocC7UGTMJ650i7S3Z6vBvvE57fwJpn41+j0DvU9hM2XuFRtjPORdrNi7Wmss/RFvYtML+O0J8DvN65ywg1WgAKPSeceAMX3Jo5iD28aaORBoUhK8UHf6uqPl3epm+B5la3D4BTH2PwDmeH1BbXGsqh/4AyLerpHy2pZx+/c2/XESadX7xqkx4VqCyBVYX9Gvg96JrBDgvM9oWgfDkosi3QY1TO4Mfgze4W8Ow+w6z7XHx0iD/F06B2eui23tmFiGIbOcEijWyn4tSdQ94AjlCdKyIoePW067+6enlZGZeC2hswiF0BxYJXBw5iA3w1WdSPhtcUJKEGB9TKlavLWDb1+BI=" - # encrypt with: travis encrypt DEPLOY_PASSPHRASE=... --com - - secure: "he7Rn+wqoIR3Tk+BLIRn3FHyoil6Ebgp/6jbxlz9RbK/nuvODN0m0X0O1zd2Xgc4HpOjeYlhp3pQuaFUlW1/mIIcectDrhWAO+YABFh+GhrP6hiW+e/M6aB8l4biU7dKCVIsXQ25r03ODbbJHwXonN8QveqHdTnnYwmyIGY6zuwcjaNcuu96hS3JAwWb+rJyzCq30ozgDcsO9EsEqiFIfgisTxB74JzNhnRQJbnWMR37qaJ1ygLZAAuVzqi1JrkzZNnn/Ob331GTQfko2ZzAte2DdNg6hdBOjeFmu2lSWa4u8ntf/0z2dua/VFI+S091JhxbPHsyXBks5whnGRWmLlq6vRjHZbkFlVea4zR3Q5pBjG3haqB1FxFCKsjjEW7vqUoVIzqkOSDfZOEvKv0N4I3GEkTJ9AMaufiXiS9i1Yr6l+hP9/sdhyJ6cQQhRsW/DumFDT5gDg9YjwE/rdklFFj3B6T4n2mrKsTxLZGpz/w5ikiE7eDGCIJJhuh8fVzsVS3H3hPk7qRo0SBvXvQugp9j80qowxIJfISjXDx9XrvNuIQioSFmBjo/RFQjevOgoZqM5iVm9FJnNrgtEOC4AtQkImxBIx7tmktukpO8nl7ouRjzb9yTeNgmLLOnV6nNxi1EV7FXWEFN43Q2Kmrrs3qXEFCLHP+pUvOe4rYuUoo=" diff --git a/.travis/id_rsa b/.travis/id_rsa deleted file mode 100644 index 1581a7d48..000000000 --- a/.travis/id_rsa +++ /dev/null @@ -1,94 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -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 ------END OPENSSH PRIVATE KEY----- diff --git a/build.sbt b/build.sbt index 7fffc4b68..7850be9da 100644 --- a/build.sbt +++ b/build.sbt @@ -7,7 +7,7 @@ ThisBuild / resolvers += Resolver.jcenterRepo lazy val `akka-management-root` = project .in(file(".")) .enablePlugins(ScalaUnidocPlugin) - .disablePlugins(BintrayPlugin, MimaPlugin) + .disablePlugins(MimaPlugin) .aggregate( // When this aggregate is updated the list of modules in ManifestInfo.checkSameVersion // in AkkaManagement should also be updated @@ -150,7 +150,7 @@ lazy val `lease-kubernetes-int-test` = project .enablePlugins(JavaAppPackaging, DockerPlugin) .dependsOn(`lease-kubernetes`) .enablePlugins(AutomateHeaderPlugin) - .disablePlugins(BintrayPlugin, MimaPlugin) + .disablePlugins(MimaPlugin) .settings( name := "akka-lease-kubernetes-int-test", publish / skip := true, @@ -173,7 +173,7 @@ lazy val `lease-kubernetes-int-test` = project lazy val `integration-test-kubernetes-api` = project .in(file("integration-test/kubernetes-api")) - .disablePlugins(BintrayPlugin, MimaPlugin) + .disablePlugins(MimaPlugin) .enablePlugins(AutomateHeaderPlugin) .settings( publish / skip := true, @@ -190,7 +190,7 @@ lazy val `integration-test-kubernetes-api` = project lazy val `integration-test-kubernetes-api-java` = project .in(file("integration-test/kubernetes-api-java")) - .disablePlugins(BintrayPlugin, MimaPlugin) + .disablePlugins(MimaPlugin) .enablePlugins(AutomateHeaderPlugin) .settings( publish / skip := true, @@ -207,7 +207,7 @@ lazy val `integration-test-kubernetes-api-java` = project lazy val `integration-test-kubernetes-dns` = project .in(file("integration-test/kubernetes-dns")) - .disablePlugins(BintrayPlugin, MimaPlugin) + .disablePlugins(MimaPlugin) .enablePlugins(AutomateHeaderPlugin) .settings( publish / skip := true, @@ -224,7 +224,7 @@ lazy val `integration-test-kubernetes-dns` = project lazy val `integration-test-aws-api-ec2-tag-based` = project .in(file("integration-test/aws-api-ec2")) .configs(IntegrationTest) - .disablePlugins(BintrayPlugin, MimaPlugin) + .disablePlugins(MimaPlugin) .enablePlugins(AutomateHeaderPlugin) .settings( publish / skip := true, @@ -241,7 +241,7 @@ lazy val `integration-test-aws-api-ec2-tag-based` = project lazy val `integration-test-marathon-api-docker` = project .in(file("integration-test/marathon-api-docker")) - .disablePlugins(BintrayPlugin, MimaPlugin) + .disablePlugins(MimaPlugin) .enablePlugins(AutomateHeaderPlugin) .settings( name := "integration-test-marathon-api-docker", @@ -258,7 +258,7 @@ lazy val `integration-test-marathon-api-docker` = project lazy val `integration-test-aws-api-ecs` = project .in(file("integration-test/aws-api-ecs")) - .disablePlugins(BintrayPlugin, MimaPlugin) + .disablePlugins(MimaPlugin) .enablePlugins(AutomateHeaderPlugin) .settings( publish / skip := true, @@ -280,7 +280,7 @@ lazy val `integration-test-aws-api-ecs` = project lazy val `integration-test-local` = project .in(file("integration-test/local")) - .disablePlugins(BintrayPlugin, MimaPlugin) + .disablePlugins(MimaPlugin) .enablePlugins(AutomateHeaderPlugin) .settings( name := "integration-test-local", @@ -299,7 +299,7 @@ lazy val `integration-test-local` = project lazy val docs = project .in(file("docs")) .enablePlugins(AkkaParadoxPlugin, ParadoxSitePlugin, PreprocessPlugin, PublishRsyncPlugin) - .disablePlugins(BintrayPlugin, MimaPlugin) + .disablePlugins(MimaPlugin) .settings( name := "Akka Management", publish / skip := true, diff --git a/project/Common.scala b/project/Common.scala index a3936c45a..8cc4ccec7 100644 --- a/project/Common.scala +++ b/project/Common.scala @@ -1,13 +1,15 @@ +import com.geirsson.CiReleasePlugin import com.lightbend.paradox.projectinfo.ParadoxProjectInfoPluginKeys._ import de.heikoseeberger.sbtheader.HeaderPlugin.autoImport._ import de.heikoseeberger.sbtheader._ import sbt.Keys._ import sbt._ +import xerial.sbt.Sonatype.autoImport.sonatypeProfileName object Common extends AutoPlugin { override def trigger = allRequirements - override def requires = plugins.JvmPlugin && HeaderPlugin + override def requires = plugins.JvmPlugin && HeaderPlugin && CiReleasePlugin val currentYear = "2021" @@ -61,20 +63,21 @@ object Common extends AutoPlugin { "akka.pattern" // for some reason Scaladoc creates this ), Compile / doc / scalacOptions ++= Seq( - "-doc-source-url", { - val branch = if (isSnapshot.value) "master" else s"v${version.value}" - s"https://github.com/akka/akka-management/tree/${branch}€{FILE_PATH_EXT}#L€{FILE_LINE}" - }, - "-doc-canonical-base-url", - "https://doc.akka.io/api/akka-management/current/" - ), + "-doc-source-url", { + val branch = if (isSnapshot.value) "master" else s"v${version.value}" + s"https://github.com/akka/akka-management/tree/${branch}€{FILE_PATH_EXT}#L€{FILE_LINE}" + }, + "-doc-canonical-base-url", + "https://doc.akka.io/api/akka-management/current/" + ), autoAPIMappings := true, // show full stack traces and test case durations testOptions in Test += Tests.Argument("-oDF"), // -v Log "test run started" / "test started" / "test run finished" events on log level "info" instead of "debug". // -a Show stack traces and exception class name for AssertionErrors. testOptions += Tests.Argument(TestFrameworks.JUnit, "-v", "-a"), - scalaVersion := Dependencies.Scala212 + scalaVersion := Dependencies.Scala212, + sonatypeProfileName := "com.lightbend" ) private def isJdk8 = diff --git a/project/Publish.scala b/project/Publish.scala deleted file mode 100644 index 6e70c697a..000000000 --- a/project/Publish.scala +++ /dev/null @@ -1,15 +0,0 @@ -import sbt._, Keys._ - -object Publish extends AutoPlugin { - import bintray.BintrayPlugin - import bintray.BintrayPlugin.autoImport._ - - override def trigger = allRequirements - override def requires = BintrayPlugin - - override def projectSettings = Seq( - bintrayOrganization := Some("akka"), - bintrayPackage := "akka-management", - bintrayRepository := (if (isSnapshot.value) "snapshots" else "maven") - ) -} diff --git a/project/plugins.sbt b/project/plugins.sbt index 859cb8f91..08aa0150c 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -8,7 +8,7 @@ addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.4.3") addSbtPlugin("com.typesafe.sbt" % "sbt-site" % "1.4.1") addSbtPlugin("com.lightbend.sbt" % "sbt-publish-rsync" % "0.2") addSbtPlugin("com.thoughtworks.sbt-api-mappings" % "sbt-api-mappings" % "3.0.0") -addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.6") +addSbtPlugin("com.geirsson" % "sbt-ci-release" % "1.5.6") addSbtPlugin("com.lightbend" % "sbt-whitesource" % "0.1.18") addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "1.0.0") addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.8.1") diff --git a/scripts/cat-log.sh b/scripts/cat-log.sh new file mode 100755 index 000000000..7de3c2391 --- /dev/null +++ b/scripts/cat-log.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# ---------- helper script to separate log files in build +printf "\n\n\n" +ls -lh $1 +printf "\n\n" +cat $1 \ No newline at end of file