Skip to content
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
22 changes: 17 additions & 5 deletions .github/workflows/auto-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,26 @@ jobs:
with:
pull_request: ${{ needs.get-merged-pr.outputs.pr }}

check-merge-openjdk-pr:
check-merge-openjdk11-pr:
uses: ./.github/workflows/auto-merge-inner.yml
needs: [get-merged-pr, binding-refs]
with:
repo: ${{ needs.binding-refs.outputs.openjdk_binding_repo }}
base_repo: ${{ needs.binding-refs.outputs.openjdk_binding_repo_default }}
ref: ${{ needs.binding-refs.outputs.openjdk_binding_ref }}
base_ref: ${{ needs.binding-refs.outputs.openjdk_binding_ref_default }}
repo: ${{ needs.binding-refs.outputs.openjdk11_binding_repo }}
base_repo: ${{ needs.binding-refs.outputs.openjdk11_binding_repo_default }}
ref: ${{ needs.binding-refs.outputs.openjdk11_binding_ref }}
base_ref: ${{ needs.binding-refs.outputs.openjdk11_binding_ref_default }}
core_commit: ${{ needs.get-merged-pr.outputs.commit }}
update_lockfile: cargo build
secrets: inherit

check-merge-openjdk21-pr:
uses: ./.github/workflows/auto-merge-inner.yml
needs: [get-merged-pr, binding-refs]
with:
repo: ${{ needs.binding-refs.outputs.openjdk21_binding_repo }}
base_repo: ${{ needs.binding-refs.outputs.openjdk21_binding_repo_default }}
ref: ${{ needs.binding-refs.outputs.openjdk21_binding_ref }}
base_ref: ${{ needs.binding-refs.outputs.openjdk21_binding_ref_default }}
core_commit: ${{ needs.get-merged-pr.outputs.commit }}
update_lockfile: cargo build
secrets: inherit
Expand Down
15 changes: 12 additions & 3 deletions .github/workflows/extended-tests-bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,22 @@ jobs:
# .github/scripts/ci-test.sh
# .github/scripts/ci-style.sh

extended-tests-openjdk:
extended-tests-openjdk11:
needs: binding-refs
if: contains(github.event.pull_request.labels.*.name, 'PR-extended-testing')
uses: ./.github/workflows/binding-tests-openjdk.yml
with:
repo: ${{ needs.binding-refs.outputs.openjdk_binding_repo }}
ref: ${{ needs.binding-refs.outputs.openjdk_binding_ref }}
repo: ${{ needs.binding-refs.outputs.openjdk11_binding_repo }}
ref: ${{ needs.binding-refs.outputs.openjdk11_binding_ref }}
test-script: ci-test-extended.sh

extended-tests-openjdk21:
needs: binding-refs
if: contains(github.event.pull_request.labels.*.name, 'PR-extended-testing')
uses: ./.github/workflows/binding-tests-openjdk.yml
with:
repo: ${{ needs.binding-refs.outputs.openjdk21_binding_repo }}
ref: ${{ needs.binding-refs.outputs.openjdk21_binding_ref }}
test-script: ci-test-extended.sh

extended-tests-jikesrvm:
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/merge-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ env:
"style-check/x86_64-unknown-linux-gnu/stable",
"style-check/i686-unknown-linux-gnu/stable",
"style-check/x86_64-apple-darwin/stable",
"extended-tests-openjdk / test",
"extended-tests-openjdk11 / test",
"extended-tests-openjdk21 / test",
"extended-tests-v8",
"extended-tests-jikesrvm",
"extended-tests-julia",
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/micro-bm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ jobs:
uses: qinsoon/comment-env-vars@1.1.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
# TODO: If we plan to resurrect micro-bm, we need to get the trunk name from a unique .yml
# file so that all GitHub Actions scripts agree upon which branch is the trunk (e.g.
# jdk-11, jdk-21, ...).
default_env: 'OPENJDK_BINDING_TRUNK_REF=master,MMTK_CORE_TRUNK_REF=master,OPENJDK_BINDING_BRANCH_REF=master,MMTK_CORE_BRANCH_REF=${{ github.event.pull_request.head.sha }}'
# Trunk
# - binding
Expand Down
14 changes: 11 additions & 3 deletions .github/workflows/minimal-tests-bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,18 @@ jobs:
with:
pull_request: ${{ needs.grace-period.outputs.pr-number }}

