v3.9.2 #6
Workflow file for this run
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: Release Native | |
on: | |
release: | |
types: [ published ] | |
workflow_dispatch: | |
inputs: | |
version: | |
description: "Scalafmt version (e.g., 1.2.3)" | |
required: true | |
run_id: | |
description: "Github actions run_id which built the release" | |
required: true | |
permissions: | |
contents: read | |
jobs: | |
scala-native: | |
if: github.event_name == 'release' | |
permissions: | |
contents: write # for actions/upload-release-asset to upload release asset | |
strategy: | |
fail-fast: false | |
matrix: | |
deploy: [ | |
{ os: macOS-13, name: scalafmt-x86_64-apple-darwin.zip }, | |
{ os: macOS-14, name: scalafmt-aarch64-apple-darwin.zip }, | |
{ os: ubuntu-22.04, name: scalafmt-x86_64-pc-linux.zip }, | |
{ os: ubuntu-24.04-arm, name: scalafmt-aarch64-pc-linux.zip }, | |
{ os: windows-2022, name: scalafmt-x86_64-pc-win32.zip } | |
] | |
runs-on: ${{ matrix.deploy.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-java@v4 | |
with: | |
java-version: '21' | |
distribution: 'temurin' | |
cache: 'sbt' | |
- uses: sbt/setup-sbt@v1 | |
- run: sbt scala-native | |
env: | |
CI: true | |
- name: Zip artifact for deployment | |
if: ${{ !startsWith(matrix.deploy.os, 'windows') }} | |
run: zip ${{ matrix.deploy.name }} scalafmt | |
- name: Zip artifact for deployment | |
if: ${{ startsWith(matrix.deploy.os, 'windows') }} | |
run: 7z a ${{ matrix.deploy.name }} scalafmt.exe | |
- uses: actions/upload-artifact@master | |
with: | |
name: ${{ matrix.deploy.name }} | |
path: ${{ matrix.deploy.name }} | |
- name: Upload release to Github | |
uses: actions/upload-release-asset@v1.0.2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ github.event.release.upload_url }} | |
asset_path: ${{ matrix.deploy.name }} | |
asset_name: ${{ matrix.deploy.name }} | |
asset_content_type: application/zip | |
dockerize: | |
needs: [ scala-native ] | |
if: ${{ github.event_name == 'release' == success() }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Docker Meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: scalameta/scalafmt | |
tags: type=raw,value=${{ github.event_name == 'release' && github.event.release.tag_name || github.event.inputs.version }} | |
- name: Downloading scalafmt for Docker Build | |
uses: actions/download-artifact@v4 | |
with: | |
name: scalafmt-x86_64-pc-linux | |
path: tmp/scalafmt-docker-build # Dockerfile uses this | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
run-id: ${{ github.event_name == 'release' && github.run_id || github.event.inputs.run_id }} | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
native-image: # deprecated, will soon be removed | |
if: github.event_name == 'release' | |
permissions: | |
contents: write # for actions/upload-release-asset to upload release asset | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ macOS-latest, ubuntu-latest ] | |
libc: [ default, musl ] | |
exclude: | |
- os: macOS-latest | |
libc: musl | |
include: | |
- os: macOS-latest | |
artifact: scalafmt-macos | |
env: | |
NATIVE_IMAGE_STATIC: none | |
- os: ubuntu-latest | |
libc: default | |
artifact: scalafmt-linux-glibc | |
env: | |
NATIVE_IMAGE_STATIC: nolibc | |
- os: ubuntu-latest | |
libc: musl | |
artifact: scalafmt-linux-musl | |
env: | |
NATIVE_IMAGE_STATIC: musl | |
env: ${{ matrix.env }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up GraalVM | |
uses: graalvm/setup-graalvm@v1 | |
with: | |
java-version: '21' | |
distribution: 'graalvm-community' | |
native-image-musl: ${{ matrix.libc == 'musl' }} | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: sbt/setup-sbt@v1 | |
- run: bin/build-native-image.sh | |
env: | |
CI: true | |
- uses: actions/upload-artifact@master | |
with: | |
name: ${{ matrix.artifact }} | |
path: scalafmt | |
- name: Upload release to Github | |
uses: actions/upload-release-asset@v1.0.2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ github.event.release.upload_url }} | |
asset_path: scalafmt | |
asset_name: ${{ matrix.artifact }} | |
asset_content_type: application/zip |