Build #2158
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
schedule: | |
- cron: '0 0 * * *' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
scalaVersion: ['2.12.20', '2.13.14', '3.4.3', '3.5.1'] | |
javaTag: [ | |
'graalvm-community-22.0.1', | |
'graalvm-community-21.0.2', | |
'graalvm-ce-22.3.3-b1-java17', | |
'eclipse-temurin-jammy-22_36', | |
'eclipse-temurin-jammy-21.0.2_13', | |
'eclipse-temurin-jammy-17.0.10_7', | |
'eclipse-temurin-alpine-22_36', | |
'eclipse-temurin-alpine-21.0.2_13', | |
'eclipse-temurin-alpine-17.0.10_7' | |
] | |
include: | |
# https://github.com/graalvm/container/pkgs/container/graalvm-community | |
- javaTag: 'graalvm-community-22.0.1' | |
dockerContext: 'graalvm-community' | |
baseImageTag: '22.0.1-ol9' | |
platforms: 'linux/amd64,linux/arm64' | |
- javaTag: 'graalvm-community-21.0.2' | |
dockerContext: 'graalvm-community' | |
baseImageTag: '21.0.2-ol9' | |
platforms: 'linux/amd64,linux/arm64' | |
# https://github.com/graalvm/container/pkgs/container/graalvm-ce | |
- javaTag: 'graalvm-ce-22.3.3-b1-java17' | |
dockerContext: 'graalvm-ce' | |
baseImageTag: 'ol9-java17-22.3.3-b1' | |
platforms: 'linux/amd64,linux/arm64' | |
# https://hub.docker.com/_/eclipse-temurin/tags | |
- javaTag: 'eclipse-temurin-jammy-22_36' | |
dockerContext: 'eclipse-temurin' | |
baseImageTag: '22_36-jdk-jammy' | |
platforms: 'linux/amd64,linux/arm64' | |
- javaTag: 'eclipse-temurin-jammy-21.0.2_13' | |
dockerContext: 'eclipse-temurin' | |
baseImageTag: '21.0.2_13-jdk-jammy' | |
platforms: 'linux/amd64,linux/arm64' | |
- javaTag: 'eclipse-temurin-jammy-17.0.10_7' | |
dockerContext: 'eclipse-temurin' | |
baseImageTag: '17.0.10_7-jdk-jammy' | |
platforms: 'linux/amd64,linux/arm64' | |
# https://hub.docker.com/_/eclipse-temurin/tags?page=1&name=alpine | |
- javaTag: 'eclipse-temurin-alpine-22_36' | |
dockerContext: 'eclipse-temurin' | |
dockerfile: 'alpine.Dockerfile' | |
baseImageTag: '22_36-jdk-alpine' | |
platforms: 'linux/amd64,linux/arm64/v8' | |
- javaTag: 'eclipse-temurin-alpine-21.0.2_13' | |
dockerContext: 'eclipse-temurin' | |
dockerfile: 'alpine.Dockerfile' | |
baseImageTag: '21.0.2_13-jdk-alpine' | |
platforms: 'linux/amd64,linux/arm64/v8' | |
- javaTag: 'eclipse-temurin-alpine-17.0.10_7' | |
dockerContext: 'eclipse-temurin' | |
dockerfile: 'alpine.Dockerfile' | |
baseImageTag: '17.0.10_7-jdk-alpine' | |
platforms: 'linux/amd64' | |
exclude: | |
# https://github.com/VirtusLab/scala-cli/issues/3130 | |
- scalaVersion: '3.5.1' | |
javaTag: 'graalvm-community-22.0.1' | |
- scalaVersion: '3.5.1' | |
javaTag: 'graalvm-community-21.0.2' | |
- scalaVersion: '3.5.1' | |
javaTag: 'graalvm-ce-22.3.3-b1-java17' | |
# https://github.com/VirtusLab/scala-cli/issues/2758 | |
# - scalaVersion: '3.5.0' | |
# javaTag: 'eclipse-temurin-alpine-22_36' | |
# - scalaVersion: '3.5.0' | |
# javaTag: 'eclipse-temurin-alpine-21.0.2_13' | |
# - scalaVersion: '3.5.0' | |
# javaTag: 'eclipse-temurin-alpine-17.0.10_7' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3.2.0 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v3.6.1 | |
# with: | |
# install: true | |
- name: Available platforms | |
run: echo ${{ steps.buildx.outputs.platforms }} | |
- name: Get latest SBT version | |
id: get_sbt_version | |
run: | | |
SBT_VERSION=$( | |
curl --silent -L https://github.com/sbt/sbt/releases | | |
grep -i -w -o '>[0-9]*\.[0-9]*\.[0-9]*</a>' | | |
grep -i -w -o '[0-9]*\.[0-9]*\.[0-9]*' | | |
sort --version-sort | tail -n 1) | |
[[ -z "$SBT_VERSION" ]] && { echo "Failed to get latest sbt version" ; exit 1; } | |
echo "VERSION=$SBT_VERSION" >> $GITHUB_OUTPUT | |
- name: Create docker tag | |
id: create_docker_tag | |
run: | | |
TAG=sbtscala/scala-sbt:${{ matrix.javaTag }}_${{ steps.get_sbt_version.outputs.VERSION }}_${{ matrix.scalaVersion }} | |
echo "TAG=$TAG" >> $GITHUB_OUTPUT | |
- name: Build docker image | |
uses: docker/build-push-action@v6 | |
with: | |
context: ${{ matrix.dockerContext }} | |
no-cache: true | |
tags: ${{ steps.create_docker_tag.outputs.TAG }} | |
file: ${{ matrix.dockerContext }}/${{ matrix.dockerfile || 'Dockerfile' }} | |
build-args: | | |
BASE_IMAGE_TAG=${{ matrix.baseImageTag }} | |
SBT_VERSION=${{ steps.get_sbt_version.outputs.VERSION }} | |
SCALA_VERSION=${{ matrix.scalaVersion }} | |
load: true | |
- name: Test docker image as root (default) | |
if: ${{ !startsWith(matrix.scalaVersion, '2.12') }} | |
# scala --version does not work on < 2.13 | |
run: | | |
docker run "${{ steps.create_docker_tag.outputs.TAG }}" \ | |
scala --version && | |
sbt about | |
- name: Test docker image scala as sbtuser | |
if: ${{ !startsWith(matrix.scalaVersion, '2.12') }} | |
# scala --version does not work on < 2.13 | |
run: | | |
docker run -u sbtuser -w /home/sbtuser "${{ steps.create_docker_tag.outputs.TAG }}" \ | |
scala --version && | |
sbt about | |
- name: Log in to DockerHub | |
if: github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Rebuild and push ${{ matrix.platforms }} docker images | |
if: github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' | |
uses: docker/build-push-action@v6 | |
with: | |
context: ${{ matrix.dockerContext }} | |
file: ${{ matrix.dockerContext }}/${{ matrix.dockerfile || 'Dockerfile' }} | |
tags: ${{ steps.create_docker_tag.outputs.TAG }} | |
build-args: | | |
BASE_IMAGE_TAG=${{ matrix.baseImageTag }} | |
SBT_VERSION=${{ steps.get_sbt_version.outputs.VERSION }} | |
SCALA_VERSION=${{ matrix.scalaVersion }} | |
platforms: ${{ matrix.platforms }} | |
push: true |