minimal-tests-openjdk:
minimal-tests-openjdk11:
needs: binding-refs
uses: ./.github/workflows/binding-tests-openjdk.yml
with:
repo: ${{ needs.binding-refs.outputs.openjdk_binding_repo }}
ref: ${{ needs.binding-refs.outputs.openjdk_binding_ref }}
repo: ${{ needs.binding-refs.outputs.openjdk11_binding_repo }}
ref: ${{ needs.binding-refs.outputs.openjdk11_binding_ref }}
test-script: ci-test-minimal.sh

minimal-tests-openjdk21:
needs: binding-refs
uses: ./.github/workflows/binding-tests-openjdk.yml
with:
repo: ${{ needs.binding-refs.outputs.openjdk21_binding_repo }}
ref: ${{ needs.binding-refs.outputs.openjdk21_binding_ref }}
test-script: ci-test-minimal.sh
14 changes: 9 additions & 5 deletions .github/workflows/perf-compare-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -177,13 +177,15 @@ jobs:
needs: [binding-refs, mmtk-refs]
timeout-minutes: 1440
steps:
# Trunk - we always use master from the mmtk org
# Trunk - we use the default repo and branch as specified in pr-binding-refs.
# TODO: We currently use OpenJDK 11 for performance comparison.
# We should switch to OpenJDK 21 when we are ready, and start a new epoch.
# - binding
- name: Checkout OpenJDK Binding Trunk
uses: actions/checkout@v4
with:
repository: mmtk/mmtk-openjdk
ref: master
repository: ${{ needs.binding-refs.outputs.openjdk11_binding_repo_default }}
ref: ${{ needs.binding-refs.outputs.openjdk11_binding_ref_default }}
path: mmtk-openjdk-trunk
- name: Checkout OpenJDK for Trunk
working-directory: mmtk-openjdk-trunk
Expand All @@ -200,8 +202,10 @@ jobs:
- name: Checkout OpenJDK Binding Branch
uses: actions/checkout@v4
with:
repository: ${{ needs.binding-refs.outputs.openjdk_binding_repo }}
ref: ${{ needs.binding-refs.outputs.openjdk_binding_ref }}
# TODO: We currently use OpenJDK 11 for performance comparison.
# We should switch to OpenJDK 21 when we are ready, and start a new epoch.
repository: ${{ needs.binding-refs.outputs.openjdk11_binding_repo }}
ref: ${{ needs.binding-refs.outputs.openjdk11_binding_ref }}
path: mmtk-openjdk-branch
- name: Checkout OpenJDK for Branch
working-directory: mmtk-openjdk-branch
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/perf-regression-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,9 @@ jobs:
uses: actions/checkout@v4
with:
repository: mmtk/mmtk-openjdk
# TODO: We currently use OpenJDK 11 for performance comparison.
# We should switch to OpenJDK 21 when we are ready, and start a new epoch.
ref: jdk-11
path: latest/mmtk-openjdk
- name: Checkout OpenJDK (latest)
working-directory: latest/mmtk-openjdk
Expand Down
93 changes: 70 additions & 23 deletions .github/workflows/pr-binding-refs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,16 @@
# to specify the binding pull requests. Note if any of the following values are omitted, the default values
# will be used (run with the master in mmtk's binding repos).
# Repo is in the format of user/repo. Ref could be sha or branch name.
#
# Note that OpenJDK 11 and OpenJDK 21 are considered two bindings, and their repo and ref names are
# specified separately. It is allowed to specify one or both of OpenJDK 11 and 21.
#
# ```
# binding-refs
# OPENJDK_BINDING_REPO=xx/xx
# OPENJDK_BINDING_REF=xxxxxx
# OPENJDK11_BINDING_REPO=xx/xx
# OPENJDK11_BINDING_REF=xxxxxx
# OPENJDK21_BINDING_REPO=xx/xx
# OPENJDK21_BINDING_REF=xxxxxx
# JIKESRVM_BINDING_REPO=xx/xx
# JIKESRVM_BINDING_REF=xxxxxx
# V8_BINDING_REPO=xx/xx
Expand All @@ -37,18 +43,31 @@ on:
type: string
required: true
outputs:
openjdk_binding_repo:
description: "The repository of OpenJDK binding, such as {user}/{repo}"
value: ${{ jobs.binding-refs.outputs.openjdk_binding_repo}}
openjdk_binding_repo_default:
description: "The default repository of OpenJDK binding, such as {user}/{repo}"
value: ${{ jobs.binding-refs.outputs.openjdk_binding_repo_default }}
openjdk_binding_ref:
description: "The git ref of OpenJDK binding, such as sha and branch name"
value: ${{ jobs.binding-refs.outputs.openjdk_binding_ref}}
openjdk_binding_ref_default:
description: "The default git ref of OpenJDK binding, such as sha and branch name"
value: ${{ jobs.binding-refs.outputs.openjdk_binding_ref_default }}
openjdk11_binding_repo:
description: "The repository of OpenJDK 11 binding, such as {user}/{repo}"
value: ${{ jobs.binding-refs.outputs.openjdk11_binding_repo}}
openjdk11_binding_repo_default:
description: "The default repository of OpenJDK 11 binding, such as {user}/{repo}"
value: ${{ jobs.binding-refs.outputs.openjdk11_binding_repo_default }}
openjdk11_binding_ref:
description: "The git ref of OpenJDK 11 binding, such as sha and branch name"
value: ${{ jobs.binding-refs.outputs.openjdk11_binding_ref}}
openjdk11_binding_ref_default:
description: "The default git ref of OpenJDK 11 binding, such as sha and branch name"
value: ${{ jobs.binding-refs.outputs.openjdk11_binding_ref_default }}

