Skip to content

Commit

Permalink
Switch to using Github Actions CI
Browse files Browse the repository at this point in the history
MiMa binary compatibility checks are now run on master, but the
mimaPreviousArtifacts are empty which makes the check a no-op. This
helps keep both the build.sbt and CI more consistent between master and
stable branches.

.mergify.yml is also updated with mergify.sc from chisel-repo-tools
using the following configuration:

conditions:
  - status-success=all tests passed
branches:
  - 3.2.x
  - 3.3.x
  - 3.4.x
  • Loading branch information
jackkoenig committed Dec 16, 2020
1 parent 315ff8c commit 8b8f38a
Show file tree
Hide file tree
Showing 4 changed files with 163 additions and 134 deletions.
45 changes: 45 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Continuous Integration

on: [pull_request]

jobs:
ci:
name: ci
runs-on: ubuntu-latest
strategy:
matrix:
scala: [2.12.12, 2.11.12]
container:
image: ucbbar/chisel3-tools
options: --user github --entrypoint /bin/bash
env:
CONTAINER_HOME: /home/github

steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Scala
uses: olafurpg/setup-scala@v10
with:
java-version: adopt@1.8
- name: Cache Scala
uses: coursier/cache-action@v5
- name: Documentation (Scala 2.12 only)
if: matrix.scala == '2.12.12'
run: sbt ++${{ matrix.scala }} docs/mdoc
- name: Test
run: sbt ++${{ matrix.scala }} test
- name: Binary compatibility
run: sbt ++${{ matrix.scala }} mimaReportBinaryIssues


# Sentinel job to simplify how we specify which checks need to pass in branch
# protection and in Mergify
#
# When adding new jobs, please add them to `needs` below
all_tests_passed:
name: "all tests passed"
needs: [ci]
runs-on: ubuntu-latest
steps:
- run: echo Success!
238 changes: 105 additions & 133 deletions .mergify.yml
Original file line number Diff line number Diff line change
@@ -1,135 +1,107 @@
pull_request_rules:
- name: remove outdated reviews
conditions:
- base=master
actions:
dismiss_reviews:
- name: automatic squash-and-merge on CI success and review
conditions:
- status-success=all tests passed
- '#approved-reviews-by>=1'
- '#changes-requested-reviews-by=0'
- base=master
- label="Please Merge"
- label!="DO NOT MERGE"
- label!="bp-conflict"
actions:
merge:
method: squash
strict: smart
strict_method: merge
- name: backport to 3.4.x
conditions:
- merged
- base=master
- milestone=3.4.x
actions:
backport:
branches:
- 3.4.x
ignore_conflicts: true
label_conflicts: bp-conflict
label:
add:
- Backported
- name: backport to 3.3.x, 3.4.x
conditions:
- merged
- base=master
- milestone=3.3.x
actions:
backport:
branches:
- 3.3.x
- 3.4.x
ignore_conflicts: true
label_conflicts: bp-conflict
label:
add:
- Backported
- name: backport to 3.2.x, 3.3.x, 3.4.x
conditions:
- merged
- base=master
- milestone=3.2.x
actions:
backport:
branches:
- 3.2.x
- 3.3.x
- 3.4.x
ignore_conflicts: true
label_conflicts: bp-conflict
label:
add:
- Backported
- name: label Mergify backport PR
conditions:
- body~=This is an automated backport of pull request \#\d+ done by Mergify
actions:
label:
add:
- Backport
- name: automatic squash-and-mege of 3.2.x backport PRs
conditions:
- status-success=all tests passed
- '#changes-requested-reviews-by=0'
- base=3.2.x
- label="Backport"
- label!="DO NOT MERGE"
- label!="bp-conflict"
actions:
merge:
method: squash
strict: smart
strict_method: merge
- name: automatic squash-and-mege of 3.3.x backport PRs
conditions:
- status-success=all tests passed
- '#changes-requested-reviews-by=0'
- base=3.3.x
- label="Backport"
- label!="DO NOT MERGE"
- label!="bp-conflict"
actions:
merge:
method: squash
strict: smart
strict_method: merge
- name: automatic squash-and-mege of 3.4.x backport PRs
conditions:
- status-success=all tests passed
- '#changes-requested-reviews-by=0'
- base=3.4.x
- label="Backport"
- label!="DO NOT MERGE"
- label!="bp-conflict"
actions:
merge:
method: squash
strict: smart
strict_method: merge

pull_request_rules:
- name: automatic squash-and-merge on CI success and review
conditions:
- "status-success=ci/circleci: build-firrtl"
- "status-success=ci/circleci: build-prep"
- "status-success=ci/circleci: test-chisel-2_11"
- "status-success=ci/circleci: test-chisel-2_12"
- status-success=license/cla
- "#approved-reviews-by>=1"
- "#changes-requested-reviews-by=0"
- base=master
- label="Please Merge"
- label!="DO NOT MERGE"
- label!="bp-conflict"
actions:
merge:
method: squash
strict: smart
strict_method: merge

