Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI: Refactor more common parts into workflow include #2509

Merged
merged 7 commits into from
May 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 55 additions & 45 deletions .github/workflows/actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,108 +28,118 @@ concurrency:

jobs:

linux:
itest:
strategy:
fail-fast: false
matrix:
java-version: [8, 17]
buildcmd:
# bootstrap tests
- ci/test-mill-release.sh
# unit and module tests
- ./mill -i -k "{main,scalalib,scalajslib,scalanativelib,testrunner,bsp}.__.test"

- ./mill -i -k "integration.feature.__.server.test"
- ./mill -i -k "integration.feature.__.fork.test"

# contrib s
- ./mill -i -k "contrib._.test"

include:
# Just some reporting to enable reasoning about library upgrades
# bootstrap tests
- java-version: 8
buildcmd: |
./mill -i -k __.ivyDepsTree
./mill -i -k __.ivyDepsTree --withRuntime true

buildcmd: ci/test-mill-release.sh
- java-version: 17
buildcmd: ci/test-mill-release.sh
# Limit some tests to Java 17 to limit CI times
- java-version: 17
buildcmd: ci/test-mill-dev.sh
- java-version: 17
buildcmd: ci/test-mill-bootstrap.sh
# Have one job on latest JVM
- java-version: 20
buildcmd: ci/test-mill-bootstrap.sh
# Just some reporting to enable reasoning about library upgrades
- java-version: 8
buildcmd: |
./mill -i -k __.ivyDepsTree
./mill -i -k __.ivyDepsTree --withRuntime true


uses: ./.github/workflows/run-mill-action.yml
with:
java-version: ${{ matrix.java-version }}
buildcmd: ${{ matrix.buildcmd }}

linux:
strategy:
fail-fast: false
matrix:
java-version: [8, 17]
millargs:
# unit and module tests
- '"{main,scalalib,scalajslib,scalanativelib,testrunner,bsp}.__.test"'
# integration tests
- "integration.feature.__.server.test"
- "integration.feature.__.fork.test"
# contrib tests
- "contrib._.test"

include:
# Limit some tests to Java 17 to limit CI times
- java-version: 17
buildcmd: ./mill -i -k "example.__.local.test"
millargs: "example.__.local.test"
- java-version: 17
buildcmd: ./mill -i -k "integration.feature.__.local.test"
millargs: "integration.feature.__.local.test"
- java-version: 17
buildcmd: ./mill -i -k "integration.failure.__.test"
millargs: "integration.failure.__.test"
- java-version: 17
buildcmd: ./mill -i -k "integration.thirdparty.__.test"
millargs: "integration.thirdparty.__.test"
- java-version: 17
buildcmd: ./mill -i docs.githubPages

# Have one job on latest JVM
- java-version: 20
buildcmd: ci/test-mill-bootstrap.sh
millargs: docs.githubPages

uses: ./.github/workflows/run-mill-action.yml
with:
os: ubuntu-latest
java-version: ${{ matrix.java-version }}
buildcmd: ${{ matrix.buildcmd }}
millargs: ${{ matrix.millargs }}

format-check:
uses: ./.github/workflows/run-mill-action.yml
with:
os: ubuntu-latest
java-version: '8'
buildcmd: ./mill -i -k mill.scalalib.scalafmt.ScalafmtModule/checkFormatAll __.sources
millargs: mill.scalalib.scalafmt.ScalafmtModule/checkFormatAll __.sources

bincompat-check:
uses: ./.github/workflows/run-mill-action.yml
with:
os: ubuntu-latest
java-version: '8'
buildcmd: ./mill -i -k __.mimaReportBinaryIssues
millargs: __.mimaReportBinaryIssues
continue-on-error: true

windows:
strategy:
fail-fast: false
matrix:
java-version: [8, 17]
buildcmd:
millargs:
# Run a stripped down build matrix on Windows, to avoid taking too long
- "{__.publishLocal,dev.assembly,__.compile}"
- "{main,scalalib,scalajslib,bsp}.__.test"
- '"{__.publishLocal,dev.assembly,__.compile}"'
- '"{main,scalalib,scalajslib,bsp}.__.test"'

include:
# Limit some tests to Java 17 to limit CI times
- java-version: 17
# just run a subset of examples/ on Windows, because for some reason running
# the whole suite can take hours on windows v.s. half an hour on linux
buildcmd: "example.{scalabuilds,cross,tasks}.__.local.test"
millargs: '"example.{scalabuilds,cross,tasks}.__.local.test"'
- java-version: 17
buildcmd: "integration.feature.__.fork.test"
millargs: "integration.feature.__.fork.test"
- java-version: 17
buildcmd: "integration.feature.__.server.test"
millargs: "integration.feature.__.server.test"
- java-version: 17
buildcmd: "integration.failure.__.fork.test"
millargs: "integration.failure.__.fork.test"
- java-version: 17
buildcmd: "integration.thirdparty.__.fork.test"
millargs: "integration.thirdparty.__.fork.test"
- java-version: 17
buildcmd: "contrib.__.test"
millargs: "contrib.__.test"

uses: ./.github/workflows/run-mill-action.yml
with:
os: windows-latest
java-version: ${{ matrix.java-version }}
buildcmd: cmd /C %GITHUB_WORKSPACE%\ci\mill.bat -i -d -k "${{ matrix.buildcmd }}"
millargs: ${{ matrix.millargs }}

publish-sonatype:
# when in master repo, publish all tags and manual runs on main
if: github.repository == 'com-lihaoyi/mill' && (startsWith( github.ref, 'refs/tags/') || (github.ref == 'refs/heads/main' && github.event_name == 'workflow_dispatch' ) )
needs: [linux, windows, format-check]
needs: [linux, windows, format-check, itest]

runs-on: ubuntu-latest

Expand Down
16 changes: 14 additions & 2 deletions .github/workflows/run-mill-action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@ on:
workflow_call:
inputs:
buildcmd:
required: true
default: ''
type: string
millargs:
default: ''
type: string
java-version:
required: true
type: string
os:
required: true
default: 'ubuntu-latest'
type: string
continue-on-error:
default: false
Expand Down Expand Up @@ -41,3 +44,12 @@ jobs:

- name: Run '${{ inputs.buildcmd }}'
run: ${{ inputs.buildcmd }}
if: inputs.buildcmd != ''

- name: Run Mill '${{ inputs.millargs }}'
run: ./mill -i -k ${{ inputs.millargs }}
if: inputs.millargs != '' && !startsWith(inputs.os, 'windows')

- name: Run Mill (on Windows) '${{ inputs.millargs }}'
run: cmd /C %GITHUB_WORKSPACE%\ci\mill.bat -i -d -k ${{ inputs.millargs }}
if: inputs.millargs != '' && startsWith(inputs.os, 'windows')