From 2238c461e99bbfcc0fb252a5e9b1b48c500449dd Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Thu, 19 Aug 2021 06:36:04 +0300 Subject: [PATCH 1/6] add CI and relesease GA workflows; --- .github/workflows/ci.yml | 60 ++++++++++++++++++++++++++++++++++ .github/workflows/release.yml | 44 +++++++++++++++++++++++++ .gitignore | 5 +++ ci/import_gpg.sh | 21 ++++++++++++ ci/pubring.asc | 30 ----------------- ci/secring.asc.enc | Bin 3664 -> 0 bytes 6 files changed, 130 insertions(+), 30 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml create mode 100755 ci/import_gpg.sh delete mode 100644 ci/pubring.asc delete mode 100644 ci/secring.asc.enc diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0c544b7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,60 @@ +name: CI + +on: + push: + branches: + - master + - develop + pull_request: + types: + - opened + - synchronize + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + build: + name: Test and publish a snapshot + strategy: + matrix: + os: [ubuntu-latest] + scala: [2.12.10, 2.11.12, 2.13.1] + java: [adopt@1.8] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout current branch (full) + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Setup Java and Scala + uses: olafurpg/setup-scala@v10 + with: + java-version: ${{ matrix.java }} + + - name: Cache sbt + uses: actions/cache@v2 + with: + path: | + ~/.sbt + ~/.ivy2/cache + ~/.coursier/cache/v1 + ~/.cache/coursier/v1 + ~/AppData/Local/Coursier/Cache/v1 + ~/Library/Caches/Coursier/v1 + key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }} + + - name: Runs tests and collect coverage + run: sbt ++${{ matrix.scala }} coverage test coverageReport coverageAggregate + + - name: Upload coverage report to Codecov + uses: codecov/codecov-action@v1 + with: + fail_ci_if_error: true + + - name: Publish a snapshot ${{ github.ref }} + run: sbt ++${{ matrix.scala }} publish + env: + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..584e7bf --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,44 @@ +name: Publish a release + +on: + release: + types: [published] + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + publish_release: + name: Publish release to Sonatype + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Setup Java and Scala + uses: olafurpg/setup-scala@v10 + with: + java-version: adopt@1.8 + + - name: Cache sbt + uses: actions/cache@v2 + with: + path: | + ~/.sbt + ~/.ivy2/cache + ~/.coursier/cache/v1 + ~/.cache/coursier/v1 + ~/AppData/Local/Coursier/Cache/v1 + ~/Library/Caches/Coursier/v1 + key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }} + + - name: Import GPG key + run: ci/import_gpg.sh + env: + GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} + + - name: Publish release ${{ github.ref }} + run: sbt +publishSigned sonatypeBundleRelease + env: + PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} diff --git a/.gitignore b/.gitignore index c62b8f5..5077e78 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,8 @@ project/project/ +/.bloop/ +/.metals/ + +/project/.bloop/ +/project/metals.sbt diff --git a/ci/import_gpg.sh b/ci/import_gpg.sh new file mode 100755 index 0000000..b1eb66e --- /dev/null +++ b/ci/import_gpg.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# setting up gpg2 for reading passphrase from parameters +# via https://github.com/beautiful-scala/scalastyle/blob/master/.github/workflows/release.yml#L16 +# from https://github.com/olafurpg/sbt-ci-release/issues/95 + +# setup gpg +mkdir ~/.gnupg && chmod 700 ~/.gnupg +echo use-agent >> ~/.gnupg/gpg.conf +echo pinentry-mode loopback >> ~/.gnupg/gpg.conf +echo allow-loopback-pinentry >> ~/.gnupg/gpg-agent.conf +chmod 600 ~/.gnupg/* +echo RELOADAGENT | gpg-connect-agent + +# decode key +# private key should be previously exported with: +# gpg --export-secret-keys [id] | base64 | pbcopy +# and stored as github repository secret under the following name (see env var name below) +printf "$GPG_SIGNING_KEY" | base64 --decode > ~/.gnupg/private.key + +# import key +gpg --no-tty --batch --yes --import ~/.gnupg/private.key diff --git a/ci/pubring.asc b/ci/pubring.asc deleted file mode 100644 index 6155651..0000000 --- a/ci/pubring.asc +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQENBF3njS8BCADStgMWUYcpHrYso9Prr/Bfi5bTyBskF7NmEv8LBj0WywPEjWng -gqFmxWNSLD5mKJkRrSo4QoFQQXiI47qLg/hnN1thjnuz8s1q+bveul0D2IdILdUO -Oi+i7xYjieVWR4QPzXUy2OAxDLFHIJSXPwhQGa2JumDitOLWWPartgXvL14SylCc -jty74cgcqP2ewEX8/AudKGLSxEvodjoxxaya6pRNFC685+ML9zxXi2qA+Tc9+fXp -65lSWAk+uRNhv9w5xQn54NfPb4fDUahvx0zH+RBPFk7zZIEikTDbz6tZ/dR0d5yX -Ba77EzlHLVUZ4SuW8XBxrPAaAHkKK74Cu6dbABEBAAG0J3Njb3JleC11dGlsIGJv -dCA8ZGVueXNAemFkb3JvemhueWkuY29tPokBVAQTAQgAPhYhBJ1zqjjAj9auWlHT -wR5L9vRDWZQxBQJd540vAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA -AAoJEB5L9vRDWZQxr64IAMKeL/uVJJagTj2+i9oTx+ADO/NJ+kxO8vEvHJxvu2gA -gs0Lb2i4itceSN/nifKFEVEM/JNx+wShwSoCWWx8wE6gc8VfsGbhZWtziSn3WsZ/ -bVMvdITMFhmWTJRyv0KUkbjwXpX0r5MFQ7/yYSXIE0FVtWNSq1pot+FuN8A3zVxf -QFSezy+S3ZbfgOh2+wULvmLCz56ReXkNklkKlQyKPvK6RgIG69SCxb5c2xNdiEpf -H6XFe80T1i4EzDIp2+zmmf7/01lFYcz+Tn8Huc8/IKvE7Svn8DmElSL2h8XusB9a -+X34R+TNbHmRmufPj6FxulL/xKQmjQFR4+3KcCLNLVi5AQ0EXeeNLwEIAOKBLkx7 -HWOeAB0fQRb2/FgWRiPBRZ0loK5/C4D3B5TE00/GQcP6ZF6nujZKaiDEI/DDzYLh -g5/u9l2Qu+N1tXlDjiWQAVebxFC5zrJw1jr9foHLIiy5YY/shrxde2MjQmo6rbzO -/gLsuZUO2KQ4RUR0QunmS4qTmsuxUE3K0EoC1PwhVXkijyvAwlAgtYVgsz3RzIQh -YQB/HPcuGPyhF8FbAiVq5Qj9eUkJA5pgcq709kcI+FtaKEKA0ZcgFGmVsgAS0s0/ -8Hn/bhrtOG1YxV9eMFqjOrvjyFQ0DE0ZZ0Jp/eHO72sLm3xnQFx2CwalawvMItBc -4zLQ/PnmKzZKD5sAEQEAAYkBPAQYAQgAJhYhBJ1zqjjAj9auWlHTwR5L9vRDWZQx -BQJd540vAhsMBQkDwmcAAAoJEB5L9vRDWZQxPTYIAM+JEsEogGPLLTxT4a9k8Qiv -xkcTFUAhZRulfa6b19/Qy/AtwJWmZ/tiS8Voza6lyTkPWOL8wPnIzI4q+yfe7XAH -GXRhxRaxB67yObi2UR/xw5f7fFGdCNFC7mYMas/g+xikrGezDMS3A1OZmUHciqrY -D7A6psh8Cv0HeSIdX0oVzgpGo7ubodryf2wXHt2WpWJ/vKSkYZYdASZEPYAU0r1f -UQQFQdqkzJQTRoKuQWA0seGcHIr/nNnVwf4lxKHMCLnVl2b7zaCrC1lvbolYoS5a -nNHkoQvqeb2wkZyIHBoyBjD3FktrvM6grVFcf9WRHbus8aAtWoginUXsHs/2+RM= -=woMj ------END PGP PUBLIC KEY BLOCK----- diff --git a/ci/secring.asc.enc b/ci/secring.asc.enc deleted file mode 100644 index 06b7c8f2d160133432f7fe3408bbd0712ada176b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3664 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 Date: Mon, 30 Aug 2021 16:00:54 +0300 Subject: [PATCH 2/6] switch from sbt-git to sbt-dynver; --- build.sbt | 33 +++++---------------------------- project/plugins.sbt | 2 +- 2 files changed, 6 insertions(+), 29 deletions(-) diff --git a/build.sbt b/build.sbt index fbbdcdd..917f35f 100644 --- a/build.sbt +++ b/build.sbt @@ -56,34 +56,11 @@ pomExtra := -enablePlugins(GitVersioning) - -version in ThisBuild := { - if (git.gitCurrentTags.value.nonEmpty) { - git.gitDescribedVersion.value.get - } else { - if (git.gitHeadCommit.value.contains(git.gitCurrentBranch.value)) { - // see https://docs.travis-ci.com/user/environment-variables/#default-environment-variables - if (Try(sys.env("TRAVIS")).getOrElse("false") == "true") { - // pull request number, "false" if not a pull request - if (Try(sys.env("TRAVIS_PULL_REQUEST")).getOrElse("false") != "false") { - // build is triggered by a pull request - val prBranchName = Try(sys.env("TRAVIS_PULL_REQUEST_BRANCH")).get - val prHeadCommitSha = Try(sys.env("TRAVIS_PULL_REQUEST_SHA")).get - prBranchName + "-" + prHeadCommitSha.take(8) + "-SNAPSHOT" - } else { - // build is triggered by a push - val branchName = Try(sys.env("TRAVIS_BRANCH")).get - branchName + "-" + git.gitHeadCommit.value.get.take(8) + "-SNAPSHOT" - } - } else { - git.gitHeadCommit.value.get.take(8) + "-SNAPSHOT" - } - } else { - git.gitCurrentBranch.value + "-" + git.gitHeadCommit.value.get.take(8) + "-SNAPSHOT" - } - } -} +// prefix version with "-SNAPSHOT" for builds without a git tag +dynverSonatypeSnapshots in ThisBuild := true +// use "-" instead of default "+" +dynverSeparator in ThisBuild := "-" + // PGP key for signing a release build published to sonatype // signing is done by sbt-pgp plugin diff --git a/project/plugins.sbt b/project/plugins.sbt index 97c5e49..650ebe0 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,6 +1,6 @@ addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1") addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.2.7") addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.2") -addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "1.0.0") addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.8") addSbtPlugin("com.jsuereth" % "sbt-pgp" % "2.0.0") +addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") From 534517f102f0dcb549131ef46256680b4ca51abc Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 30 Aug 2021 16:38:36 +0300 Subject: [PATCH 3/6] remove .travis.yml; --- .travis.yml | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ab16211..0000000 --- a/.travis.yml +++ /dev/null @@ -1,37 +0,0 @@ -sudo: true -dist: trusty -language: scala -scala: - - 2.12.10 - - 2.11.12 - - 2.13.1 -jdk: -- oraclejdk8 -cache: - directories: - - "$HOME/.ivy2/cache" - - "$HOME/.sbt" -before_cache: -- find $HOME/.ivy2/cache -name "ivydata-*.properties" -print -delete -- find $HOME/.sbt -name "*.lock" -print -delete -stages: -- test -- name: release - if: tag =~ ^v -- name: snapshot - if: "(NOT tag IS present) AND (type = push)" -jobs: - include: - - stage: test - script: sbt coverage +test && sbt coverageReport coveralls - - stage: release - script: openssl aes-256-cbc -K $encrypted_dceea7e6c44e_key -iv $encrypted_dceea7e6c44e_iv - -in ci/secring.asc.enc -out ci/secring.asc -d && gpg --import ci/secring.asc - && sbt +publishSigned sonatypeBundleRelease - - stage: snapshot - script: sbt +publish -env: - global: - - secure: p6Gfr7sv6Jvh9XeC2Myi9CgaZtMXsaTQL4i5YUmkRdc/w+/CsmDJcZg/zT9qOlCwJ8g2SQ7Krn8LdzRocY1m4NZjg0uwu1ocv5ftk2lYUHmiTxbth0dSmHiocKbQGjgTh3GxENAXYJ42a2DG1eTcGqi/9ANqMAqi9ZBn9u8SmZdA7shgiUcZnml5Cu3UMbo6nwVaePrT93EZ8QPO3X9sFjIbrd14HGKa6ZUyjSLddodV36Y6IvMwKld5FNdkekvkos18kBGnWkkN2B8zOXxmC4y5lGNpsVBJdx2V+jaEXtpdwyrOSEHSUklAhabYCLt7fQptofbeVuN93i8eePXReEvEjSVFUkK4LB1qhIp2s4etYaoWmCHnTJdHJmY6Z6+eZ2y3cLkRp+luUGBx7WQ6tnekezxtYRy98ZIIJV+LDY8bgL8/vLaIWZmonI3fxg47wtGk3dW9PEN/Qpq2k9p9KwH5lQZcMobCtLVIyLNiAvykbB/RV19GPCz7rnc8Qw7XNZbVMs+nGVwiKMQ9gq3d5YqzNDUCiDTW5GNdVpk5/GJYZWLg9t/jJfCayjQPVwov+oXQYzyn6iY3ZW+rHCiH/AVvO0C0EyNp/MZEnh/1ggArX0xL9a0mRdkDmEa00+GrjQDFsrAgSoBH3h94Y+pZlxANrB3WwM2O76IC/sLqEu0= - - secure: lotYaGiT21lat+D921NQyLBwTp3BNmETTlGa8iM0gkAZy+v6qP2diB3oI6baPzeBwXZ6UJ7J2RuDC50vMkc9ffmoJmrh444WqJ7y6la1FMsKKuxGDmsILo+kyctiCXvgsTI8d2lCzngMr84E5kz2ENcXiFEvUIUctqKy6SQEsA3k+MO5xAO8TF0hQVWhPMpLwrkhq4Ig/bbzD/x08dcWPlS6MCuA5ujC4CqpNAffBQVWDjL1G5wc2XMFYNNqyXq4/87r2Su0GiD/tWd9uu+RHHSxQACGKvLJjdqUICalO8lSGtwLQly1gcfbNjL4rYw7sUhkFu/XFKizvgDtr5VzgdGzIsrxAh71xkeecnR7IhR6brmBRKj5uEoUMmnYFoutlIGuIa6HxS2/P//eGSPhbrX/nc7VDEJ1a8q2bMLZHJhUXMSKA5zy5MtB+XRkuoywc1ee5orQCUeKI27jY+D6aQ9IQcvx1TobjrO2xeMewQKwRY/rLxX9YvIZVBFGl4pSOCsI9FxqJJfRI8PwodmRbBj6z14uvz3HjITza83UtDF5r4F2ycpZDZo44yVqcSfnsbScaS0z2WWppDW7+U+nB8QiTbLZ/pXEZqQs76stcc4OajSKOfRsapbU4W1V66/3eVBhCB/VBMukuUSLQp4HBZjljSu4+0Mocx0x8sHvt9s= - - secure: YTTzqWFu1UxNj/8m6PQFwRWcAyCN3xO9rBwYDSPwQPNmfunDdSjoTGHd4hb/hK8JIHSM06ajPzicDGiy+wh9ZOM2YN378Zd3v6nVfyfyC9vNeJbMOfY9CVUgjo6CZPM7ZdXHY9ycGEeKnwBLWu6PXz/0SPRXzhIGWJjRL5rqVBLG97CmGJ+6Gc/dQYdYAjxUc1tOPooojAHRWOe1MSo9sKxcsyPNpYvwXpc1VxegbmCgFqmawbml3FtC3SL2261Vz635L5P1KsJMMPi5TTtR3eeSsVCChU/wQEGqjx03YJxowqoDu0gEfDo++mvyzWk5fmmHCpSGjjSiW0l6Vi1JLMdESU9AK8IzDkTxeJN8mh8uSPQp0QwWgyHjPvp3IypHAj2NdGDwIwIIT6jXAAw4FBYBrHGOejMKrYmD8Vcg5Dndxg08Kv+XkpchuC6BdnV1EVR7fDgryX3u+S1tuynbX2WJmjDsDCXo4/Fd4UjlZBekJr28iQiPfLq0BACSHx4ZOkbfktM44gBQDZbBfl9eG0ebYZSD6iombuOX5hMOEEba9xkqywiOcA+2v5kzAKLVxEN69E6ugeigRm/xJCszFhHFThFyXH8l6+p/eaGofLyzNbG1GWZ/gu5/IAmyyVDKd5GUEEK0J+A/7s5ED3LeG7kVrTxoTXYTiQaFhlyDJwA= From b4561042299a5b3f0fec39bb4d96775dc6b0dd9a Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 30 Aug 2021 16:43:18 +0300 Subject: [PATCH 4/6] update comment on how to export a key; --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 917f35f..100137a 100644 --- a/build.sbt +++ b/build.sbt @@ -65,7 +65,7 @@ dynverSeparator in ThisBuild := "-" // PGP key for signing a release build published to sonatype // signing is done by sbt-pgp plugin // how to generate a key - https://central.sonatype.org/pages/working-with-pgp-signatures.html -// how to export a key and use it with Travis - https://docs.scala-lang.org/overviews/contributors/index.html#export-your-pgp-key-pair +// how to export a key see ci/import_gpg.sh pgpPublicRing := file("ci/pubring.asc") pgpSecretRing := file("ci/secring.asc") pgpPassphrase := sys.env.get("PGP_PASSPHRASE").map(_.toArray) From 05aa934adeb9baf0e8a1a671f3f0ee91a21bfdb1 Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 30 Aug 2021 17:21:55 +0300 Subject: [PATCH 5/6] add CONTRIBUTING.md with instructions on how to make a release; --- CONTRIBUTING.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..762355d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,4 @@ +## Publishing a release +To publish release version to Sonatype, do the following: +- make a tag with version number `vX.Y.Z` (used by `sbt-dynver` to set `version` in `build.sbt`); +- use the new tag to make a Github release, which triggers [`release.yml`](.github/workflows/release.yml) workflow and publishes release version to Sonatype; From 11b462197fa3539d397788324f41a185fcb5b33b Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 30 Aug 2021 17:55:52 +0300 Subject: [PATCH 6/6] run "Publish a snapshot" step only if secrets are available, otherwise the job will fail on external PRs; --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c544b7..a5ebde5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,6 +16,8 @@ env: jobs: build: name: Test and publish a snapshot + env: + HAS_SECRETS: ${{ secrets.SONATYPE_PASSWORD != '' }} strategy: matrix: os: [ubuntu-latest] @@ -54,6 +56,7 @@ jobs: fail_ci_if_error: true - name: Publish a snapshot ${{ github.ref }} + if: env.HAS_SECRETS == 'true' run: sbt ++${{ matrix.scala }} publish env: SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}