- name: backport to 3.4.x
conditions:
- merged
- base=master
- milestone=3.4.x
actions:
backport:
branches:
- 3.4.x
ignore_conflicts: True
label_conflicts: "bp-conflict"
label:
add: [Backported]

- name: backport to 3.3.x and 3.4.x
conditions:
- merged
- base=master
- milestone=3.3.x
actions:
backport:
branches:
- 3.3.x
- 3.4.x
ignore_conflicts: True
label_conflicts: "bp-conflict"
label:
add: [Backported]

- name: backport to 3.2.x, 3.3.x, and 3.4.x
conditions:
- merged
- base=master
- milestone=3.2.x
actions:
backport:
branches:
- 3.2.x
- 3.3.x
- 3.4.x
ignore_conflicts: True
label_conflicts: "bp-conflict"
label:
add: [Backported]

- name: label Mergify backport PR
conditions:
- body~=This is an automated backport of pull request \#\d+ done by Mergify
actions:
label:
add: [Backport]

- name: automatic squash-and-merge of 3.4.x backport PRs
conditions:
- "status-success=ci/circleci: build-firrtl"
- "status-success=ci/circleci: build-prep"
- "status-success=ci/circleci: test-chisel-2_11"
- "status-success=ci/circleci: test-chisel-2_12"
- "status-success=ci/circleci: check-binary-compatibility"
- status-success=license/cla
- "#changes-requested-reviews-by=0"
- base=3.4.x
- label="Backport"
- label!="DO NOT MERGE"
- label!="bp-conflict"
actions:
merge:
method: squash
strict: smart
strict_method: merge

- name: automatic squash-and-merge of 3.3.x backport PRs
conditions:
- "status-success=ci/circleci: build-firrtl"
- "status-success=ci/circleci: build-prep"
- "status-success=ci/circleci: test-chisel-2_11"
- "status-success=ci/circleci: test-chisel-2_12"
- "status-success=ci/circleci: check-binary-compatibility"
- status-success=license/cla
- "#changes-requested-reviews-by=0"
- base=3.3.x
- label="Backport"
- label!="DO NOT MERGE"
- label!="bp-conflict"
actions:
merge:
method: squash
strict: smart
strict_method: merge

- name: automatic squash-and-merge of 3.2.x backport PRs
conditions:
- "status-success=ci/circleci: build-firrtl"
- "status-success=ci/circleci: build-prep"
- "status-success=ci/circleci: test-chisel-2_11"
- "status-success=ci/circleci: test-chisel-2_12"
- "status-success=ci/circleci: check-binary-compatibility"
- status-success=license/cla
- "#changes-requested-reviews-by=0"
- base=3.2.x
- label="Backport"
- label!="DO NOT MERGE"
- label!="bp-conflict"
actions:
merge:
method: squash
strict: smart
strict_method: merge
12 changes: 11 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,13 @@ lazy val plugin = (project in file("plugin")).
},
// Only publish for Scala 2.12
publish / skip := !scalaVersion.value.startsWith("2.12")
).
settings(
mimaPreviousArtifacts := {
// Not published for 2.11, do not try to check binary compatibility with a 2.11 artifact
if (scalaVersion.value.startsWith("2.11")) Set()
else Set()
}
)

lazy val usePluginSettings = Seq(
Expand All @@ -163,7 +170,8 @@ lazy val usePluginSettings = Seq(
lazy val macros = (project in file("macros")).
settings(name := "chisel3-macros").
settings(commonSettings: _*).
settings(publishSettings: _*)
settings(publishSettings: _*).
settings(mimaPreviousArtifacts := Set())

lazy val firrtlRef = ProjectRef(workspaceDirectory / "firrtl", "firrtl")

Expand All @@ -177,6 +185,7 @@ lazy val core = (project in file("core")).
buildInfoKeys := Seq[BuildInfoKey](buildInfoPackage, version, scalaVersion, sbtVersion)
).
settings(publishSettings: _*).
settings(mimaPreviousArtifacts := Set()).
settings(
name := "chisel3-core",
scalacOptions := scalacOptions.value ++ Seq(
Expand Down Expand Up @@ -205,6 +214,7 @@ lazy val chisel = (project in file(".")).
dependsOn(core).
aggregate(macros, core, plugin).
settings(
mimaPreviousArtifacts := Set(),
libraryDependencies += defaultVersions("treadle") % "test",
scalacOptions in Test ++= Seq("-language:reflectiveCalls"),
scalacOptions in Compile in doc ++= Seq(
Expand Down
2 changes: 2 additions & 0 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,7 @@ addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.2.5" )

addSbtPlugin("com.eed3si9n" % "sbt-sriracha" % "0.1.0")

addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.8.1")

// From FIRRTL for building from source
addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.9.19")

0 comments on commit 8b8f38a

Please # to comment.