Skip to content

Commit

Permalink
Switch to using Github Actions CI (#1690)
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 authored Dec 16, 2020
1 parent 315ff8c commit 25a417f
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: [email protected]
- 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 25a417f

Please sign in to comment.