From 570ff2d4f6aba9e0e2995d0b7a89ca31ce382c93 Mon Sep 17 00:00:00 2001 From: Jeffrey Picard Date: Wed, 14 Jul 2021 20:11:57 -0400 Subject: [PATCH] actions --- action.yml | 37 +++++++++++++++++++++++++++++++------ scripts/version.py | 44 ++++++++++++++++++++++++++++++-------------- 2 files changed, 61 insertions(+), 20 deletions(-) diff --git a/action.yml b/action.yml index d3d23f6..8f8e8b4 100644 --- a/action.yml +++ b/action.yml @@ -1,6 +1,31 @@ -# action.yml -name: 'Hub' -description: 'Run go hub' -runs: - using: 'docker' - image: 'dev.dockerfile' \ No newline at end of file +# action.yml +name: 'Hub' +description: 'go hub' + +on: + push: + jobs: + build: + runs-on: golang:1.16.6-alpine3.14 + steps: + - run: go build . + - run: ./protobuf/build.sh + + pull_request: + jobs: + draft-release: + runs-on: golang:1.16.6-alpine3.14 + using: python:3.8.11-alpine3.14 + steps: + - run: python3 scripts/version.py current --commit # creates a draft release + + push: + branches: + - master + jobs: + full-release: + runs-on: golang:1.16.6-alpine3.14 + using: python:3.8.11-alpine3.14 + steps: + - run: python3 scripts/version.py current --commit --commit ---commit + diff --git a/scripts/version.py b/scripts/version.py index 9911adf..27ea239 100644 --- a/scripts/version.py +++ b/scripts/version.py @@ -135,6 +135,16 @@ class Version: return ''.join(str(p) for p in arr) +def get_draft_prerelease_vars(args) -> (bool, bool): + draft = True + prerelease = False + if args.confirm > 2: + draft = False + elif args.comfirm == 2: + draft = False + prerelease = True + return draft, prerelease + def release(args): gh = get_github() repo = gh.repository('lbryio', 'hub') @@ -147,7 +157,7 @@ def release(args): version_file = repo.create_file("version.txt", message="add version file", content=str(current_version).encode('utf-8')) - if not args.confirm: + if args.confirm <= 0: print("\nDRY RUN ONLY. RUN WITH --confirm TO DO A REAL RELEASE.\n") @@ -224,13 +234,15 @@ def release(args): for skipped in fixups: print(skipped) - if args.confirm: + draft, prerelease = get_draft_prerelease_vars(args) + if args.confirm > 0: commit = version_file.update( new_version.tag, version_file.decoded.decode('utf-8').replace(str(current_version), str(new_version)).encode() )['commit'] + release = None if args.action != "current": repo.create_tag( tag=new_version.tag, @@ -240,18 +252,22 @@ def release(args): tagger=commit.committer ) - repo.create_release( + release = repo.create_release( new_version.tag, name=new_version.tag, body=body.getvalue(), - draft=True, + draft=draft, + prerelease=prerelease ) + + build_upload_binary(release) elif args.action == "current": try: print(new_version.tag) # if we have the tag and release already don't do anything release = repo.release_from_tag(new_version.tag) if release.prerelease: + build_upload_binary(release) release.edit(prerelease=False) else: build_upload_binary(release) @@ -263,12 +279,8 @@ def release(args): release = repo.releases().next() # Case me have a release and no tag if release.name == new_version.tag: - if release.draft: - release.edit(draft=False, prerelease=True) - elif release.prerelease: - release.edit(prerelease=False) - else: - build_upload_binary(release) + release.edit(prerelease=prerelease, draft=draft) + build_upload_binary(release) return else: raise Exception("asdf") @@ -280,12 +292,17 @@ def release(args): obj_type='commit', tagger=commit.committer ) - repo.create_release( + + release = repo.create_release( new_version.tag, name=new_version.tag, body=body.getvalue(), - draft=True, + draft=draft, + prerelease=prerelease ) + finally: + if release: + build_upload_binary(release) class TestReleaseTool(unittest.TestCase): @@ -308,7 +325,7 @@ def test(): def main(): parser = argparse.ArgumentParser() - parser.add_argument("--confirm", default=False, action="store_true", + parser.add_argument("--confirm", default=0, action="count", help="without this flag, it will only print what it will do but will not actually do it") parser.add_argument("--start-tag", help="custom starting tag for changelog generation") parser.add_argument("action", choices=['test', 'current', 'major', 'minor', 'micro']) @@ -322,6 +339,5 @@ def main(): print() return code - if __name__ == "__main__": sys.exit(main())