Skip to content

Commit

Permalink
use a branch instead of a tag
Browse files Browse the repository at this point in the history
  • Loading branch information
driazati committed Feb 2, 2022
1 parent 4f0f497 commit be269e1
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,27 +19,27 @@
# We use it to cover windows and mac builds
# Jenkins is still the primary CI

name: Update last-successful tag
name: Update last-successful branch

on:
workflow_dispatch:
schedule:
cron: 15/* * * * *

concurrency:
group: update-last-successful-tag
group: update-last-successful-branch
cancel-in-progress: true

jobs:
update-last-successful-tag:
update-last-successful-branch:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: "recursive"
- name: Update last-successful tag
- name: Update last-successful branch
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -eux
python tests/scripts/update_tag.py || echo step failed
python tests/scripts/update_branch.py || echo step failed
4 changes: 2 additions & 2 deletions tests/python/unittest/test_ci.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ def run(pr_body, expected_reviewers):
)


def test_update_tag(tmpdir_factory):
update_script = REPO_ROOT / "tests" / "scripts" / "update_tag.py"
def test_update_branch(tmpdir_factory):
update_script = REPO_ROOT / "tests" / "scripts" / "update_branch.py"

def run(statuses, expected_rc, expected_output):
git = TempGit(tmpdir_factory.mktemp("tmp_git_dir"))
Expand Down
23 changes: 10 additions & 13 deletions tests/scripts/update_tag.py → tests/scripts/update_branch.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,29 +117,26 @@ def commit_passed_ci(commit: Dict[str, Any]) -> bool:
return passed_ci


def update_tag(user: str, repo: str, sha: str, tag_name: str, message: str) -> None:
def update_branch(user: str, repo: str, sha: str, branch_name: str, message: str) -> None:
with tempfile.TemporaryDirectory() as f:
# Clone only a specific commit: https://stackoverflow.com/a/3489576
git(["init"], cwd=f)
git(["remote", "add", "origin", f"git@github.com:{user}/{repo}.git"], cwd=f)
git(["fetch", "origin", sha], cwd=f)
git(["reset", "--hard", "FETCH_HEAD"], cwd=f)
git(["checkout", "-b", branch_name], cwd=f)

# Create a push the tag
git(["tag", "--annotate", tag_name, f"--message={message}"], cwd=f)
git(["push", "origin", "--force", tag_name], cwd=f)
print(f"Pushed tag {tag_name} with commit {sha}")
# Create and push the branch
git(["push", "origin", "--force", branch_name], cwd=f)
print(f"Pushed branch {branch_name} with commit {sha}")


if __name__ == "__main__":
help = "Push the a tag to the last commit that passed all CI runs"
help = "Push the a branch to the last commit that passed all CI runs"
parser = argparse.ArgumentParser(description=help)
parser.add_argument("--remote", default="origin", help="ssh remote to parse")
parser.add_argument("--dry-run", action="store_true", help="don't submit to GitHub")
parser.add_argument("--tag", default="last-successful", help="tag name")
parser.add_argument(
"--message", default="last 'main' commit that passed CI", help="label to add"
)
parser.add_argument("--branch", default="last-successful", help="branch name")
parser.add_argument(
"--testonly-json", help="(testing) data to use instead of fetching from GitHub"
)
Expand Down Expand Up @@ -167,14 +164,14 @@ def update_tag(user: str, repo: str, sha: str, tag_name: str, message: str) -> N
if commit_passed_ci(commit):
print(f"Found last good commit: {commit['oid']}: {commit['messageHeadline']}")
if not args.dry_run:
update_tag(
update_branch(
user=user,
repo=repo,
sha=commit["oid"],
tag_name=args.tag,
branch_name=args.branch,
message=args.message,
)
# Nothing to do after updating the tag, exit early
# Nothing to do after updating the branch, exit early
exit(0)

# No good commit found, proceed to next page of results
Expand Down

0 comments on commit be269e1

Please sign in to comment.