From d7ef7e4a1c242b0b5bc213efdb4763e0f9b9c42a Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 17:45:32 +0800 Subject: [PATCH 01/11] Add dummy workflow to test change --- .github/workflows/dummy.yml | 58 +++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/dummy.yml diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml new file mode 100644 index 0000000..f59c1cf --- /dev/null +++ b/.github/workflows/dummy.yml @@ -0,0 +1,58 @@ +name: Build and release Git-Mastery CLI + +on: + workflow_run: + workflows: + - Bump version tag on merge + types: + - completed + workflow_dispatch: + push: + tags: + - "v*.*.*" + +permissions: + contents: write + pull-requests: write + packages: read + issues: read + +jobs: + prepare: + uses: git-mastery/actions/.github/workflows/get-latest-tag.yml@main + + arch-build: + needs: prepare + if: needs.prepare.outputs.should_publish == 'true' + + runs-on: ubuntu-latest + + env: + ARCHITECTURE: amd64 + VERSION_NUMBER: ${{ needs.prepare.outputs.version_number }} + FILENAME: gitmastery-${{ needs.prepare.outputs.version_number }}-arch-amd64 + REF_NAME: ${{ needs.prepare.outputs.ref_name }} + + steps: + - name: Checkout source + uses: actions/checkout@v6 + + - name: Build binary + run: | + # Generate the .SRCINFO within a Docker container + # We attach the current directory (aur-pkg) as the pkg directory volume + echo "__version__ = \"$REF_NAME\"" > app/version.py + + docker run --rm \ + -v $PWD:/pkg \ + archlinux:base-devel \ + bash -c " + pacman -Sy --noconfirm python pyinstaller openssl git && + cd /app && + pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist + " + + # Fix file ownership after Docker run + sudo chown -R $(id -u):$(id -g) . + + tree From d79c2622c9e81a0b4c92a4082f585108101fe8c9 Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 17:46:32 +0800 Subject: [PATCH 02/11] Set job to run on PR --- .github/workflows/dummy.yml | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml index f59c1cf..6746f71 100644 --- a/.github/workflows/dummy.yml +++ b/.github/workflows/dummy.yml @@ -1,15 +1,9 @@ name: Build and release Git-Mastery CLI on: - workflow_run: - workflows: - - Bump version tag on merge - types: - - completed - workflow_dispatch: - push: - tags: - - "v*.*.*" + pull_request: + branches: + - main permissions: contents: write From 5397dc862195f323af51e66a4bdeb1f4bab2701b Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 17:47:04 +0800 Subject: [PATCH 03/11] Remove check --- .github/workflows/dummy.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml index 6746f71..fee035f 100644 --- a/.github/workflows/dummy.yml +++ b/.github/workflows/dummy.yml @@ -17,7 +17,6 @@ jobs: arch-build: needs: prepare - if: needs.prepare.outputs.should_publish == 'true' runs-on: ubuntu-latest From cdaefb035424400199f4be3ac723287326833f11 Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 17:48:17 +0800 Subject: [PATCH 04/11] Add pip install step --- .github/workflows/dummy.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml index fee035f..56d2c08 100644 --- a/.github/workflows/dummy.yml +++ b/.github/workflows/dummy.yml @@ -40,8 +40,9 @@ jobs: -v $PWD:/pkg \ archlinux:base-devel \ bash -c " - pacman -Sy --noconfirm python pyinstaller openssl git && + pacman -Sy --noconfirm python openssl git && cd /app && + pip install -r requirements.txt && pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist " From bdf79005d853b23c9c44c6c2ac990a53f0641f79 Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 17:49:07 +0800 Subject: [PATCH 05/11] Fix path --- .github/workflows/dummy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml index 56d2c08..77c30da 100644 --- a/.github/workflows/dummy.yml +++ b/.github/workflows/dummy.yml @@ -41,7 +41,7 @@ jobs: archlinux:base-devel \ bash -c " pacman -Sy --noconfirm python openssl git && - cd /app && + cd /pkg && pip install -r requirements.txt && pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist " From ce914a5c0152e0099736341ca86caf0e29bc190d Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 17:50:10 +0800 Subject: [PATCH 06/11] Fix installation --- .github/workflows/dummy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml index 77c30da..2c5285a 100644 --- a/.github/workflows/dummy.yml +++ b/.github/workflows/dummy.yml @@ -42,8 +42,8 @@ jobs: bash -c " pacman -Sy --noconfirm python openssl git && cd /pkg && - pip install -r requirements.txt && - pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist + python -m pip install -r requirements.txt && + python -m pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist " # Fix file ownership after Docker run From 5f10682912c802384699fc98077cddde7407646b Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 17:51:19 +0800 Subject: [PATCH 07/11] Install pip --- .github/workflows/dummy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml index 2c5285a..e2bd47f 100644 --- a/.github/workflows/dummy.yml +++ b/.github/workflows/dummy.yml @@ -40,10 +40,10 @@ jobs: -v $PWD:/pkg \ archlinux:base-devel \ bash -c " - pacman -Sy --noconfirm python openssl git && + pacman -Sy --noconfirm python python-pip openssl git && cd /pkg && - python -m pip install -r requirements.txt && - python -m pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist + pip install -r requirements.txt && + pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist " # Fix file ownership after Docker run From 90980541cbafe2d059876948c95d0e011e00abbc Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 17:53:38 +0800 Subject: [PATCH 08/11] Use pipx instead --- .github/workflows/dummy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml index e2bd47f..206d3c2 100644 --- a/.github/workflows/dummy.yml +++ b/.github/workflows/dummy.yml @@ -40,10 +40,10 @@ jobs: -v $PWD:/pkg \ archlinux:base-devel \ bash -c " - pacman -Sy --noconfirm python python-pip openssl git && + pacman -Sy --noconfirm python python-pipx openssl git && cd /pkg && - pip install -r requirements.txt && - pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist + pipx install -r requirements.txt && + pipx run pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist " # Fix file ownership after Docker run From 721c33a1cec5aac818367a6e03d0b70fd34f0356 Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 17:55:20 +0800 Subject: [PATCH 09/11] Setup venv directly --- .github/workflows/dummy.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml index 206d3c2..9ab3cf5 100644 --- a/.github/workflows/dummy.yml +++ b/.github/workflows/dummy.yml @@ -40,10 +40,12 @@ jobs: -v $PWD:/pkg \ archlinux:base-devel \ bash -c " - pacman -Sy --noconfirm python python-pipx openssl git && + pacman -Sy --noconfirm python python-pip openssl git && cd /pkg && - pipx install -r requirements.txt && - pipx run pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist + python -m venv venv && + source venv/bin/activate && + pip install -r requirements.txt && + pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist " # Fix file ownership after Docker run From 160f664c0952355d047bebf05222b22888e1e9df Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 18:00:02 +0800 Subject: [PATCH 10/11] Integrate into arch --- .github/workflows/publish.yml | 55 ++++++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index df2b549..d7d47a2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -208,10 +208,59 @@ jobs: version: ${{ needs.prepare.outputs.ref_name }} secrets: inherit + arch-build: + needs: prepare + if: needs.prepare.outputs.should_publish == 'true' + + runs-on: ubuntu-latest + + env: + ARCHITECTURE: amd64 + VERSION_NUMBER: ${{ needs.prepare.outputs.version_number }} + FILENAME: gitmastery-${{ needs.prepare.outputs.version_number }}-arch-amd64 + REF_NAME: ${{ needs.prepare.outputs.ref_name }} + + steps: + - name: Checkout source + uses: actions/checkout@v6 + + - name: Build binary + run: | + echo "__version__ = \"$REF_NAME\"" > app/version.py + + docker run --rm \ + -v $PWD:/pkg \ + archlinux:base-devel \ + bash -c " + pacman -Sy --noconfirm python python-pip openssl git && + cd /pkg && + python -m venv venv && + source venv/bin/activate && + pip install -r requirements.txt && + pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist + " + + # Fix file ownership after Docker run + sudo chown -R $(id -u):$(id -g) . + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + files: dist/${{ env.FILENAME }} + tag_name: ${{ env.REF_NAME }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Publish package as artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ env.FILENAME }} + path: dist/${{ env.FILENAME }} + arch-publish: # Since Arch linux currently only supports x86_64 out of the box, we will focus # on supporting that first - needs: [prepare, linux-build] + needs: [prepare, arch-build] if: needs.prepare.outputs.should_publish == 'true' runs-on: ubuntu-latest @@ -256,7 +305,7 @@ jobs: - name: Publish to AUR env: - RELEASE_AMD64_URL: https://github.com/git-mastery/app/releases/download/${{ github.ref_name }}/gitmastery-${{ env.VERSION }}-linux-amd64 + RELEASE_AMD64_URL: https://github.com/git-mastery/app/releases/download/${{ github.ref_name }}/gitmastery-${{ env.VERSION }}-arch-amd64 REF_NAME: ${{ needs.prepare.outputs.ref_name }} run: | cd aur-pkg @@ -304,8 +353,6 @@ jobs: # Fix file ownership after Docker run sudo chown -R $(id -u):$(id -g) . - tree - git add . git commit -m "Update package" git push From 66e29a240e8368e25f456d073fa59f5f663da862 Mon Sep 17 00:00:00 2001 From: "Jiahao, Woo" Date: Tue, 6 Jan 2026 18:00:51 +0800 Subject: [PATCH 11/11] Remove dummy workflow --- .github/workflows/dummy.yml | 54 ------------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 .github/workflows/dummy.yml diff --git a/.github/workflows/dummy.yml b/.github/workflows/dummy.yml deleted file mode 100644 index 9ab3cf5..0000000 --- a/.github/workflows/dummy.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Build and release Git-Mastery CLI - -on: - pull_request: - branches: - - main - -permissions: - contents: write - pull-requests: write - packages: read - issues: read - -jobs: - prepare: - uses: git-mastery/actions/.github/workflows/get-latest-tag.yml@main - - arch-build: - needs: prepare - - runs-on: ubuntu-latest - - env: - ARCHITECTURE: amd64 - VERSION_NUMBER: ${{ needs.prepare.outputs.version_number }} - FILENAME: gitmastery-${{ needs.prepare.outputs.version_number }}-arch-amd64 - REF_NAME: ${{ needs.prepare.outputs.ref_name }} - - steps: - - name: Checkout source - uses: actions/checkout@v6 - - - name: Build binary - run: | - # Generate the .SRCINFO within a Docker container - # We attach the current directory (aur-pkg) as the pkg directory volume - echo "__version__ = \"$REF_NAME\"" > app/version.py - - docker run --rm \ - -v $PWD:/pkg \ - archlinux:base-devel \ - bash -c " - pacman -Sy --noconfirm python python-pip openssl git && - cd /pkg && - python -m venv venv && - source venv/bin/activate && - pip install -r requirements.txt && - pyinstaller --onefile main.py --name $FILENAME --distpath /pkg/dist - " - - # Fix file ownership after Docker run - sudo chown -R $(id -u):$(id -g) . - - tree