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
(cherry picked from commit 25a417f)

# Conflicts:
#	.mergify.yml
#	build.sbt
#	project/plugins.sbt
  • Loading branch information
jackkoenig authored and mergify-bot committed Dec 16, 2020
1 parent 7203b9a commit 47eacde
Show file tree
Hide file tree
Showing 4 changed files with 241 additions and 0 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!
107 changes: 107 additions & 0 deletions .mergify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
pull_request_rules:
- 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

80 changes: 80 additions & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -123,16 +123,91 @@ lazy val chiselSettings = Seq (
}
)

<<<<<<< HEAD
lazy val coreMacros = (project in file("coreMacros")).
settings(commonSettings: _*).
// Prevent separate JARs from being generated for coreMacros.
settings(skip in publish := true)
=======
autoCompilerPlugins := true

// Plugin must be fully cross-versioned (published for Scala minor version)
// The plugin only works in Scala 2.12+
lazy val pluginScalaVersions = Seq(
"2.11.12", // Only to support chisel3 cross building for 2.11, plugin does nothing in 2.11
// scalamacros paradise version used is not published for 2.12.0 and 2.12.1
"2.12.2",
"2.12.3",
"2.12.4",
"2.12.5",
"2.12.6",
"2.12.7",
"2.12.8",
"2.12.9",
"2.12.10",
"2.12.11",
"2.12.12",
)

lazy val plugin = (project in file("plugin")).
settings(name := "chisel3-plugin").
settings(commonSettings: _*).
settings(publishSettings: _*).
settings(
libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value,
scalacOptions += "-Xfatal-warnings",
crossScalaVersions := pluginScalaVersions,
// Must be published for Scala minor version
crossVersion := CrossVersion.full,
crossTarget := {
// workaround for https://github.com/sbt/sbt/issues/5097
target.value / s"scala-${scalaVersion.value}"
},
// 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(
scalacOptions in Compile ++= {
val jar = (plugin / Compile / Keys.`package`).value
val addPlugin = "-Xplugin:" + jar.getAbsolutePath
// add plugin timestamp to compiler options to trigger recompile of
// main after editing the plugin. (Otherwise a 'clean' is needed.)
val dummy = "-Jdummy=" + jar.lastModified
Seq(addPlugin, dummy)
}
)

lazy val macros = (project in file("macros")).
settings(name := "chisel3-macros").
settings(commonSettings: _*).
settings(publishSettings: _*).
settings(mimaPreviousArtifacts := Set())
>>>>>>> 25a417f8... Switch to using Github Actions CI (#1690)

lazy val chiselFrontend = (project in file("chiselFrontend")).
settings(commonSettings: _*).
// Prevent separate JARs from being generated for chiselFrontend.
settings(skip in publish := true).
settings(
<<<<<<< HEAD
=======
buildInfoPackage := "chisel3",
buildInfoUsePackageAsPath := true,
buildInfoKeys := Seq[BuildInfoKey](buildInfoPackage, version, scalaVersion, sbtVersion)
).
settings(publishSettings: _*).
settings(mimaPreviousArtifacts := Set()).
settings(
name := "chisel3-core",
>>>>>>> 25a417f8... Switch to using Github Actions CI (#1690)
scalacOptions := scalacOptions.value ++ Seq(
"-deprecation",
"-explaintypes",
Expand Down Expand Up @@ -172,6 +247,11 @@ lazy val chisel = (project in file(".")).
settings(mimaPreviousArtifacts := Set("edu.berkeley.cs" %% "chisel3" % "3.2.7")).
settings(mimaCurrentClassfiles := (packageBin in Compile).value).
settings(
<<<<<<< HEAD
=======
mimaPreviousArtifacts := Set(),
libraryDependencies += defaultVersions("treadle") % "test",
>>>>>>> 25a417f8... Switch to using Github Actions CI (#1690)
scalacOptions in Test ++= Seq("-language:reflectiveCalls"),
scalacOptions in Compile in doc ++= Seq(
"-diagrams",
Expand Down
9 changes: 9 additions & 0 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,13 @@ addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.4.1")

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

<<<<<<< HEAD
addSbtPlugin("com.thoughtworks.sbt-api-mappings" % "sbt-api-mappings" % "3.0.0")
=======
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")
>>>>>>> 25a417f8... Switch to using Github Actions CI (#1690)

0 comments on commit 47eacde

Please sign in to comment.