diff --git a/.github/download_release.sh b/.github/download_release.sh deleted file mode 100644 index 5180745..0000000 --- a/.github/download_release.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -HOST=https://code.gri.mw -REPO_NAME=$1 -TAG=$2 -DOWNLOAD_URL=${HOST}/${REPO_NAME}/releases/download/${TAG} - -FILES=( "grim-${TAG}-android.apk" "grim-${TAG}-android-x86_64.apk" "grim-${TAG}-linux-arm.AppImage" "grim-${TAG}-linux-x86_64.AppImage" "grim-${TAG}-macos-universal.zip" "grim-${TAG}-win-x86_64.msi" "grim-${TAG}-win-x86_64.zip" ) - -# Download release files -for f in "${FILES[@]}"; do - wget -q ${DOWNLOAD_URL}/${f} - echo Downloading ${f}... - while [ ! -f ${f} ]; do - sleep 5 - echo Retry ${f}... - wget -q ${DOWNLOAD_URL}/${f} - done -done - -# Save release notes -INFO_URL=${HOST}/api/v1/repos/${REPO_NAME}/releases/tags/${TAG} -curl -s "${INFO_URL}" | jq -r '.body' > release_notes.txt \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b5aa95c..4f78288 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,31 +1,92 @@ +# Release builds on native runners — one per platform, no cross-compilation +# (nokhwa's camera backends want each platform's own SDK; see NEXT-STEPS judgment). +# +# Manually triggered (Actions → Release → Run workflow) against an existing tag +# until a run has been validated end-to-end; then this can move to a tag trigger. +# Android is built locally via scripts/android.sh for now — the gradle `ci` +# flavor expects maven credentials this repository does not carry. name: Release on: - push: - tags: - - "v*.*.*" + workflow_dispatch: + inputs: + tag: + description: "Existing release tag to build and upload artifacts to (e.g. build27)" + required: true + +permissions: + contents: write + +env: + TAG: ${{ inputs.tag }} jobs: - create_release: - name: Create Release + linux: + name: Linux x86_64 runs-on: ubuntu-latest - permissions: - contents: write steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Download release - run: chmod +x .github/download_release.sh && .github/download_release.sh GUI/grim ${{ github.ref_name }} - - name: Release - uses: softprops/action-gh-release@v2 + - uses: actions/checkout@v6 with: - body_path: release_notes.txt - overwrite_files: true + ref: ${{ inputs.tag }} + submodules: recursive + - name: Build + run: cargo build --release + - name: Package + run: | + tar -C target/release -czf "goblin-$TAG-linux-x86_64.tar.gz" goblin + sha256sum "goblin-$TAG-linux-x86_64.tar.gz" > "goblin-$TAG-linux-x86_64-sha256sum.txt" + - uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ inputs.tag }} files: | - grim-${{ github.ref_name }}-android.apk - grim-${{ github.ref_name }}-android-x86_64.apk - grim-${{ github.ref_name }}-linux-arm.AppImage - grim-${{ github.ref_name }}-linux-x86_64.AppImage - grim-${{ github.ref_name }}-macos-universal.zip - grim-${{ github.ref_name }}-win-x86_64.msi - grim-${{ github.ref_name }}-win-x86_64.zip \ No newline at end of file + goblin-${{ inputs.tag }}-linux-x86_64.tar.gz + goblin-${{ inputs.tag }}-linux-x86_64-sha256sum.txt + + windows: + name: Windows x86_64 (MSVC) + runs-on: windows-latest + steps: + - uses: actions/checkout@v6 + with: + ref: ${{ inputs.tag }} + submodules: recursive + - name: Build + run: cargo build --release + - name: Package + shell: bash + run: | + 7z a "goblin-$TAG-win-x86_64.zip" ./target/release/goblin.exe + sha256sum "goblin-$TAG-win-x86_64.zip" > "goblin-$TAG-win-x86_64-sha256sum.txt" + - uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ inputs.tag }} + files: | + goblin-${{ inputs.tag }}-win-x86_64.zip + goblin-${{ inputs.tag }}-win-x86_64-sha256sum.txt + + macos: + name: macOS universal + runs-on: macos-latest + steps: + - uses: actions/checkout@v6 + with: + ref: ${{ inputs.tag }} + submodules: recursive + - name: Build both architectures + run: | + rustup target add aarch64-apple-darwin x86_64-apple-darwin + cargo build --release --target aarch64-apple-darwin + cargo build --release --target x86_64-apple-darwin + - name: Universal binary + package + run: | + lipo -create -output goblin \ + target/aarch64-apple-darwin/release/goblin \ + target/x86_64-apple-darwin/release/goblin + zip "goblin-$TAG-macos-universal.zip" goblin + shasum -a 256 "goblin-$TAG-macos-universal.zip" > "goblin-$TAG-macos-universal-sha256sum.txt" + - uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ inputs.tag }} + files: | + goblin-${{ inputs.tag }}-macos-universal.zip + goblin-${{ inputs.tag }}-macos-universal-sha256sum.txt diff --git a/.github/workflows/release.yml.bak b/.github/workflows/release.yml.bak deleted file mode 100644 index 5389e78..0000000 --- a/.github/workflows/release.yml.bak +++ /dev/null @@ -1,170 +0,0 @@ -name: Release - -on: - push: - tags: - - "v*.*.*" - -jobs: - linux_release: - name: Linux Release - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Download appimagetools - run: | - wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage - chmod +x appimagetool-x86_64.AppImage - sudo apt install libfuse2 - - name: Zig Setup - uses: goto-bus-stop/setup-zig@v2 - with: - version: 0.12.1 - - name: Install cargo-zigbuild - run: cargo install cargo-zigbuild - - name: Release x86 - run: cargo zigbuild --release --target x86_64-unknown-linux-gnu - - name: Release ARM - run: | - rustup target add aarch64-unknown-linux-gnu - cargo zigbuild --release --target aarch64-unknown-linux-gnu - - name: AppImage x86 - run: | - cp target/x86_64-unknown-linux-gnu/release/grim linux/Grim.AppDir/AppRun - ./appimagetool-x86_64.AppImage linux/Grim.AppDir target/x86_64-unknown-linux-gnu/release/grim-${{ github.ref_name }}-linux-x86_64.AppImage - - name: Checksum AppImage x86 - working-directory: target/x86_64-unknown-linux-gnu/release - shell: bash - run: sha256sum grim-${{ github.ref_name }}-linux-x86_64.AppImage > grim-${{ github.ref_name }}-linux-x86_64-appimage-sha256sum.txt - - name: AppImage ARM - run: | - cp target/aarch64-unknown-linux-gnu/release/grim linux/Grim.AppDir/AppRun - ./appimagetool-x86_64.AppImage linux/Grim.AppDir target/aarch64-unknown-linux-gnu/release/grim-${{ github.ref_name }}-linux-arm.AppImage - - name: Checksum AppImage ARM - working-directory: target/aarch64-unknown-linux-gnu/release - shell: bash - run: sha256sum grim-${{ github.ref_name }}-linux-arm.AppImage > grim-${{ github.ref_name }}-linux-arm-appimage-sha256sum.txt - - name: Release - uses: softprops/action-gh-release@v1 - with: - files: | - target/x86_64-unknown-linux-gnu/release/grim-${{ github.ref_name }}-linux-x86_64.AppImage - target/x86_64-unknown-linux-gnu/release/grim-${{ github.ref_name }}-linux-x86_64-appimage-sha256sum.txt - target/aarch64-unknown-linux-gnu/release/grim-${{ github.ref_name }}-linux-arm.AppImage - target/aarch64-unknown-linux-gnu/release/grim-${{ github.ref_name }}-linux-arm-appimage-sha256sum.txt - - windows_release: - name: Windows Release - runs-on: windows-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Build release - run: cargo build --release - - name: Archive release - uses: vimtor/action-zip@v1 - with: - files: target/release/grim.exe - dest: target/release/grim-${{ github.ref_name }}-win-x86_64.zip - - name: Checksum release - working-directory: target/release - shell: bash - run: sha256sum grim-${{ github.ref_name }}-win-x86_64.zip > grim-${{ github.ref_name }}-win-x86_64-sha256sum.txt - - name: Install cargo-wix - run: cargo install cargo-wix - - name: Run cargo-wix - run: cargo wix -p grim -o ./target/wix/grim-${{ github.ref_name }}-win-x86_64.msi --nocapture - - name: Checksum msi - working-directory: target/wix - shell: bash - run: sha256sum grim-${{ github.ref_name }}-win-x86_64.msi > grim-${{ github.ref_name }}-win-x86_64-msi-sha256sum.txt - - name: Release - uses: softprops/action-gh-release@v1 - with: - files: | - target/release/grim-${{ github.ref_name }}-win-x86_64.zip - target/release/grim-${{ github.ref_name }}-win-x86_64-sha256sum.txt - target/wix/grim-${{ github.ref_name }}-win-x86_64.msi - target/wix/grim-${{ github.ref_name }}-win-x86_64-msi-sha256sum.txt - - macos_release: - name: MacOS Release - runs-on: macos-12 - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Install coreutils - run: brew install coreutils - - name: Zig Setup - uses: goto-bus-stop/setup-zig@v2 - with: - version: 0.12.1 - - name: Install cargo-zigbuild - run: cargo install cargo-zigbuild - - name: Download SDK - run: wget https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.0.sdk.tar.xz - - name: Setup SDK env - run: tar xf ${{ github.workspace }}/MacOSX11.0.sdk.tar.xz && echo "SDKROOT=${{ github.workspace }}/MacOSX11.0.sdk" >> $GITHUB_ENV - - name: Setup platform env - run: echo "MACOSX_DEPLOYMENT_TARGET=11.0" >> $GITHUB_ENV - - name: Release x86 - run: | - rustup target add x86_64-apple-darwin - cargo zigbuild --release --target x86_64-apple-darwin - yes | cp -rf target/x86_64-apple-darwin/release/grim macos/Grim.app/Contents/MacOS - - name: Archive x86 - run: | - cd macos - zip -r grim-${{ github.ref_name }}-macos-x86_64.zip Grim.app - mv grim-${{ github.ref_name }}-macos-x86_64.zip ../target/x86_64-apple-darwin/release - cd .. - - name: Checksum Release x86 - working-directory: target/x86_64-apple-darwin/release - shell: bash - run: sha256sum grim-${{ github.ref_name }}-macos-x86_64.zip > grim-${{ github.ref_name }}-macos-x86_64-sha256sum.txt - - name: Release ARM - run: | - rustup target add aarch64-apple-darwin - cargo zigbuild --release --target aarch64-apple-darwin - yes | cp -rf target/aarch64-apple-darwin/release/grim macos/Grim.app/Contents/MacOS - - name: Archive ARM - run: | - cd macos - zip -r grim-${{ github.ref_name }}-macos-arm.zip Grim.app - mv grim-${{ github.ref_name }}-macos-arm.zip ../target/aarch64-apple-darwin/release - cd .. - - name: Checksum Release ARM - working-directory: target/aarch64-apple-darwin/release - shell: bash - run: sha256sum grim-${{ github.ref_name }}-macos-arm.zip > grim-${{ github.ref_name }}-macos-arm-sha256sum.txt - - name: Release Universal - run: | - cargo zigbuild --release --target universal2-apple-darwin - yes | cp -rf target/universal2-apple-darwin/release/grim macos/Grim.app/Contents/MacOS - - name: Archive Universal - run: | - cd macos - zip -r grim-${{ github.ref_name }}-macos-universal.zip Grim.app - mv grim-${{ github.ref_name }}-macos-universal.zip ../target/universal2-apple-darwin/release - cd .. - - name: Checksum Release Universal - working-directory: target/universal2-apple-darwin/release - shell: pwsh - run: sha256sum grim-${{ github.ref_name }}-macos-universal.zip > grim-${{ github.ref_name }}-macos-universal-sha256sum.txt - - name: Release - uses: softprops/action-gh-release@v1 - with: - files: | - target/x86_64-apple-darwin/release/grim-${{ github.ref_name }}-macos-x86_64.zip - target/x86_64-apple-darwin/release/grim-${{ github.ref_name }}-macos-x86_64-sha256sum.txt - target/aarch64-apple-darwin/release/grim-${{ github.ref_name }}-macos-arm.zip - target/aarch64-apple-darwin/release/grim-${{ github.ref_name }}-macos-arm-sha256sum.txt - target/universal2-apple-darwin/release/grim-${{ github.ref_name }}-macos-universal.zip - target/universal2-apple-darwin/release/grim-${{ github.ref_name }}-macos-universal-sha256sum.txt