diff --git a/.github/workflows/alpha.yml b/.github/workflows/alpha.yml index f72d2ac3..bea83761 100644 --- a/.github/workflows/alpha.yml +++ b/.github/workflows/alpha.yml @@ -13,7 +13,7 @@ jobs: build: runs-on: macos-26 env: - REF_NAME: alpha + REF_NAME: Alpha CHANNEL: alpha UPSTREAM_CHANNEL: 'nightly' @@ -31,7 +31,7 @@ jobs: - uses: actions/checkout@v4 with: repository: 'SideStore/beta-build-num' - ref: ${{ env.REF_NAME }} + ref: ${{ env.CHANNEL }} token: ${{ secrets.CROSS_REPO_PUSH_KEY }} path: 'Dependencies/beta-build-num' fetch-depth: 1 @@ -45,7 +45,7 @@ jobs: QUALIFIED_VERSION=$(python3 scripts/ci/workflow.py compute-qualified \ "$MARKETING_VERSION" \ "$BUILD_NUM" \ - "${{ env.REF_NAME }}" \ + "${{ env.CHANNEL }}" \ "$SHORT_COMMIT") echo "BUILD_NUM=$BUILD_NUM" | tee -a $GITHUB_ENV @@ -186,7 +186,7 @@ jobs: python3 scripts/ci/workflow.py deploy \ SideStore/apps-v2.json \ "$SOURCE_JSON" \ - "$REF_NAME" \ + "$CHANNEL" \ "$SHORT_COMMIT" \ "$MARKETING_VERSION" \ "$VERSION" \ @@ -195,11 +195,12 @@ jobs: "$IPA_NAME" \ "$LAST_SUCCESSFUL_COMMIT" - RELEASE_NOTES=$(python3 scripts/ci/workflow.py retrieve-release-notes "$REF_NAME") + RELEASE_NOTES=$(python3 scripts/ci/workflow.py retrieve-release-notes "$CHANNEL") python3 scripts/ci/workflow.py upload-release \ + "$RELEASE_NAME" \ + "$CHANNEL" \ "$VERSION" \ - "$REF_NAME" \ "$GITHUB_SHA" \ "$GITHUB_REPOSITORY" \ "$UPSTREAM_CHANNEL" \ No newline at end of file diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index fc237fa6..41e0764a 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -15,7 +15,7 @@ jobs: build: runs-on: macos-26 env: - REF_NAME: nightly + RELEASE_NAME: Nightly CHANNEL: nightly UPSTREAM_CHANNEL: '' @@ -33,7 +33,7 @@ jobs: - uses: actions/checkout@v4 with: repository: 'SideStore/beta-build-num' - ref: ${{ env.REF_NAME }} + ref: ${{ env.CHANNEL }} token: ${{ secrets.CROSS_REPO_PUSH_KEY }} path: 'Dependencies/beta-build-num' fetch-depth: 1 @@ -47,7 +47,7 @@ jobs: QUALIFIED_VERSION=$(python3 scripts/ci/workflow.py compute-qualified \ "$MARKETING_VERSION" \ "$BUILD_NUM" \ - "${{ env.REF_NAME }}" \ + "${{ env.CHANNEL }}" \ "$SHORT_COMMIT") echo "BUILD_NUM=$BUILD_NUM" | tee -a $GITHUB_ENV @@ -188,7 +188,7 @@ jobs: python3 scripts/ci/workflow.py deploy \ SideStore/apps-v2.json \ "$SOURCE_JSON" \ - "$REF_NAME" \ + "$CHANNEL" \ "$SHORT_COMMIT" \ "$MARKETING_VERSION" \ "$VERSION" \ @@ -197,11 +197,12 @@ jobs: "$IPA_NAME" \ "$LAST_SUCCESSFUL_COMMIT" - RELEASE_NOTES=$(python3 scripts/ci/workflow.py retrieve-release-notes "$REF_NAME") + RELEASE_NOTES=$(python3 scripts/ci/workflow.py retrieve-release-notes "$CHANNEL") python3 scripts/ci/workflow.py upload-release \ + "$RELEASE_NAME" \ + "$CHANNEL" \ "$VERSION" \ - "$REF_NAME" \ "$GITHUB_SHA" \ "$GITHUB_REPOSITORY" \ "$UPSTREAM_CHANNEL" \ No newline at end of file diff --git a/scripts/ci/workflow.py b/scripts/ci/workflow.py index f1203eb3..377a33c5 100644 --- a/scripts/ci/workflow.py +++ b/scripts/ci/workflow.py @@ -6,7 +6,7 @@ import datetime from pathlib import Path import time import json -import textwrap +import inspect # REPO ROOT relative to script dir @@ -365,14 +365,11 @@ def last_successful_commit(workflow, branch): return None -def upload_release(release_name, release_tag, commit_sha, repo, upstream_recommendation): +def upload_release(release_name, release_tag, version, commit_sha, repo, upstream_recommendation): token = getenv("GH_TOKEN") if token: os.environ["GH_TOKEN"] = token - # -------------------------------------------------- - # load source metadata - # -------------------------------------------------- metadata_path = ROOT / "source-metadata.json" if not metadata_path.exists(): @@ -381,44 +378,40 @@ def upload_release(release_name, release_tag, commit_sha, repo, upstream_recomme meta = json.loads(metadata_path.read_text()) is_beta = bool(meta.get("is_beta")) - version = meta.get("version_ipa") - built_date_alt = meta.get("version_date") + build_datetime = meta.get("version_date") dt = datetime.datetime.fromisoformat( - built_date_alt.replace("Z", "+00:00") + build_datetime.replace("Z", "+00:00") ) - built_date = dt.strftime("%c") + built_time = dt.strftime("%a %b %d %H:%M:%S %Y") + built_date = dt.strftime("%Y-%m-%d") - # -------------------------------------------------- - # retrieve release notes inline - # -------------------------------------------------- release_notes = runAndGet( f"python3 {SCRIPTS}/generate_release_notes.py " f"--retrieve {release_tag} " f"--output-dir {ROOT}" ) - # -------------------------------------------------- - # optional upstream block - # -------------------------------------------------- upstream_block = "" if upstream_recommendation and upstream_recommendation.strip(): upstream_block = upstream_recommendation.strip() + "\n\n" - body = textwrap.dedent(f"""\ + raw_body = f""" This is an ⚠️ **EXPERIMENTAL** ⚠️ {release_name} build for commit [{commit_sha}](https://github.com/{repo}/commit/{commit_sha}). {release_name} builds are **extremely experimental builds only meant to be used by developers and beta testers. They often contain bugs and experimental features. Use at your own risk!** {upstream_block}## Build Info - Built at (UTC): `{built_date}` - Built at (UTC date): `{built_date_alt}` + Built at (UTC): `{built_time}` + Built at (UTC date): `{built_date}` Commit SHA: `{commit_sha}` Version: `{version}` {release_notes} - """) + """ + + body = inspect.cleandoc(raw_body) + "\n" body_file = ROOT / "release_body.md" body_file.write_text(body, encoding="utf-8") @@ -493,7 +486,7 @@ COMMANDS = { "retrieve-release-notes" : (retrieve_release_notes, 1, ""), "deploy" : (deploy, 10, " [last_successful_commit]"), - "upload-release" : (upload_release, 5, " "), + "upload-release" : (upload_release, 6, " "), } def main():