diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..fffb2d1 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,57 @@ +# This file was automatically generated by sbt-github-actions using the +# githubWorkflowGenerate task. You should add and commit this file to +# your git repository. It goes without saying that you shouldn't edit +# this file by hand! Instead, if you wish to make changes, you should +# change your sbt build configuration to revise the workflow description +# to meet your needs, then regenerate this file. + +name: Continuous Integration + +on: + pull_request: + branches: ['**'] + push: + branches: ['**'] + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + build: + name: Build and Test + strategy: + matrix: + os: [ubuntu-latest] + scala: [2.12.15, 2.11.12, 2.13.8] + java: [temurin@11] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout current branch (full) + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Setup Java (temurin@11) + if: matrix.java == 'temurin@11' + uses: actions/setup-java@v2 + with: + distribution: temurin + java-version: 11 + + - 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: Check that workflows are up to date + run: sbt ++${{ matrix.scala }} githubWorkflowCheck + + - name: Build project + run: sbt ++${{ matrix.scala }} test diff --git a/.github/workflows/clean.yml b/.github/workflows/clean.yml new file mode 100644 index 0000000..547aaa4 --- /dev/null +++ b/.github/workflows/clean.yml @@ -0,0 +1,59 @@ +# This file was automatically generated by sbt-github-actions using the +# githubWorkflowGenerate task. You should add and commit this file to +# your git repository. It goes without saying that you shouldn't edit +# this file by hand! Instead, if you wish to make changes, you should +# change your sbt build configuration to revise the workflow description +# to meet your needs, then regenerate this file. + +name: Clean + +on: push + +jobs: + delete-artifacts: + name: Delete Artifacts + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: Delete artifacts + run: | + # Customize those three lines with your repository and credentials: + REPO=${GITHUB_API_URL}/repos/${{ github.repository }} + + # A shortcut to call GitHub API. + ghapi() { curl --silent --location --user _:$GITHUB_TOKEN "$@"; } + + # A temporary file which receives HTTP response headers. + TMPFILE=/tmp/tmp.$$ + + # An associative array, key: artifact name, value: number of artifacts of that name. + declare -A ARTCOUNT + + # Process all artifacts on this repository, loop on returned "pages". + URL=$REPO/actions/artifacts + while [[ -n "$URL" ]]; do + + # Get current page, get response headers in a temporary file. + JSON=$(ghapi --dump-header $TMPFILE "$URL") + + # Get URL of next page. Will be empty if we are at the last page. + URL=$(grep '^Link:' "$TMPFILE" | tr ',' '\n' | grep 'rel="next"' | head -1 | sed -e 's/.*.*//') + rm -f $TMPFILE + + # Number of artifacts on this page: + COUNT=$(( $(jq <<<$JSON -r '.artifacts | length') )) + + # Loop on all artifacts on this page. + for ((i=0; $i < $COUNT; i++)); do + + # Get name of artifact and count instances of this name. + name=$(jq <<<$JSON -r ".artifacts[$i].name?") + ARTCOUNT[$name]=$(( $(( ${ARTCOUNT[$name]} )) + 1)) + + id=$(jq <<<$JSON -r ".artifacts[$i].id?") + size=$(( $(jq <<<$JSON -r ".artifacts[$i].size_in_bytes?") )) + printf "Deleting '%s' #%d, %'d bytes\n" $name ${ARTCOUNT[$name]} $size + ghapi -X DELETE $REPO/actions/artifacts/$id + done + done diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 40ae889..0000000 --- a/.travis.yml +++ /dev/null @@ -1,30 +0,0 @@ -language: scala - -sudo: false - -scala: - - 2.13.0 - - 2.12.0 - -before_install: - # using jabba for custom jdk management - - curl -sL https://raw.githubusercontent.com/shyiko/jabba/0.11.2/install.sh | bash && . ~/.jabba/jabba.sh - - jabba install $TRAVIS_JDK -install: jabba use "$TRAVIS_JDK" && java -Xmx32m -version - -before_cache: - - find $HOME/.ivy2 -name "ivydata-*.properties" -print -delete - - find $HOME/.sbt -name "*.lock" -print -delete - -cache: - directories: - - $HOME/.ivy2/cache - - $HOME/.sbt/boot - - $HOME/.jabba/jdk - -# script for the default 'test' stage: -script: sbt -no-colors -J-Xss2m ++$TRAVIS_SCALA_VERSION test - -env: - global: - - TRAVIS_JDK=adopt@~1.8.202-08 diff --git a/build.sbt b/build.sbt index 398de14..c9ac81b 100644 --- a/build.sbt +++ b/build.sbt @@ -1,9 +1,9 @@ -name := "futiles" -organization := "com.markatta" +ThisBuild / name := "futiles" +ThisBuild / organization := "com.markatta" -crossScalaVersions := Seq("2.12.15", "2.11.12", "2.13.8") -scalaVersion := crossScalaVersions.value.last -scalacOptions ++= Seq("-feature", "-deprecation", "-Xfatal-warnings", "-Xlint") +ThisBuild / crossScalaVersions := Seq("2.12.15", "2.11.12", "2.13.8") +ThisBuild / scalaVersion := crossScalaVersions.value.last +ThisBuild / scalacOptions ++= Seq("-feature", "-deprecation", "-Xfatal-warnings", "-Xlint") libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "3.0.8" % "test") @@ -35,3 +35,6 @@ scmInfo := Some( developers := List( Developer("johanandren", "Johan Andrén", "johan@markatta.com", url("https://markatta.com/johan/codemonkey")) ) + +// Disable publish for now +ThisBuild / githubWorkflowPublishTargetBranches := Seq() diff --git a/project/plugins.sbt b/project/plugins.sbt index c107291..e2dc0f8 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1 +1,3 @@ addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.6.0") + +addSbtPlugin("com.codecommit" % "sbt-github-actions" % "0.14.2") diff --git a/project/release.sbt b/project/release.sbt index 21fc88a..c339c64 100644 --- a/project/release.sbt +++ b/project/release.sbt @@ -1,3 +1,3 @@ addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.11") -addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.1.0") +addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0")