From ff2435df7f9e835fa365714a91f1641279ce8a1b Mon Sep 17 00:00:00 2001 From: Rick Hennigan Date: Tue, 31 Dec 2024 09:34:38 -0500 Subject: [PATCH 01/11] Automatically increment paclet version when pushing changes to main --- .github/workflows/IncrementPacletVersion.yml | 51 +++++++++++++ Scripts/IncrementPacletVersion.wls | 76 ++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 .github/workflows/IncrementPacletVersion.yml create mode 100644 Scripts/IncrementPacletVersion.wls diff --git a/.github/workflows/IncrementPacletVersion.yml b/.github/workflows/IncrementPacletVersion.yml new file mode 100644 index 00000000..fb92427c --- /dev/null +++ b/.github/workflows/IncrementPacletVersion.yml @@ -0,0 +1,51 @@ +name: Increment Paclet Version + +on: + push: + branches: [feature/increment-paclet-version] # TODO: Change to main after testing + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +env: + WOLFRAMSCRIPT_ENTITLEMENTID: ${{ secrets.WOLFRAMSCRIPT_ENTITLEMENTID }} + WOLFRAM_SYSTEM_ID: Linux-x86-64 + +jobs: + IncrementVersion: + name: Increment Version + runs-on: ubuntu-latest + timeout-minutes: 15 + + container: + image: wolframresearch/wolframengine:14.1 + options: --user root + + steps: + - name: Update Git + run: | + apt-get update && apt-get install software-properties-common -y + add-apt-repository ppa:git-core/ppa -y + apt-get update && apt-get install git -y + + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure Git + run: | + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + + - name: Increment Version + run: wolframscript -f Scripts/IncrementPacletVersion.wls + + - name: Commit Changes + run: | + if [[ -n $(git status --porcelain) ]]; then + git add PacletInfo.wl + git commit -m "Automated: Increment paclet version" + git push + else + echo "No changes to commit" + fi \ No newline at end of file diff --git a/Scripts/IncrementPacletVersion.wls b/Scripts/IncrementPacletVersion.wls new file mode 100644 index 00000000..d191bd47 --- /dev/null +++ b/Scripts/IncrementPacletVersion.wls @@ -0,0 +1,76 @@ +#!/usr/bin/env wolframscript + +BeginPackage[ "Wolfram`ChatbookScripts`" ]; + +If[ ! TrueQ @ $loadedDefinitions, Get @ FileNameJoin @ { DirectoryName @ $InputFileName, "Common.wl" } ]; + +Needs[ "Wolfram`PacletCICD`" -> "cicd`" ]; + +(* ::**************************************************************************************************************:: *) +(* ::Section::Closed:: *) +(*Definitions*) + +(* ::**************************************************************************************************************:: *) +(* ::Subsection::Closed:: *) +(*incrementPacletVersion*) +(* :!CodeAnalysis::BeginBlock:: *) +(* :!CodeAnalysis::Disable::SuspiciousSessionSymbol:: *) +(* :!CodeAnalysis::Disable::LeakedVariable:: *) +incrementPacletVersion[ dir_ ] := Enclose[ + Catch @ Module[ + { cs, file, string, version, newVersion, new }, + + cs = ConfirmBy[ #1, StringQ, #2 ] &; + file = cs[ FileNameJoin @ { dir, "PacletInfo.wl" }, "PacletInfo" ]; + string = cs[ ReadString @ file, "ReadString" ]; + version = cs[ PacletObject[ Flatten @ File @ dir ][ "Version" ], "Version" ]; + + If[ StringEndsQ[ version, "." ~~ "0".. ~~ EndOfString ], + Print[ "Skipping paclet version update: ", version ]; + Throw @ version + ]; + + newVersion = cs[ + StringReplace[ + version, + "." ~~ v: DigitCharacter.. ~~ EndOfString :> "." <> ToString[ ToExpression @ v + 1 ] + ], + "NewVersion" + ]; + + ConfirmAssert[ PacletNewerQ[ newVersion, version ], "PacletNewerQ" ]; + + new = cs[ + StringReplace[ + string, + pre: ("\"Version\"" ~~ $$ws ~~ "->" ~~ $$ws) ~~ "\"" ~~ version ~~ "\"" :> + pre <> "\"" <> newVersion <> "\"" + ], + "UpdatedPacletInfo" + ]; + + Print[ "Incrementing version: ", version, " -> ", newVersion ]; + Confirm[ WithCleanup[ BinaryWrite[ file, new ], Close @ file ], "WritePacletInfo" ]; + + ConfirmMatch[ + PacletObject[ Flatten @ File @ dir ][ "Version" ], + newVersion, + "PacletObject" + ] + ], + Function[ + Print[ "::error::Failed to increment paclet version." ]; + Print[ " ", ToString[ #, InputForm ] ]; + If[ StringQ @ Environment[ "GITHUB_ACTION" ], Exit[ 1 ] ] + ] +]; +(* :!CodeAnalysis::EndBlock:: *) + +(* ::**************************************************************************************************************:: *) +(* ::Section::Closed:: *) +(*Run*) +result = cicd`ScriptConfirmBy[ incrementPacletVersion @ $pacletDir, StringQ ]; + +EndPackage[ ]; + +Wolfram`ChatbookScripts`result \ No newline at end of file From c9e5455a11f470a3f31adaeb984cd7edd1f83cc0 Mon Sep 17 00:00:00 2001 From: Rick Hennigan Date: Tue, 31 Dec 2024 09:53:36 -0500 Subject: [PATCH 02/11] Mark working directory as safe for Git --- .github/workflows/IncrementPacletVersion.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/IncrementPacletVersion.yml b/.github/workflows/IncrementPacletVersion.yml index fb92427c..faafa790 100644 --- a/.github/workflows/IncrementPacletVersion.yml +++ b/.github/workflows/IncrementPacletVersion.yml @@ -34,6 +34,7 @@ jobs: - name: Configure Git run: | + git config --global --add safe.directory $(pwd) git config --global user.name 'github-actions[bot]' git config --global user.email 'github-actions[bot]@users.noreply.github.com' From 2f4e85c655764914f376020fecf6e3d6bb2f3426 Mon Sep 17 00:00:00 2001 From: Rick Hennigan Date: Tue, 31 Dec 2024 09:57:30 -0500 Subject: [PATCH 03/11] Debugging --- .github/workflows/IncrementPacletVersion.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/IncrementPacletVersion.yml b/.github/workflows/IncrementPacletVersion.yml index faafa790..cb9ec830 100644 --- a/.github/workflows/IncrementPacletVersion.yml +++ b/.github/workflows/IncrementPacletVersion.yml @@ -43,6 +43,7 @@ jobs: - name: Commit Changes run: | + echo "Status: $(git status --porcelain)" if [[ -n $(git status --porcelain) ]]; then git add PacletInfo.wl git commit -m "Automated: Increment paclet version" From 77b070ff19460dd8279e568c1a733c2171de52fe Mon Sep 17 00:00:00 2001 From: Rick Hennigan Date: Tue, 31 Dec 2024 10:01:45 -0500 Subject: [PATCH 04/11] Use bash --- .github/workflows/IncrementPacletVersion.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/IncrementPacletVersion.yml b/.github/workflows/IncrementPacletVersion.yml index cb9ec830..822416b4 100644 --- a/.github/workflows/IncrementPacletVersion.yml +++ b/.github/workflows/IncrementPacletVersion.yml @@ -42,6 +42,7 @@ jobs: run: wolframscript -f Scripts/IncrementPacletVersion.wls - name: Commit Changes + shell: bash run: | echo "Status: $(git status --porcelain)" if [[ -n $(git status --porcelain) ]]; then From 45eeab7b484338e0b91763ee3464fa087c616861 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 31 Dec 2024 15:03:30 +0000 Subject: [PATCH 05/11] Automated: Increment paclet version --- PacletInfo.wl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PacletInfo.wl b/PacletInfo.wl index d0067bec..0acda2b4 100644 --- a/PacletInfo.wl +++ b/PacletInfo.wl @@ -1,17 +1,17 @@ PacletObject[ <| "Name" -> "Wolfram/Chatbook", "PublisherID" -> "Wolfram", - "Version" -> "2.0.9", + "Version" -> "2.0.10", "WolframVersion" -> "14.1+", "Description" -> "Wolfram Notebooks + LLMs", "License" -> "MIT", "Creator" -> "Connor Gray, Theodore Gray, Richard Hennigan, Kevin Daily", "Icon" -> "Assets/Images/PacletIcon.png", - "ReleaseID" -> "$RELEASE_ID$", - "ReleaseDate" -> "$RELEASE_DATE$", - "ReleaseURL" -> "$RELEASE_URL$", - "ActionURL" -> "$ACTION_URL$", - "CommitURL" -> "$COMMIT_URL$", + "ReleaseID" -> "77b070ff19460dd8279e568c1a733c2171de52fe", + "ReleaseDate" -> "2024-12-31T15:03:28Z", + "ReleaseURL" -> "https://github.com/WolframResearch/Chatbook/releases/tag/v2.0.9", + "ActionURL" -> "https://github.com/WolframResearch/Chatbook/actions/runs/12560994546", + "CommitURL" -> "https://github.com/WolframResearch/Chatbook/commit/77b070ff19460dd8279e568c1a733c2171de52fe", "Loading" -> "Startup", "PrimaryContext" -> "Wolfram`Chatbook`", "Extensions" -> { From 2a4ec0916798f99ca7e7fbfc77c9cc67a740c06d Mon Sep 17 00:00:00 2001 From: Rick Hennigan Date: Tue, 31 Dec 2024 10:09:19 -0500 Subject: [PATCH 06/11] Revert "Automated: Increment paclet version" This reverts commit 45eeab7b484338e0b91763ee3464fa087c616861. --- PacletInfo.wl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PacletInfo.wl b/PacletInfo.wl index 0acda2b4..d0067bec 100644 --- a/PacletInfo.wl +++ b/PacletInfo.wl @@ -1,17 +1,17 @@ PacletObject[ <| "Name" -> "Wolfram/Chatbook", "PublisherID" -> "Wolfram", - "Version" -> "2.0.10", + "Version" -> "2.0.9", "WolframVersion" -> "14.1+", "Description" -> "Wolfram Notebooks + LLMs", "License" -> "MIT", "Creator" -> "Connor Gray, Theodore Gray, Richard Hennigan, Kevin Daily", "Icon" -> "Assets/Images/PacletIcon.png", - "ReleaseID" -> "77b070ff19460dd8279e568c1a733c2171de52fe", - "ReleaseDate" -> "2024-12-31T15:03:28Z", - "ReleaseURL" -> "https://github.com/WolframResearch/Chatbook/releases/tag/v2.0.9", - "ActionURL" -> "https://github.com/WolframResearch/Chatbook/actions/runs/12560994546", - "CommitURL" -> "https://github.com/WolframResearch/Chatbook/commit/77b070ff19460dd8279e568c1a733c2171de52fe", + "ReleaseID" -> "$RELEASE_ID$", + "ReleaseDate" -> "$RELEASE_DATE$", + "ReleaseURL" -> "$RELEASE_URL$", + "ActionURL" -> "$ACTION_URL$", + "CommitURL" -> "$COMMIT_URL$", "Loading" -> "Startup", "PrimaryContext" -> "Wolfram`Chatbook`", "Extensions" -> { From 049d8527a1e2dcbb26d50d44a1e5a4b2fd2cdee6 Mon Sep 17 00:00:00 2001 From: Rick Hennigan Date: Tue, 31 Dec 2024 10:10:00 -0500 Subject: [PATCH 07/11] Don't set other paclet properties in the increment version action --- .github/workflows/IncrementPacletVersion.yml | 1 + Scripts/Common.wl | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/IncrementPacletVersion.yml b/.github/workflows/IncrementPacletVersion.yml index 822416b4..9192f688 100644 --- a/.github/workflows/IncrementPacletVersion.yml +++ b/.github/workflows/IncrementPacletVersion.yml @@ -11,6 +11,7 @@ concurrency: env: WOLFRAMSCRIPT_ENTITLEMENTID: ${{ secrets.WOLFRAMSCRIPT_ENTITLEMENTID }} WOLFRAM_SYSTEM_ID: Linux-x86-64 + UPDATE_PACLET_INFO: false jobs: IncrementVersion: diff --git a/Scripts/Common.wl b/Scripts/Common.wl index b79de8d3..25a7cbef 100644 --- a/Scripts/Common.wl +++ b/Scripts/Common.wl @@ -117,6 +117,7 @@ $envSHA = SelectFirst[ ]; $inCICD = StringQ @ $envSHA; +$updatePacletInfo = TrueQ[ $inCICD && ! MatchQ[ Environment[ "UPDATE_PACLET_INFO" ], "false"|"False"|"0" ] ]; (* ::**************************************************************************************************************:: *) (* ::Subsection::Closed:: *) @@ -173,7 +174,7 @@ actionURL[ ] := Enclose[ (*updatePacletInfo*) (* :!CodeAnalysis::BeginBlock:: *) (* :!CodeAnalysis::Disable::SuspiciousSessionSymbol:: *) -updatePacletInfo[ dir_ ] /; $inCICD := Enclose[ +updatePacletInfo[ dir_ ] /; $updatePacletInfo := Enclose[ Module[ { cs, file, string, id, date, url, run, cmt, oldID, new }, From 3cc5b0fcd5118b36484e9413f2ffb957e574f345 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 31 Dec 2024 15:11:45 +0000 Subject: [PATCH 08/11] Automated: Increment paclet version --- PacletInfo.wl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PacletInfo.wl b/PacletInfo.wl index d0067bec..20978e61 100644 --- a/PacletInfo.wl +++ b/PacletInfo.wl @@ -1,7 +1,7 @@ PacletObject[ <| "Name" -> "Wolfram/Chatbook", "PublisherID" -> "Wolfram", - "Version" -> "2.0.9", + "Version" -> "2.0.10", "WolframVersion" -> "14.1+", "Description" -> "Wolfram Notebooks + LLMs", "License" -> "MIT", From 857bf9fe16a6c1153e57a1071e74594918d91e25 Mon Sep 17 00:00:00 2001 From: Rick Hennigan Date: Tue, 31 Dec 2024 10:18:02 -0500 Subject: [PATCH 09/11] Update workflow trigger --- .github/workflows/IncrementPacletVersion.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/IncrementPacletVersion.yml b/.github/workflows/IncrementPacletVersion.yml index 9192f688..2f9acdcd 100644 --- a/.github/workflows/IncrementPacletVersion.yml +++ b/.github/workflows/IncrementPacletVersion.yml @@ -1,8 +1,9 @@ name: Increment Paclet Version on: + workflow_dispatch: push: - branches: [feature/increment-paclet-version] # TODO: Change to main after testing + branches: [main] concurrency: group: ${{ github.ref }} From bf5a45de879acd6b0074e8decfcac0d44e80399c Mon Sep 17 00:00:00 2001 From: Rick Hennigan Date: Tue, 31 Dec 2024 10:18:24 -0500 Subject: [PATCH 10/11] Revert "Automated: Increment paclet version" This reverts commit 3cc5b0fcd5118b36484e9413f2ffb957e574f345. --- PacletInfo.wl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PacletInfo.wl b/PacletInfo.wl index 20978e61..d0067bec 100644 --- a/PacletInfo.wl +++ b/PacletInfo.wl @@ -1,7 +1,7 @@ PacletObject[ <| "Name" -> "Wolfram/Chatbook", "PublisherID" -> "Wolfram", - "Version" -> "2.0.10", + "Version" -> "2.0.9", "WolframVersion" -> "14.1+", "Description" -> "Wolfram Notebooks + LLMs", "License" -> "MIT", From 67273d4d125b220448e532849f0723d53d2bf5f5 Mon Sep 17 00:00:00 2001 From: Rick Hennigan Date: Tue, 31 Dec 2024 10:32:26 -0500 Subject: [PATCH 11/11] Wait until paclet version is incremented before creating experimental release --- .github/workflows/ExperimentalRelease.yml | 24 ++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ExperimentalRelease.yml b/.github/workflows/ExperimentalRelease.yml index 554dcce6..ac142d1a 100644 --- a/.github/workflows/ExperimentalRelease.yml +++ b/.github/workflows/ExperimentalRelease.yml @@ -2,7 +2,10 @@ name: Experimental Release on: workflow_dispatch: - push: + workflow_run: + workflows: ["Increment Paclet Version"] + types: + - completed branches: [main] concurrency: @@ -46,13 +49,16 @@ jobs: run: | git config --global --add safe.directory $(pwd) - if gh release view experimental; then - gh release delete experimental --cleanup-tag --yes --repo="${{ env.GITHUB_REPOSITORY }}" + if ! gh release view experimental; then + gh release create experimental \ + --target="${{ github.ref }}" \ + --repo="${{ env.GITHUB_REPOSITORY }}" \ + --title="Experimental Release" \ + --notes="This is an experimental release that's always updated with the latest build from the main branch." \ + --prerelease fi - gh release create experimental "${{ env.PACLET_BUILD_DIR }}/Wolfram__Chatbook.paclet" \ - --target="${{ github.ref }}" \ - --repo="${{ env.GITHUB_REPOSITORY }}" \ - --title="Experimental Release" \ - --notes="This is an experimental release that's always updated with the latest build from the main branch." \ - --prerelease \ No newline at end of file + gh release upload experimental \ + "${{ env.PACLET_BUILD_DIR }}/Wolfram__Chatbook.paclet" \ + --clobber \ + --repo="${{ env.GITHUB_REPOSITORY }}" \ No newline at end of file