Skip to content

Update sbt to 1.10.4 #654

Update sbt to 1.10.4

Update sbt to 1.10.4 #654

Workflow file for this run

# 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: ['**', '!update/**', '!pr/**']
push:
branches: ['**', '!update/**', '!pr/**']
tags: [v*]
env:
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_CREDENTIAL_HOST: ${{ secrets.SONATYPE_CREDENTIAL_HOST }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
PGP_SECRET: ${{ secrets.PGP_SECRET }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
build:
name: Build and Test
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- ubuntu-20.04
- ubuntu-22.04
- macos-11
- macos-12
- windows-2022
scala: [3.3.3, 2.13.12]
java: [temurin@17]
project: [rootJVM, rootNative]
include:
- os: ubuntu-latest
experimental: yes
exclude:
- scala: 3.3.3
os: windows-2022
- project: rootJVM
runs-on: ${{ matrix.os }}
env:
EXPERIMENTAL: ${{ matrix.experimental }}
steps:
- name: Ignore line ending differences in git
if: contains(runner.os, 'windows')
shell: bash
run: git config --global core.autocrlf false
- name: Checkout current branch (full)
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Download Java (temurin@17)
id: download-java-temurin-17
if: matrix.java == 'temurin@17'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 17
- name: Setup Java (temurin@17)
if: matrix.java == 'temurin@17'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 17
jdkFile: ${{ steps.download-java-temurin-17.outputs.jdkFile }}
- name: Cache sbt
uses: actions/cache@v3
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: Install libcurl (ubuntu)
if: startsWith(matrix.os, 'ubuntu') && matrix.experimental != 'yes'
shell: bash
run: |
sudo apt-get update
sudo apt-get install libcurl4-openssl-dev
- name: Build libcurl from source (ubuntu)
if: startsWith(matrix.os, 'ubuntu') && matrix.experimental == 'yes'
shell: bash
run: |
sudo apt-get update
sudo apt-get purge curl
sudo apt-get install libssl-dev autoconf libtool make wget unzip
cd /usr/local/src
sudo wget https://curl.se/download/curl-7.87.0.zip
sudo unzip curl-7.87.0.zip
cd curl-7.87.0
sudo ./configure --with-openssl --enable-websockets
sudo make
sudo make install
curl-config --version
curl-config --protocols
echo "LD_LIBRARY_PATH=/usr/local/lib/" >> $GITHUB_ENV
- name: Install libcurl (windows)
if: startsWith(matrix.os, 'windows')
shell: bash
run: |
vcpkg integrate install
vcpkg install --triplet x64-windows curl
cp "C:\vcpkg\installed\x64-windows\lib\libcurl.lib" "C:\vcpkg\installed\x64-windows\lib\curl.lib"
- name: Check that workflows are up to date
shell: bash
run: sbt githubWorkflowCheck
- name: Check headers and formatting
if: matrix.java == 'temurin@17' && matrix.os == 'ubuntu-latest'
shell: bash
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' headerCheckAll scalafmtCheckAll 'project /' scalafmtSbtCheck
- name: nativeLink
if: matrix.project == 'rootNative'
shell: bash
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' Test/nativeLink
- name: Test
shell: bash
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' integrate
- name: Check binary compatibility
if: matrix.java == 'temurin@17' && matrix.os == 'ubuntu-latest'
shell: bash
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' mimaReportBinaryIssues
- name: Generate API documentation
if: matrix.java == 'temurin@17' && matrix.os == 'ubuntu-latest'
shell: bash
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' doc
- name: Check scalafix lints
if: matrix.java == 'temurin@17' && !startsWith(matrix.scala, '3.')
shell: bash
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' 'scalafixAll --check'
- name: Make target directories
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
shell: bash
run: mkdir -p target .js/target curl/target test-server/target .jvm/target .native/target tests/websocket/target example/target tests/http/target tests/common/target project/target
- name: Compress target directories
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
shell: bash
run: tar cf targets.tar target .js/target curl/target test-server/target .jvm/target .native/target tests/websocket/target example/target tests/http/target tests/common/target project/target
- name: Upload target directories
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
uses: actions/upload-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }}-${{ matrix.project }}
path: targets.tar
publish:
name: Publish Artifacts
needs: [build]
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
strategy:
matrix:
os: [ubuntu-latest]
java: [temurin@17]
runs-on: ${{ matrix.os }}
steps:
- name: Ignore line ending differences in git
if: contains(runner.os, 'windows')
run: git config --global core.autocrlf false
- name: Checkout current branch (full)
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Download Java (temurin@17)
id: download-java-temurin-17
if: matrix.java == 'temurin@17'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 17
- name: Setup Java (temurin@17)
if: matrix.java == 'temurin@17'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 17
jdkFile: ${{ steps.download-java-temurin-17.outputs.jdkFile }}
- name: Cache sbt
uses: actions/cache@v3
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: Install libcurl (ubuntu)
if: startsWith(matrix.os, 'ubuntu') && matrix.experimental != 'yes'
run: |
sudo apt-get update
sudo apt-get install libcurl4-openssl-dev
- name: Build libcurl from source (ubuntu)
if: startsWith(matrix.os, 'ubuntu') && matrix.experimental == 'yes'
run: |
sudo apt-get update
sudo apt-get purge curl
sudo apt-get install libssl-dev autoconf libtool make wget unzip
cd /usr/local/src
sudo wget https://curl.se/download/curl-7.87.0.zip
sudo unzip curl-7.87.0.zip
cd curl-7.87.0
sudo ./configure --with-openssl --enable-websockets
sudo make
sudo make install
curl-config --version
curl-config --protocols
echo "LD_LIBRARY_PATH=/usr/local/lib/" >> $GITHUB_ENV
- name: Install libcurl (windows)
if: startsWith(matrix.os, 'windows')
run: |
vcpkg integrate install
vcpkg install --triplet x64-windows curl
cp "C:\vcpkg\installed\x64-windows\lib\libcurl.lib" "C:\vcpkg\installed\x64-windows\lib\curl.lib"
- name: Download target directories (3.3.3, rootNative)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-3.3.3-rootNative
- name: Inflate target directories (3.3.3, rootNative)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (2.13.12, rootNative)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-2.13.12-rootNative
- name: Inflate target directories (2.13.12, rootNative)
run: |
tar xf targets.tar
rm targets.tar
- name: Import signing key
if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE == ''
run: echo $PGP_SECRET | base64 -di | gpg --import
- name: Import signing key and strip passphrase
if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE != ''
run: |
echo "$PGP_SECRET" | base64 -di > /tmp/signing-key.gpg
echo "$PGP_PASSPHRASE" | gpg --pinentry-mode loopback --passphrase-fd 0 --import /tmp/signing-key.gpg
(echo "$PGP_PASSPHRASE"; echo; echo) | gpg --command-fd 0 --pinentry-mode loopback --change-passphrase $(gpg --list-secret-keys --with-colons 2> /dev/null | grep '^sec:' | cut --delimiter ':' --fields 5 | tail -n 1)
- name: Publish
run: sbt tlCiRelease