From 63dfb217d225972c356be30ed559b86e468cad31 Mon Sep 17 00:00:00 2001 From: Viktor Podzigun Date: Mon, 31 Jan 2022 10:12:55 +0100 Subject: [PATCH] Added GitHub CI action --- .github/workflows/ci.yml | 85 ++++++++++++++++++ .travis.yml | 44 --------- README.md | 2 +- pgp.sbt | 9 +- project/plugins.sbt | 4 +- .../scala/definitions/ScalaJsModule.scala | 7 +- travis/secrets.tar.enc | Bin 5136 -> 0 bytes 7 files changed, 95 insertions(+), 56 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml delete mode 100644 travis/secrets.tar.enc diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b68f193 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,85 @@ +name: CI + +on: + push: + branches: [ master ] + tags: + - '*' + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + + - name: Git checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: '12' + + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + + - name: Cache sbt + uses: actions/cache@v2 + with: + path: | + ~/.sbt + ~/.ivy2/cache + ~/.coursier/cache/v1 + ~/.cache/coursier/v1 + key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt', 'project/**/*.scala') }} + + - name: Cache node_modules + uses: actions/cache@v2 + with: + path: | + ~/.npm + ~/.nvm + key: ${{ runner.os }}-node_modules-cache-v2-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node_modules-cache-v2- + + - name: Extract Tag Name + run: echo "TAG_NAME=$(echo ${GITHUB_REF##*/})" >> $GITHUB_ENV + if: ${{ startsWith(github.ref, 'refs/tags') }} + + - name: Run tests + run: | + sbt coverage test + sbt coverageAggregate coveralls + if: ${{ env.TAG_NAME == '' }} + env: + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + + - name: Publish SNAPSHOT + run: sbt clean publish + if: ${{ !github.event.pull_request && env.TAG_NAME == '' }} + env: + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + + - name: Publish RELEASE + run: | + mkdir ./keys + echo $PGP_PUBLIC | base64 --decode > ./keys/pubring.gpg + echo $PGP_SECRET | base64 --decode > ./keys/secring.gpg + VERSION="$(echo "$TAG_NAME" | cut -d'v' -f 2)" + echo "Publish a release version=$VERSION for tag $TAG_NAME" + version=$VERSION sbt clean publishSigned sonatypeBundleRelease + if: ${{ env.TAG_NAME != '' }} + env: + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + PGP_PUBLIC: ${{ secrets.PGP_PUBLIC }} + PGP_SECRET: ${{ secrets.PGP_SECRET }} + PGP_PASS: ${{ secrets.PGP_PASS }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 6336367..0000000 --- a/.travis.yml +++ /dev/null @@ -1,44 +0,0 @@ -language: scala -sudo: false -jdk: -- oraclejdk8 -dist: trusty -env: - global: - - TRAVIS_SBT_VERSION="1.2.8" - - secure: b/EZ9fktxt/toqaYPv3MGULqbygnZrrfOXnbbXvmTVYhq+wczqwAls7NHFeAjy8WhETSVynJymZnk5FDgskpJDRxD/WWkM3xyKpSOfmuPMN94P0Ij35Bm9q5ethzQfd2GB0Mc8nVq04xtumB9L/3O/8gh8dY7hyqAISi6pReRpdolf+LDMuJ/VUMm5phfPBbywU6lKjDS+/woad6fT93D8bmaL002aZ848rMwBCC9eyOWLs7G/0AmresGekKFsN7AZ2NzgaeyvocvKBV4wtgAZy9vhFQ2udpfq7jkQZq7HLxZxEgr+8GlOGrdbzG/T9E6G1tVUBmq7Dr/FNupBMvMBbfNfaKnMcHEk+IeQaHwnxgTU528we4IAfvrm3QqkiVRFvTULB9E8ZOX9+g3E4VW3PSgmZXNYL+YPnGI9XVO2KIyw0g9bxOwanF7jflwLg0SxXq+cxwatGiYELKjtsJEqLiMGZrXFdAdx1tpO3LQdUq+5J0rniUYV1Lt7n9rJamWL90AYSX40BbPrAkCYentH4aS2wggEOii4VjRg3dym0n7SnrQKk6u/jxU4s0wXyouwX8AB+D4x+Vk9mkXjtuykL+lN3MuB72HWYbd4CxVrV7PKpH+DwbvLvLffNB77f81yXUP6oxfVhaePikQPGIJwIWjF66f6kk6KPogx6NOJk= - - secure: IdvQC1pJV8w/L7i8VQp/HGv1WvX8Di4RQGfPKftEjNWqPxSAFD2PMbtcv9Y/fBJ1eRBMGEZb5m2yx+P6s3lh6Lu4FtEoHC6ux4eS0ldSlO55jpuT+hu7WVoC86GilTydQ6vGIue0TG3YXoKqpBEZj64dHisGj1MzLqWBQmZj6TMd3BocqzdPkuUbjEniYegVWgZyOsqRHH0cpuaH343sTddqS+jmrCL7yjaWmg+Aa4vmLnpZyvrr0lXxZhyMl65KV9EbrqQtO2QPlv+R0+VhEkl2339dzXsiS3SGvVRZ5/oeSR84gQeS3X+jnMlwoZpexHs1nxfJXs792rcxRltRx3dbczcUz9Gj93jNMCPrVOaNLIbWYNmMfamux9xuw5FgPFh4QFsGvzReUtQZ4sqSNNo1xut2KpigCQFajkx35bc+MH6KtzS0r1h/eV9Sb7MvUUT2ftPs+JD3Juq4PCcUVpHaNZHPmLZrHaJaO/hE5G1q/xuOsAD+1Y0rJmP+5pWFIGvEPQ0GXHn3qG540WdsuZZT6ujBlUNYHqfTek6e7NM8ytw3d3DNorkY/zuIdmAuGQuS1gzd4lziRt13qeT2muUiCFKR/ODJIovIP4JVS7qtkb67/tzsze65JoH5LFfUFf2wXZXooUGkGmtgwo1iib7k/Oa7eV1ppkSONrG9v6o= - - secure: ZA2RtWSs/o75O4aI7MO/MU47KltbV70UAGIyTO/EHSye8I51G0V3eXibJlQ6iRMp+NGYB9Yu1FcplJ6oc/Gw5k+8FdnHEHz9GAhH3vJeM3mB6o3TXOYrOt3HOwA4x5H1pd4MAwjKkNxk80H4UT9kiH6SxVsCSPmM4wzCSgMtSuICPP4bhIdyOS48KSBC86AlYldrD3ncb6tNSq2gsXaO1reFQ4YR8oUeg2iSz4emSaqbStnvf5tqokwXmgctFGwcQAOlvP6sUMIGMimiKWXtOXjVZvLrMVCPvU5uT8GuMnVvJhtwROGIMSpjJBydnEDz7XivZRXdPoWtdEyPLwL+5Ly4PyVHMw3jK4s7Ejy2sWiZoiYZtt/qfaJlX2S5frcl6hd82iqn7UAw1sPSrIo8llzbN1UeLk6ywHCBVBfDOPt76pODQHrsK0RRUaiYrStkaQ4HSw7csODRuEAqBAmMkFojo1IVCBpRCmSm+fwwcSD5uROSl5iwkBk+Y409aWUtziqhSNRxYZh6RdyiVff2mR9190e+YXI8BbIiS416rjS/UIvgSVE4nwiDIz+OZMzfPKm+lG10xeTxkdBjS1KzVsdA94gdJ+aMDuUOl0uKT1tNrV7JE6DLNHmttWpTEIYd7Y1bF4kuYBpxOaXKkKptt9OLFD0lRSBvn5EyhO2Nd44= -before_install: -- nvm install 12 && - nvm use 12 -- node --version && - npm --version -- if [ $TRAVIS_PULL_REQUEST = 'false' ]; then - openssl aes-256-cbc -K $encrypted_9f5ecf143eee_key -iv $encrypted_9f5ecf143eee_iv -in travis/secrets.tar.enc -out travis/secrets.tar -d; - tar xv -C travis -f travis/secrets.tar; - fi -script: -- sbt clean coverage test && - sbt coverageAggregate coveralls && - if [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_BRANCH" == "master" -o "$TRAVIS_BRANCH" == "$TRAVIS_TAG" ]; then - if [ -z "$TRAVIS_TAG" ]; then - echo "Publish a snapshot"; - sbt clean publish; - else - echo "Publish a release version=$TRAVIS_TAG"; - version=$TRAVIS_TAG sbt clean publishSigned sonatypeBundleRelease; - fi - else - echo "This is not a master branch commit. Skipping the publish/release step"; - fi -cache: - directories: - - ~/.npm - - ~/.nvm - - "$HOME/.ivy2/cache" - - "$HOME/.sbt" -before_cache: -# Cleanup the cached directories to avoid unnecessary cache updates -- find $HOME/.ivy2/cache -name "ivydata-*.properties" -print -delete -- find $HOME/.sbt -name "*.lock" -print -delete diff --git a/README.md b/README.md index 7a5a0ca..de35a6c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![Build Status](https://travis-ci.com/scommons/scommons-nodejs.svg?branch=master)](https://travis-ci.com/scommons/scommons-nodejs) +[![CI](https://github.com/scommons/scommons-nodejs/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/scommons/scommons-nodejs/actions/workflows/ci.yml?query=workflow%3Aci+branch%3Amaster) [![Coverage Status](https://coveralls.io/repos/github/scommons/scommons-nodejs/badge.svg?branch=master)](https://coveralls.io/github/scommons/scommons-nodejs?branch=master) [![scala-index](https://index.scala-lang.org/scommons/scommons-nodejs/scommons-nodejs-core/latest.svg)](https://index.scala-lang.org/scommons/scommons-nodejs/scommons-nodejs-core) [![Scala.js](https://www.scala-js.org/assets/badges/scalajs-1.1.0.svg)](https://www.scala-js.org) diff --git a/pgp.sbt b/pgp.sbt index b25983a..5485218 100644 --- a/pgp.sbt +++ b/pgp.sbt @@ -1,7 +1,6 @@ +import java.util.Base64 //see: https://www.scala-sbt.org/sbt-pgp/usage.html - -useGpg := false -pgpPublicRing := file("./travis/pubring.gpg") -pgpSecretRing := file("./travis/secring.gpg") -pgpPassphrase := sys.env.get("PGP_PASS").map(_.toArray) +pgpPublicRing := file("./keys/pubring.gpg") +pgpSecretRing := file("./keys/secring.gpg") +pgpPassphrase := sys.env.get("PGP_PASS").map(p => new String(Base64.getDecoder.decode(p)).toArray) diff --git a/project/plugins.sbt b/project/plugins.sbt index 23d7ec7..48e4fbb 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,8 +1,8 @@ //resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/" resolvers += "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/" -addSbtPlugin(("org.scommons.sbt" % "sbt-scommons-plugin" % "0.8.0-SNAPSHOT").changing()) -//addSbtPlugin("org.scommons.sbt" % "sbt-scommons-plugin" % "0.8.0") +//addSbtPlugin(("org.scommons.sbt" % "sbt-scommons-plugin" % "0.8.0-SNAPSHOT").changing()) +addSbtPlugin("org.scommons.sbt" % "sbt-scommons-plugin" % "0.8.0") addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.5") addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.1.0") diff --git a/project/src/main/scala/definitions/ScalaJsModule.scala b/project/src/main/scala/definitions/ScalaJsModule.scala index 6db8c8c..218250b 100644 --- a/project/src/main/scala/definitions/ScalaJsModule.scala +++ b/project/src/main/scala/definitions/ScalaJsModule.scala @@ -7,7 +7,6 @@ import sbt._ import scalajsbundler.sbtplugin.ScalaJSBundlerPlugin import scommons.sbtplugin.project.CommonNodeJsModule import scoverage.ScoverageKeys.{coverageEnabled, coverageScalacPluginVersion} -import scoverage.ScoverageSbtPlugin._ trait ScalaJsModule extends NodejsModule { @@ -24,14 +23,14 @@ trait ScalaJsModule extends NodejsModule { }, libraryDependencies ~= { modules => if (scalaJSVersion.startsWith("0.6")) modules - else modules.filter(_.organization != OrgScoverage) + else modules.filter(_.organization != "org.scoverage") }, libraryDependencies ++= { if (coverageEnabled.value) { if (scalaJSVersion.startsWith("0.6")) Nil else Seq( - OrgScoverage %% s"${ScalacRuntimeArtifact}_sjs1" % coverageScalacPluginVersion.value, - OrgScoverage %% ScalacPluginArtifact % coverageScalacPluginVersion.value % ScoveragePluginConfig.name + "org.scoverage" %% "scalac-scoverage-runtime_sjs1" % coverageScalacPluginVersion.value, + "org.scoverage" %% "scalac-scoverage-plugin" % coverageScalacPluginVersion.value % "scoveragePlugin" ) } else Nil diff --git a/travis/secrets.tar.enc b/travis/secrets.tar.enc deleted file mode 100644 index bdddd81e8d05b2fa097a0ef4c1f94f0585eec18f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5136 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�rBP%;5Mt*#x2)iq*!y?0E-&WFUhk*whzq)c zULG!`EtN!r)+(w}Bn|Qx67H|@xJ2s~?5 zuKz|Z=aK4gJA>xq8A*-(H=D&h{at17-K~)+3yLkm9Act z3dIW=AUqcA&c-3r;UfEg8 zbo~`joR;9v7?kQy@ic9g;p_1rTVvB@F5Ms-#lb}m@W4V~xx`o{W@X)t6ax)+!cFXz zWtme;g=V}XE?Jqrr1ivGZR?IWA`E|}$_i`L{t0Z!ex8Wuk>2uNg`cdtjs(;1<2K2+hPw>uD{}b*;cu&zPLj4j}zI`)E@oQZh@Fc z!oXyQyMM|&+jh?iCd^XzfwK`4H-|==X!cgY&dabb^*7D}_Bav>AUcn8$gMGC!2Q+) zi1z#$ZS%krf+8Gcf^*6%4j$Q_k>F4*;M9BmA+_>W(CK0$jhF1mkUMSx&f^B9=pl4Q zV-qRZ>sM}B2rcVaiLbtLw+_Tzw?Gmvnm&kp<5*r}&QsN6ySB@%A{jFq;3C%4^9F!5 zPol&YEK#?-{>_B^eDjh;Qj=-{*tCK$XZq#J@~Na?U*WYfE_oV(#vQ~$R7GopALD`;}U;A&k_4o4;!{T(f}|c9nSroIYQeH z0p>G-O)MZ!ywLPya74{{GJutlvEb|%(=}D!SeCrOK+|^LKf1|0%E#QABmwVkpypvD zVi?3zPa(8a`(qutN&e_{MY(+UYFv)e6sJ*?+fMh$%Y>3hZ-j|@InKRz{l5(($|X4> zo32kr94wxoC&DFCo@}lu9-(8{%2no05lQIYKU2WmFDuX~ud9K;w6JIa~TXtLB5O!UeULjFURsx8z6*m0s9pf9a_k#2jTt>8-vPuXiKgwAmQjxy2 zUV=e}^()nqu3J1g!>xs?CuV}S6TAU7B+~nLySdFT@nX>85otY)bl#etbx7%NC9ud@ z7wM>$ezf5?&p#7~giSZwJKbQ}Jye2@+o>MP7g*cIf8X^cokP(~l_G zy|mnH9B%Wt`=246<2Y0lnUJ11Q?FNYOu`hqfo1dpUSW7wacP4Rin^sXZ@W3