Skip to content

Commit d7caa2f

Browse files
Seed workflow files for Copybara automation
GitOrigin-RevId: 5a4ac9901379c67689acd455052289b01a7e164a Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 5454cfe commit d7caa2f

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Finalize Copybara Sync
2+
3+
on:
4+
push:
5+
branches:
6+
- 'copybara/v*'
7+
8+
concurrency:
9+
group: copybara-sync-${{ github.ref }}
10+
cancel-in-progress: true
11+
12+
jobs:
13+
finalize:
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: write
17+
pull-requests: write
18+
19+
steps:
20+
- name: Extract version from branch name
21+
id: version
22+
run: |
23+
VERSION=$(echo "$GITHUB_REF" | sed 's|refs/heads/copybara/||')
24+
echo "version=$VERSION" >> $GITHUB_OUTPUT
25+
26+
- uses: actions/checkout@v6
27+
with:
28+
ref: ${{ github.ref }}
29+
fetch-depth: 0
30+
31+
- name: Extract original commit author
32+
id: author
33+
run: |
34+
AUTHOR_EMAIL=$(git log -1 --format='%ae' --author='^(?!.*actions@github.com)' --perl-regexp 2>/dev/null || git log -1 --format='%ae')
35+
AUTHOR_NAME=$(git log -1 --format='%an' --author='^(?!.*actions@github.com)' --perl-regexp 2>/dev/null || git log -1 --format='%an')
36+
echo "email=$AUTHOR_EMAIL" >> $GITHUB_OUTPUT
37+
echo "name=$AUTHOR_NAME" >> $GITHUB_OUTPUT
38+
39+
if [[ "$AUTHOR_EMAIL" =~ ^([^@]+)@users\.noreply\.github\.com$ ]]; then
40+
GITHUB_USER=$(echo "${BASH_REMATCH[1]}" | sed 's/^[0-9]*+//')
41+
echo "github_user=$GITHUB_USER" >> $GITHUB_OUTPUT
42+
else
43+
echo "github_user=" >> $GITHUB_OUTPUT
44+
fi
45+
46+
- name: Create Pull Request
47+
env:
48+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
49+
VERSION: ${{ steps.version.outputs.version }}
50+
AUTHOR_NAME: ${{ steps.author.outputs.name }}
51+
AUTHOR_EMAIL: ${{ steps.author.outputs.email }}
52+
GITHUB_USER: ${{ steps.author.outputs.github_user }}
53+
run: |
54+
PR_BODY="## Copybara Sync - Release ${VERSION}
55+
56+
This PR was automatically created by Copybara, syncing changes from the [overmindtech/workspace](https://github.com/overmindtech/workspace) monorepo.
57+
58+
**Original author:** ${AUTHOR_NAME} (${AUTHOR_EMAIL})
59+
60+
### What happens when this PR is merged?
61+
62+
1. The \`tag-on-merge\` workflow will automatically create the \`${VERSION}\` tag on main
63+
2. Terraform Registry will detect the tag via webhook and publish the module
64+
65+
### Review Checklist
66+
67+
- [ ] Changes look correct and match the expected monorepo sync
68+
"
69+
70+
PR_URL=$(gh pr create \
71+
--base main \
72+
--head "${{ github.ref_name }}" \
73+
--title "Release ${VERSION}" \
74+
--body "$PR_BODY")
75+
76+
echo "Created PR: $PR_URL"
77+
78+
if [ -n "$GITHUB_USER" ]; then
79+
echo "Requesting review from original author: $GITHUB_USER"
80+
gh pr edit "$PR_URL" --add-reviewer "$GITHUB_USER" || true
81+
fi
82+
83+
echo "Requesting review from Engineering team"
84+
gh pr edit "$PR_URL" --add-reviewer "overmindtech/Engineering" || true

.github/workflows/tag-on-merge.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Tag Release on Merge
2+
3+
on:
4+
pull_request:
5+
types:
6+
- closed
7+
branches:
8+
- main
9+
10+
jobs:
11+
tag-release:
12+
if: github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'copybara/v')
13+
runs-on: ubuntu-latest
14+
permissions:
15+
contents: write
16+
17+
steps:
18+
- name: Extract version from branch name
19+
id: version
20+
run: |
21+
BRANCH="${{ github.event.pull_request.head.ref }}"
22+
VERSION=$(echo "$BRANCH" | sed 's|copybara/||')
23+
echo "version=$VERSION" >> $GITHUB_OUTPUT
24+
echo "Extracted version: $VERSION"
25+
26+
- uses: actions/checkout@v6
27+
with:
28+
ref: main
29+
fetch-depth: 0
30+
token: ${{ secrets.RELEASE_PAT }}
31+
32+
- name: Configure Git
33+
run: |
34+
git config user.name "GitHub Actions Bot"
35+
git config user.email "actions@github.com"
36+
37+
- name: Create and push tag
38+
env:
39+
VERSION: ${{ steps.version.outputs.version }}
40+
run: |
41+
echo "Creating tag: $VERSION"
42+
git tag "$VERSION"
43+
git push origin "$VERSION"
44+
echo "Successfully pushed tag $VERSION"
45+
46+
- name: Delete copybara branch
47+
env:
48+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
49+
run: |
50+
BRANCH="${{ github.event.pull_request.head.ref }}"
51+
echo "Deleting branch: $BRANCH"
52+
git push origin --delete "$BRANCH" || echo "Branch may have already been deleted"

0 commit comments

Comments
 (0)