https://github.com/softwaremill/github-actions-workflows
Set of github actions workflows used in the SoftwareMill github repositories
https://github.com/softwaremill/github-actions-workflows
Last synced: 5 days ago
JSON representation
Set of github actions workflows used in the SoftwareMill github repositories
- Host: GitHub
- URL: https://github.com/softwaremill/github-actions-workflows
- Owner: softwaremill
- License: apache-2.0
- Created: 2025-02-13T13:11:02.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-12-03T14:35:05.000Z (about 2 months ago)
- Last Synced: 2025-12-05T13:42:29.882Z (about 2 months ago)
- Size: 71.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GitHub Actions Workflows
GitHub Actions [Reusable Workflows](https://docs.github.com/en/actions/sharing-automations/reusing-workflows) used in
SoftwareMill projects.\
If you use a workflow from this repository, please add its usage to the corresponding section
`List of repositories using this workflow` in this document.
## Architecture
1. All Workflows [have to be located](https://docs.github.com/en/actions/sharing-automations/reusing-workflows#creating-a-reusable-workflow)
in the `.github/worksflows` path, otherwise GitHub Actions won't be able to use them.
2. Actions and Workflows differ in GitHub Actions. This repository contains only Workflows.
- [Action](https://docs.github.com/en/actions/about-github-actions/understanding-github-actions#actions) is a
self-contained piece of code written e.g. in JS.
```yaml
example-action-use:
uses: actions/checkout@v4
```
- [Workflow](https://docs.github.com/en/actions/about-github-actions/understanding-github-actions#workflows) is not a
code, but a collection of correlated Actions contained in yaml files.
```yaml
example-workflow-use:
uses: softwaremill/github-actions-workflows/.github/workflows/auto-merge.yml@main
```
#### Helpful links
- [Reusable Workflows Docs](https://docs.github.com/en/actions/sharing-automations/reusing-workflows)
- [Workflow syntax](https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions)
- [GitHub Actions Formatting conventions](https://nimblehq.co/compass/development/code-conventions/github-actions/)
## List of reusable workflows
1. [Auto Merge](#auto-merge)
2. [Label](#label)
3. [Scala Steward](#scala-steward)
4. [Publish Release](#publish-release)
5. [Mima](#mima)
6. [Build Scala](#build-scala)
7. [Test Report](#test-report)
## [Auto Merge](./.github/workflows/auto-merge.yml)
This workflow is responsible for merging pull requests that are ready to be merged.
### Usage
```yaml
auto-merge:
# only for PRs by softwaremill-ci
if: github.event.pull_request.user.login == 'softwaremill-ci'
needs: [ ci, mima, label ]
uses: softwaremill/github-actions-workflows/.github/workflows/auto-merge.yml@main
secrets: inherit
```
## [Label](./.github/workflows/label.yml)
This workflow is responsible for labeling pull requests. It attaches label if there is exactly one file changed by
steward and this file belongs to a whitelist specified by `labeler.yml`
### Usage
```yaml
label:
# only for PRs by softwaremill-ci
if: github.event.pull_request.user.login == 'softwaremill-ci'
uses: softwaremill/github-actions-workflows/.github/workflows/label.yml@main
secrets: inherit
```
## [Scala Steward](./.github/workflows/scala-steward.yml)
This workflow is responsible for running Scala Steward.
### Usage
```yaml
name: Scala Steward
# This workflow will launch at 00:00 every day
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
permissions:
contents: write # Required to checkout and push changes
pull-requests: write # Required to create PRs for dependency updates
jobs:
scala-steward:
uses: softwaremill/github-actions-workflows/.github/workflows/scala-steward.yml@main
secrets:
github-token: ${{ secrets.SOFTWAREMILL_CI_PR_TOKEN }}
with:
java-version: '21'
```
#### List of input params
| Name | Description | Required | Default | Example |
|--------------|-----------------------------------|----------|---------|-------------|
| java-version | Java version used in the workflow | No | '11' | '21' |
| java-opts | Java options used in the workflow | No | "" | "-Xmx3000M" |
## [Publish Release](./.github/workflows/publish-release.yml)
This workflow is responsible for publishing build artifacts and release notes of scala projects.
It uses multiple secrets so clause `secrets: inherit` has to be added to the workflow definition.
### Usage
```yaml
publish-release:
uses: softwaremill/github-actions-workflows/.github/workflows/publish-release.yml@main
secrets: inherit
with:
java-version: '11'
java-opts: "-Xmx3000M -Dsbt.task.timings=true"
sttp-native: 1
```
#### List of input params
| Name | Description | Required | Default | Example |
|--------------|---------------------------------------------------------------------------------|----------|---------|-------------------------------------|
| java-version | Java version used in the workflow | No | '11' | '21' |
| java-opts | Java options used in the workflow | No | "" | "-Xmx3000M -Dsbt.task.timings=true" |
| sttp-native | Flag indicating if the sttp-native should be included in the aggregate projects | No | 0 | 1 |
## [Mima](./.github/workflows/mima.yml)
This workflow is responsible for running MiMa (binary compatibility checker).
### Usage
```yaml
mima:
uses: softwaremill/github-actions-workflows/.github/workflows/mima.yml@main
with:
java-version: '11'
java-opts: "-Xmx4G"
```
#### List of input params
| Name | Description | Required | Default | Example |
|--------------|-----------------------------------|----------|---------|-------------------------------------|
| java-version | Java version used in the workflow | No | '11' | '21' |
| java-opts | Java options used in the workflow | No | "" | "-Xmx3000M -Dsbt.task.timings=true" |
## [Build Scala](./.github/workflows/build-scala.yml)
This workflow is responsible for building Scala projects.
### Usage
```yaml
build-scala:
uses: softwaremill/github-actions-workflows/.github/workflows/build-scala.yml@main
with:
java-version: '11'
java-opts: '-Xmx3000M -Dsbt.task.timings=true'
sttp-native: 1
install-libidn11: true
```
#### List of input params
| Name | Description | Required | Default | Example |
|-----------------------|---------------------------------------------------------------------------------|----------|---------|-------------------------------------|
| java-version | Java version used in the workflow | No | '11' | '21' |
| java-opts | Java options used in the workflow | No | "" | "-Xmx3000M -Dsbt.task.timings=true" |
| sttp-native | Flag indicating if the sttp-native should be included in the aggregate projects | No | 0 | 1 |
| install-libidn11 | Flag indicating if the libidn11 library should be installed | No | false | true |
| install-libidn2 | Flag indicating if the libidn2 library should be installed | No | false | true |
| compile-documentation | Flag indicating if the project documentation should be compiled | No | false | true |
## [Test Report](./.github/workflows/test-report.yml)
This workflow is responsible for generating test reports.
### Usage
```yaml
test-report:
uses: softwaremill/github-actions-workflows/.github/workflows/test-report.yml@main
```
## Remarks
- All workflows using sbt with ubuntu 24.04 need to add `setup-sbt` step because sbt was removed from the image as
described [here](https://github.com/sbt/setup-sbt?tab=readme-ov-file#december-2024).
## List of actions used in workflows
| action | version | description |
|-----------------------------------------------------------------------------------------------------|---------|------------------------------------------------------------------------|
| [actions/checkout](https://github.com/actions/checkout) | v4 | checks-out your repository under $GITHUB_WORKSPACE |
| [actions/setup-java](https://github.com/actions/setup-java) | v4 | downloads Java, configures runners, caches dependencies |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | v4 | uploads artifacts from the workflow's workspace to be downloaded later |
| [dorny/test-reporter](https://github.com/dorny/test-reporter) | v2 | generates test reports and uploads them as workflow artifacts. |
| [pascalgn/automerge-action](https://github.com/pascalgn/automerge-action) | v0.16.4 | automatically merges PRs with `automerge` label |
| [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) | v6 | drafts release notes based on merged pull requests |
| [sbt/setup-sbt](https://github.com/sbt/setup-sbt) | v1 | enables `sbt` runner |
| [scala-steward-org/scala-steward-action](https://github.com/scala-steward-org/scala-steward-action) | v2 | automates dependency updates for Scala projects |
| [srvaroa/labeler](https://github.com/srvaroa/labeler) | master | manages labels for both Pull Requests and Issues |