openjdk21_binding_repo:
description: "The repository of OpenJDK 21 binding, such as {user}/{repo}"
value: ${{ jobs.binding-refs.outputs.openjdk21_binding_repo}}
openjdk21_binding_repo_default:
description: "The default repository of OpenJDK 21 binding, such as {user}/{repo}"
value: ${{ jobs.binding-refs.outputs.openjdk21_binding_repo_default }}
openjdk21_binding_ref:
description: "The git ref of OpenJDK 21 binding, such as sha and branch name"
value: ${{ jobs.binding-refs.outputs.openjdk21_binding_ref}}
openjdk21_binding_ref_default:
description: "The default git ref of OpenJDK 21 binding, such as sha and branch name"
value: ${{ jobs.binding-refs.outputs.openjdk21_binding_ref_default }}

jikesrvm_binding_repo:
description: "The repository of JikesRVM binding, such as {user}/{repo}"
Expand Down Expand Up @@ -121,8 +140,10 @@ jobs:
binding-refs:
runs-on: ubuntu-latest
env:
OPENJDK_BINDING_REPO_DEFAULT: mmtk/mmtk-openjdk
OPENJDK_BINDING_REF_DEFAULT: master
OPENJDK11_BINDING_REPO_DEFAULT: mmtk/mmtk-openjdk
OPENJDK11_BINDING_REF_DEFAULT: jdk-11
OPENJDK21_BINDING_REPO_DEFAULT: mmtk/mmtk-openjdk
OPENJDK21_BINDING_REF_DEFAULT: jdk-21
JIKESRVM_BINDING_REPO_DEFAULT: mmtk/mmtk-jikesrvm
JIKESRVM_BINDING_REF_DEFAULT: master
V8_BINDING_REPO_DEFAULT: mmtk/mmtk-v8
Expand All @@ -134,10 +155,14 @@ jobs:
RUBY_BINDING_REPO_DEFAULT: mmtk/mmtk-ruby
RUBY_BINDING_REF_DEFAULT: master
outputs:
openjdk_binding_repo: ${{ steps.print.outputs.openjdk_binding_repo }}
openjdk_binding_repo_default: ${{ env.OPENJDK_BINDING_REPO_DEFAULT }}
openjdk_binding_ref: ${{ steps.print.outputs.openjdk_binding_ref }}
openjdk_binding_ref_default: ${{ env.OPENJDK_BINDING_REF_DEFAULT }}
openjdk11_binding_repo: ${{ steps.print.outputs.openjdk11_binding_repo }}
openjdk11_binding_repo_default: ${{ env.OPENJDK11_BINDING_REPO_DEFAULT }}
openjdk11_binding_ref: ${{ steps.print.outputs.openjdk11_binding_ref }}
openjdk11_binding_ref_default: ${{ env.OPENJDK11_BINDING_REF_DEFAULT }}
openjdk21_binding_repo: ${{ steps.print.outputs.openjdk21_binding_repo }}
openjdk21_binding_repo_default: ${{ env.OPENJDK21_BINDING_REPO_DEFAULT }}
openjdk21_binding_ref: ${{ steps.print.outputs.openjdk21_binding_ref }}
openjdk21_binding_ref_default: ${{ env.OPENJDK21_BINDING_REF_DEFAULT }}
jikesrvm_binding_repo: ${{ steps.print.outputs.jikesrvm_binding_repo }}
jikesrvm_binding_repo_default: ${{ env.JIKESRVM_BINDING_REPO_DEFAULT }}
jikesrvm_binding_ref: ${{ steps.print.outputs.jikesrvm_binding_ref }}
Expand All @@ -164,11 +189,33 @@ jobs:
with:
pull_request: ${{ inputs.pull_request }}
token: ${{ secrets.GITHUB_TOKEN }}
default_env: 'OPENJDK_BINDING_REPO=${{ env.OPENJDK_BINDING_REPO_DEFAULT }},OPENJDK_BINDING_REF=${{ env.OPENJDK_BINDING_REF_DEFAULT }},JIKESRVM_BINDING_REPO=${{ env.JIKESRVM_BINDING_REPO_DEFAULT }},JIKESRVM_BINDING_REF=${{ env.JIKESRVM_BINDING_REF_DEFAULT }},V8_BINDING_REPO=${{ env.V8_BINDING_REPO_DEFAULT }},V8_BINDING_REF=${{ env.V8_BINDING_REF_DEFAULT }},JULIA_BINDING_REPO=${{ env.JULIA_BINDING_REPO_DEFAULT }},JULIA_BINDING_REF=${{ env.JULIA_BINDING_REF_DEFAULT }},JULIA_VM_REPO=${{ env.JULIA_VM_REPO_DEFAULT }},JULIA_VM_REF=${{ env.JULIA_VM_REF_DEFAULT }},RUBY_BINDING_REPO=${{ env.RUBY_BINDING_REPO_DEFAULT }},RUBY_BINDING_REF=${{ env.RUBY_BINDING_REF_DEFAULT }}'
# Note: In the following lines, YAML makes one multi-line string literal from the
# indented lines after the '|' character, and then GitHub Actions replaces '${{ ... }}'
# with the expression values, and finally comment-env-vars parses the value of
# `default_env` (a multi-line string). comment-env-vars splits the string by /[\n\r,]/,
# and keeps only elements that contain non-blank sub-strings separated by '='. Both the
# LHS and RHS of '=' are trimmed.
default_env: |
OPENJDK11_BINDING_REPO=${{ env.OPENJDK11_BINDING_REPO_DEFAULT }}
OPENJDK11_BINDING_REF=${{ env.OPENJDK11_BINDING_REF_DEFAULT }}
OPENJDK21_BINDING_REPO=${{ env.OPENJDK21_BINDING_REPO_DEFAULT }}
OPENJDK21_BINDING_REF=${{ env.OPENJDK21_BINDING_REF_DEFAULT }}
JIKESRVM_BINDING_REPO=${{ env.JIKESRVM_BINDING_REPO_DEFAULT }}
JIKESRVM_BINDING_REF=${{ env.JIKESRVM_BINDING_REF_DEFAULT }}
V8_BINDING_REPO=${{ env.V8_BINDING_REPO_DEFAULT }}
V8_BINDING_REF=${{ env.V8_BINDING_REF_DEFAULT }}
JULIA_BINDING_REPO=${{ env.JULIA_BINDING_REPO_DEFAULT }}
JULIA_BINDING_REF=${{ env.JULIA_BINDING_REF_DEFAULT }}
JULIA_VM_REPO=${{ env.JULIA_VM_REPO_DEFAULT }}
JULIA_VM_REF=${{ env.JULIA_VM_REF_DEFAULT }}
RUBY_BINDING_REPO=${{ env.RUBY_BINDING_REPO_DEFAULT }}
RUBY_BINDING_REF=${{ env.RUBY_BINDING_REF_DEFAULT }}
- id: print
run: |
echo "openjdk_binding_repo=${{ env.OPENJDK_BINDING_REPO }}" >> $GITHUB_OUTPUT
echo "openjdk_binding_ref=${{ env.OPENJDK_BINDING_REF }}" >> $GITHUB_OUTPUT
echo "openjdk11_binding_repo=${{ env.OPENJDK11_BINDING_REPO }}" >> $GITHUB_OUTPUT
echo "openjdk11_binding_ref=${{ env.OPENJDK11_BINDING_REF }}" >> $GITHUB_OUTPUT
echo "openjdk21_binding_repo=${{ env.OPENJDK21_BINDING_REPO }}" >> $GITHUB_OUTPUT
echo "openjdk21_binding_ref=${{ env.OPENJDK21_BINDING_REF }}" >> $GITHUB_OUTPUT
echo "jikesrvm_binding_repo=${{ env.JIKESRVM_BINDING_REPO }}" >> $GITHUB_OUTPUT
echo "jikesrvm_binding_ref=${{ env.JIKESRVM_BINDING_REF }}" >> $GITHUB_OUTPUT
echo "v8_binding_repo=${{ env.V8_BINDING_REPO }}" >> $GITHUB_OUTPUT
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/stress-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@ jobs:
uses: actions/checkout@v4
with:
repository: mmtk/mmtk-openjdk
# TODO: If we plan to resurrect stress-ci, we need to get the trunk name from a unique .yml
# file so that all GitHub Actions scripts agree upon which branch is the trunk (e.g.
# jdk-11, jdk-21, ...).
token: ${{ secrets.CI_ACCESS_TOKEN }}
path: mmtk-openjdk
submodules: true
Expand Down
13 changes: 10 additions & 3 deletions docs/team/pull_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,18 @@ can be merged.
If an MMTk core PR should be tested with other bindings PRs, one can specify the binding branch that
should be tested with by adding a comment like below (see https://github.com/mmtk/mmtk-core/blob/master/.github/workflows/pr-binding-refs.yml).
If there are multiple comments that match, the first one is effective. If the info is missing for
a binding, the default repo (`mmtk/mmtk-X`) and branch (`master`) will be used instead.
a binding, the default repo (`mmtk/mmtk-X`) and branch (`master` for most bindings) will be used instead.

Note that OpenJDK 11 and OpenJDK 21 are considered two bindings. Their default repos are both
`mmtk/mmtk-openjdk`, but their default branches are `jdk-11` and `jdk-21`, respectively. We can
speficy the repo and branch of one of OpenJDK 11 and OpenJDK 21, or both.

```
binding-refs
OPENJDK_BINDING_REPO=xx/xx
OPENJDK_BINDING_REF=xxxxxx
OPENJDK11_BINDING_REPO=xx/xx
OPENJDK11_BINDING_REF=xxxxxx
OPENJDK21_BINDING_REPO=xx/xx
OPENJDK21_BINDING_REF=xxxxxx
JIKESRVM_BINDING_REPO=xx/xx
JIKESRVM_BINDING_REF=xxxxxx
V8_BINDING_REPO=xx/xx
Expand Down
Loading