sbt

warning: Creating default object from empty value in /opt/bitnami/apps/portal/htdocs/modules/taxonomy/taxonomy.pages.inc on line 33.

統一スラッシュ構文のための syntactic Scalafix rule

in

build.sbt を統一スラッシュ構文へと変換する syntactic Scalafix rule をちゃちゃっと作ったのでここで紹介する。

用法

プロジェクトが git で管理されているか、バックアップを取ること。

$ cs install scalafix
$ export PATH="$PATH:$HOME/Library/Application Support/Coursier/bin"
$ scalafix --rules=https://gist.githubusercontent.com/eed3si9n/57e83f5330592d968ce49f0d5030d4d5/raw/7f576f16a90e432baa49911c9a66204c354947bb/Sbt0_13BuildSyntax.scala *.sbt project/*.scala

完全には正確じゃないが、手動で全部やるよりはマシだと思う。

GitHub Actions からの sbt プラグインの自動公開

in
name: Release
on:
  push:
    tags:
      - '*'
jobs:
  build:
    runs-on: ubuntu-latest
    env:
      # define Java options for both official sbt and sbt-extras
      JAVA_OPTS: -Xms2048M -Xmx2048M -Xss6M -XX:ReservedCodeCacheSize=256M -Dfile.encoding=UTF-8
      JVM_OPTS:  -Xms2048M -Xmx2048M -Xss6M -XX:ReservedCodeCacheSize=256M -Dfile.encoding=UTF-8
    steps:
    - name: Checkout
      uses: actions/checkout@v2
    - name: Setup Scala
      uses: olafurpg/setup-scala@v10
      with:
        java-version: "adopt@1.8"
    - name: Coursier cache
      uses: coursier/cache-action@v5
    - name: Test
      run: |
        sbt test packagedArtifacts
    - name: Release
      env:
        BINTRAY_USER: ${{ secrets.BINTRAY_USER }}
        BINTRAY_PASS: ${{ secrets.BINTRAY_PASS }}
        PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
        PGP_SECRET: ${{ secrets.PGP_SECRET }}
        CI_CLEAN: clean
        CI_RELEASE: publishSigned
        CI_SONATYPE_RELEASE: version
      run: |
        .github/decodekey.sh
        sbt ci-release

sbt 1.4.2

in

I'm happy to announce sbt 1.4.2 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.4.2

How to upgrade

Download the official sbt launcher from SDKMAN or download from https://github.com/sbt/sbt/releases/. This installer includes the sbtn binary.

In addition, the sbt version used for your build is upgraded by putting the following in project/build.properties:

sbt.version=1.4.2

This mechanism allows that sbt 1.4.2 is used only for the builds that you want.

Highlights

Bintray を用いた sbt ビルドのリモートキャッシュ

in

今すぐリモートキャッシュを使ってみたいという人のために、sbt-bintray のスピンオフとして sbt-bintray-remote-cache というプラグインを作った。

使うには以下を project/plugins.sbt に追加する:

addSbtPlugin("org.foundweekends" % "sbt-bintray-remote-cache" % "0.6.1")

sbt 1.4.0

in

Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.4.0. This is the fourth feature release of sbt 1.x, a binary compatible release focusing on new features. sbt 1.x is released under Semantic Versioning, and the plugins are expected to work throughout the 1.x series.

The headline features of sbt 1.4.0 are:

  • build server protocol (BSP) support
  • sbtn: a native thin client for sbt
  • build caching
  • ThisBuild / versionScheme to take the guessing out of eviction warning

How to upgrade

Download the official sbt launcher from SDKMAN or download from https://github.com/sbt/sbt/releases/tag/v1.4.0. This installer includes the sbtn binary.

In addition, the sbt version used for your build is upgraded by putting the following in project/build.properties:

sbt.version=1.4.0

This mechanism allows that sbt 1.4.0 is used only for the builds that you want.

sbt 1.4.0-RC2

in

Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.4.0-RC2. This is the fourth feature release of sbt 1.x, a binary compatible release focusing on new features. sbt 1.x is released under Semantic Versioning, and the plugins are expected to work throughout the 1.x series.

  • If no serious issues are found by Saturday, October 3rd 2020, 1.4.0-RC2 will become 1.4.0 final.
  • If no serious issues are found by Saturday, September 19th 2020, 1.4.0-RC1 will become 1.4.0 final.

The headline features of sbt 1.4.0 are:

  • build server protocol (BSP) support
  • sbtn: a native thin client for sbt
  • build caching
  • ThisBuild / versionScheme to take the guessing out of eviction warning

並列クロスビルドサンドイッチ

in
  • sbt-projectmatrix を使うことで複数の Scala バージョンや JVM/JS/Native クロスプラットフォームの並列ビルドを行うことができる。
  • sbt-projectmatrix 0.6.0 は簡潔なプロジェクト ID を生成する。
  • sbt-projectmatrix 0.6.0 はビルド内での Scala 2.13-3.0 インターオペラビリティを可能とする。

sbt 1.3.13

in

I'm happy to announce sbt 1.3.13 patch release. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.3.13.

Special thanks to Scala Center. It takes time to review bug reports, pull requests, make sure contributions land to the right places, and Scala Center sponsored me to do maintainer tasks for sbt during June.

sbt で約束 (promise) を守る

in

build.sbt は、自動的な並列処理を行うタスク・グラフを定義するための DSL だ。タスク同士のメッセージ・パッシングは something.value マクロで表され、これは Applicative 合成 (task1, task2) mapN { case (t1, t2) => .... } をエンコードする。

長く走っている task1 があるとき、途中で task2 と通信できる仕組みがあればいいと思っていた。

promise

sbt でのコンパイルキャッシュ

in

コンパイルキャッシュ (もしくはリモートキャッシュ) という概念はしばらくあったものだが、それを実際にセットアップするのは簡単ではなかった。「関数としてのビルド」機能を基礎的なツールチェインである Zinc や sbt に仕込むことで Scala コミュニティー全体がビルドの高速化の恩恵が得られると思っている。

オープンソースのプロジェクトでも Travis CI が Bintray にキャッシュをプッシュすれば、コントリビューターは最新のビルドからコンパイルをレジュームということができるかもしれない。

sbt の変更の pull req は sbt/sbt#5534 で、Zinc 側の仮想ファイル化は sbt/zinc#712 だ。

Syndicate content