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

[wip] testing subnet-evm sync workflow #636

Draft
wants to merge 24 commits into
base: master
Choose a base branch
from
Draft
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
49 changes: 47 additions & 2 deletions .github/workflows/sync-subnet-evm-branch.yml
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks dope. Once upon a time I tried to come up with a similar workflow but ended up needing a special token. I think this script won't require token since it creates the PR in the same repo (coreth). What I had been previously trying to accomplish was:

  • Once a PR is merged in Subnet-EVM master, create a subsequent PR in coreth by cherry-picking those commits. The workflow can poll from Coreth side or pushes from Subnet-EVM side (pushing requires a special token though).
  • I preferred to open PR for single commits to make it easier to review since the context and diffs would be fewer than doing moving diffs in bulk.
  • This requires PRs to be merged in squashed commits, otherwise ends up having too much sync PRs.

I'm not saying we should have these, just sharing my previous ideas.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
remoteBranch:
description: "Subnet EVM Branch"
required: true
default: "master"
default: "coreth-test-0"

jobs:
sync_branch:
Expand All @@ -17,4 +17,49 @@ jobs:
- uses: actions/setup-go@v5
with:
go-version: "~1.21.12"
check-latest: true
check-latest: true

- name: Add Remote
run: |
git remote add subnet-evm https://github.com/ava-labs/subnet-evm

# TODO: Replace test branch with actual (eg, coreth)
- name: Fetch Remote Branch (${{ github.event.inputs.remoteBranch }})
id: fetch_remote_branch
run: |
git fetch subnet-evm ${{ github.event.inputs.remoteBranch }}
git fetch subnet-evm coreth-diff-script
result=$(git rev-parse --short=8 subnet-evm/${{ github.event.inputs.remoteBranch }})
echo result="${result}" >> "${GITHUB_OUTPUT}"

# TODO: Remove this step when the script is checked in
- name: Checkout script
run: |
git checkout subnet-evm/coreth-diff-script -- ./scripts/apply_diff_and_rename.sh

- name: Apply diff
run: |
./scripts/apply_diff_and_rename.sh subnet-evm/${{ github.event.inputs.remoteBranch }}

# TODO: Should this step be removed?
- name: Restore .github/workflows
run: |
Comment on lines +44 to +47
Copy link
Collaborator

@ceyonur ceyonur Aug 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AFAIK it requires a special token if you want to modify a workflow with a workflow

git checkout -- .github/workflows

# TODO: Using a single branch to iterate for now (avoid maing noise in notifications)
- name: Create Pull Request
id: create_pr
uses: peter-evans/create-pull-request@v6
with:
commit-message: "Sync subnet-evm to ${{ steps.fetch_remote_branch.outputs.result }}"
branch: auto-sync-subnet-evm
title: "Sync Subnet EVM to ${{ steps.fetch_remote_branch.outputs.result }}"
body: |
This PR was created automatically by a GitHub Action.
draft: true

- name: PR Outputs
if: ${{ steps.create_pr.outputs.pull-request-number }}
run: |
echo "Pull Request Number - ${{ steps.create_pr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.create_pr.outputs.pull-request-url }}"
Loading