Skip to content

feat(git): add branch rename and delete from picker #34

feat(git): add branch rename and delete from picker

feat(git): add branch rename and delete from picker #34

Workflow file for this run

name: Build & Release NotepadAI
on:
workflow_dispatch:
push:
branches:
- master
concurrency:
group: release
cancel-in-progress: false
env:
QT_VERSION: "6.10"
jobs:
version:
name: Determine Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.bump.outputs.version }}
tag: ${{ steps.bump.outputs.tag }}
steps:
- name: Checkout Repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Bump patch version
id: bump
run: |
# Find latest v0.0.* tag
LATEST=$(git tag -l 'v0.0.*' --sort=-v:refname | head -1)
if [ -z "$LATEST" ]; then
# No v0.0.x tags exist yet — start from v0.0.1
NEW_PATCH=1
else
PATCH="${LATEST##*.}"
NEW_PATCH=$((PATCH + 1))
fi
VERSION="0.0.${NEW_PATCH}"
TAG="v${VERSION}"
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
echo "Next version: ${TAG}"
build:
needs: [version]
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, windows-2022, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Repository
uses: actions/checkout@v6
- name: Set VERSION in CMakeLists.txt
shell: bash
run: |
VER="${{ needs.version.outputs.version }}"
if [[ "$OSTYPE" == darwin* ]]; then
sed -i '' 's/^\([[:space:]]*VERSION[[:space:]]*\).*/\1'"$VER"'/' CMakeLists.txt
else
sed -i 's/^\([[:space:]]*VERSION[[:space:]]*\).*/\1'"$VER"'/' CMakeLists.txt
fi
grep -n '^[[:space:]]*VERSION' CMakeLists.txt
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: ${{ env.QT_VERSION }}
modules: 'qt5compat'
cache: true
- name: Setup Visual Studio Tools
if: runner.os == 'Windows'
uses: egor-tensin/vs-shell@v2
with:
arch: x64
- name: Install NSIS
if: runner.os == 'Windows'
uses: repolevedavaj/install-nsis@v1.2.0
with:
nsis-version: '3.11'
- name: Install WebView2 SDK
if: runner.os == 'Windows'
shell: bash
run: |
curl -sL -o webview2.nupkg "https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/1.0.3967.48"
unzip -q -o webview2.nupkg -d webview2-sdk
cp webview2-sdk/build/native/include/WebView2.h thirdparty/webview2/include/WebView2.h
cp webview2-sdk/build/native/include/WebView2EnvironmentOptions.h thirdparty/webview2/include/WebView2EnvironmentOptions.h
cp webview2-sdk/runtimes/win-x64/native/WebView2Loader.dll deploy/windows/WebView2Loader.dll
- name: Setup Linux
if: runner.os == 'Linux'
run: |
echo "DISTRIBUTION=AppImage" >> "$GITHUB_ENV"
echo "EXTRA_PLATFORM_PLUGINS=libqwayland-generic.so" >> "$GITHUB_ENV"
sudo apt-get install libxkbcommon-dev libxkbcommon-x11-0 fuse libxcb-cursor-dev libcups2-dev
- name: Configure
run: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DAPP_DISTRIBUTION=${{ env.DISTRIBUTION }}
- name: Build
run: cmake --build build --parallel
- name: Build Windows Targets
if: runner.os == 'Windows'
run: cmake --build build --target package zip installer --parallel
- name: Build MacOS Targets
if: runner.os == 'macOS'
run: cmake --build build --target dmg --parallel
- name: Build Linux Targets
if: runner.os == 'Linux'
run: cmake --build build --target appimage --parallel
- name: Upload Windows zip Package
uses: actions/upload-artifact@v6
if: runner.os == 'Windows'
with:
name: NotepadAI-Windows-Zip
path: ${{ github.workspace }}/build/package/
- name: Upload Windows Installer
uses: actions/upload-artifact@v6
if: runner.os == 'Windows'
with:
name: NotepadAI-Windows-Installer
path: ${{ github.workspace }}/installer/NotepadAI*.exe
- name: Upload MacOS dmg
uses: actions/upload-artifact@v6
if: runner.os == 'macOS'
with:
name: NotepadAI-macOS
path: ${{ github.workspace }}/build/NotepadAI*.dmg
- name: Upload Linux AppImage
uses: actions/upload-artifact@v6
if: runner.os == 'Linux'
with:
name: NotepadAI-Linux-AppImage
path: ${{ github.workspace }}/build/NotepadAI*.AppImage
release:
name: Publish GitHub Release
runs-on: ubuntu-latest
needs: [version, build]
permissions:
contents: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout Repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Create and push tag
run: |
git config user.email "action@github.com"
git config user.name "GitHub Action"
git tag ${{ needs.version.outputs.tag }}
git push origin ${{ needs.version.outputs.tag }}
- name: Create Release
run: |
gh release create ${{ needs.version.outputs.tag }} \
--title "${{ needs.version.outputs.tag }}" \
--generate-notes
- name: Download all artifacts
uses: actions/download-artifact@v7
- name: Upload Windows Installer
run: |
mv NotepadAI-Windows-Installer/NotepadAI*.exe "NotepadAI-${{ needs.version.outputs.tag }}-Installer.exe"
gh release upload ${{ needs.version.outputs.tag }} "NotepadAI-${{ needs.version.outputs.tag }}-Installer.exe"
- name: Upload Windows Zip
run: |
cd NotepadAI-Windows-Zip/
zip -r "../NotepadAI-${{ needs.version.outputs.tag }}-win64.zip" .
cd ..
gh release upload ${{ needs.version.outputs.tag }} "NotepadAI-${{ needs.version.outputs.tag }}-win64.zip"
- name: Upload Linux AppImage
run: |
mv NotepadAI-Linux-AppImage/NotepadAI*.AppImage "NotepadAI-${{ needs.version.outputs.tag }}-x86_64.AppImage"
gh release upload ${{ needs.version.outputs.tag }} "NotepadAI-${{ needs.version.outputs.tag }}-x86_64.AppImage"
- name: Upload macOS dmg
run: |
mv NotepadAI-macOS/NotepadAI*.dmg "NotepadAI-${{ needs.version.outputs.tag }}.dmg"
gh release upload ${{ needs.version.outputs.tag }} "NotepadAI-${{ needs.version.outputs.tag }}.dmg"