feat(ai): make AI denoise the default inpaint method #73
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # ============================================================================= | |
| # Gemini Watermark Tool - Cross-Platform CI | |
| # ============================================================================= | |
| name: Build | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| tags: [ 'v*' ] | |
| paths-ignore: | |
| - '**.md' | |
| - 'docs/**' | |
| - 'LICENSE' | |
| - '.gitignore' | |
| pull_request: | |
| branches: [ main ] | |
| paths-ignore: | |
| - '**.md' | |
| - 'docs/**' | |
| - 'LICENSE' | |
| - '.gitignore' | |
| workflow_dispatch: | |
| jobs: | |
| # =========================================================================== | |
| # Windows Build | |
| # =========================================================================== | |
| build-windows: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup MSVC | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| arch: x64 | |
| - name: Setup vcpkg | |
| uses: lukka/run-vcpkg@v11 | |
| with: | |
| vcpkgGitCommitId: '594ad8871e1e8e45f8e626c015fd611163430207' | |
| - name: Configure & Build | |
| run: | | |
| cmake --preset windows-x64-Release | |
| cmake --build --preset windows-x64-Release | |
| - name: Test binary | |
| run: ./out/build/windows-x64-Release/GeminiWatermarkTool.exe --version | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: GeminiWatermarkTool-Windows-x64 | |
| path: out/build/windows-x64-Release/GeminiWatermarkTool.exe | |
| # =========================================================================== | |
| # Linux Build | |
| # =========================================================================== | |
| build-linux: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| ninja-build \ | |
| libxmu-dev \ | |
| libgl1-mesa-dev \ | |
| libglu1-mesa-dev \ | |
| libegl1-mesa-dev \ | |
| libx11-dev \ | |
| libxrandr-dev \ | |
| libxinerama-dev \ | |
| libxcursor-dev \ | |
| libxi-dev \ | |
| libxext-dev \ | |
| libwayland-dev \ | |
| libxkbcommon-dev \ | |
| wayland-protocols \ | |
| libltdl-dev \ | |
| libvulkan-dev | |
| - name: Setup vcpkg | |
| uses: lukka/run-vcpkg@v11 | |
| with: | |
| vcpkgGitCommitId: '594ad8871e1e8e45f8e626c015fd611163430207' | |
| - name: Configure & Build | |
| run: | | |
| cmake --preset linux-x64-Release | |
| cmake --build --preset linux-x64-Release | |
| - name: Test binary | |
| run: ./out/build/linux-x64-Release/GeminiWatermarkTool --version | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: GeminiWatermarkTool-Linux-x64 | |
| path: out/build/linux-x64-Release/GeminiWatermarkTool | |
| # =========================================================================== | |
| # macOS Build (Universal Binary) | |
| # =========================================================================== | |
| build-macos: | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Install dependencies | |
| run: brew list ninja || brew install ninja | |
| - name: Setup vcpkg | |
| uses: lukka/run-vcpkg@v11 | |
| with: | |
| vcpkgGitCommitId: '594ad8871e1e8e45f8e626c015fd611163430207' | |
| - name: Build x64 | |
| run: | | |
| cmake -B build-x64 -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_GUI=ON \ | |
| -DENABLE_AI_DENOISE=ON \ | |
| -DVCPKG_MANIFEST_FEATURES="gui;ai-denoise" \ | |
| -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \ | |
| -DVCPKG_TARGET_TRIPLET=x64-osx \ | |
| -DCMAKE_OSX_ARCHITECTURES=x86_64 | |
| cmake --build build-x64 | |
| - name: Build arm64 | |
| run: | | |
| cmake -B build-arm64 -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_GUI=ON \ | |
| -DENABLE_AI_DENOISE=ON \ | |
| -DVCPKG_MANIFEST_FEATURES="gui;ai-denoise" \ | |
| -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \ | |
| -DVCPKG_TARGET_TRIPLET=arm64-osx \ | |
| -DCMAKE_OSX_ARCHITECTURES=arm64 | |
| cmake --build build-arm64 | |
| - name: Create Universal Binary | |
| run: | | |
| lipo -create build-x64/GeminiWatermarkTool build-arm64/GeminiWatermarkTool -output GeminiWatermarkTool | |
| strip GeminiWatermarkTool | |
| - name: Ad-hoc code sign | |
| run: | | |
| mkdir -p dist | |
| cp GeminiWatermarkTool dist/ | |
| codesign --force -s - dist/GeminiWatermarkTool | |
| codesign -vv dist/GeminiWatermarkTool | |
| mv dist/GeminiWatermarkTool . | |
| rmdir dist | |
| - name: Test binary | |
| run: ./GeminiWatermarkTool --version | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: GeminiWatermarkTool-macOS-Universal | |
| path: GeminiWatermarkTool | |
| # =========================================================================== | |
| # Release (on tag push) | |
| # =========================================================================== | |
| release: | |
| needs: [build-windows, build-linux, build-macos] | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Fetch tags | |
| run: git fetch --tags --force | |
| - name: Get tag message | |
| id: tag | |
| run: | | |
| TAG_NAME=${GITHUB_REF#refs/tags/} | |
| echo "Tag name: $TAG_NAME" | |
| TAG_MESSAGE=$(git for-each-ref --format='%(contents)' refs/tags/$TAG_NAME) | |
| echo "message<<EOF" >> $GITHUB_OUTPUT | |
| echo "$TAG_MESSAGE" >> $GITHUB_OUTPUT | |
| echo "EOF" >> $GITHUB_OUTPUT | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| - name: List downloaded files | |
| run: find . -type f | |
| - name: Prepare release files | |
| run: | | |
| # Windows | |
| cp GeminiWatermarkTool-Windows-x64/GeminiWatermarkTool.exe ./GeminiWatermarkTool.exe | |
| zip GeminiWatermarkTool-Windows-x64.zip GeminiWatermarkTool.exe | |
| rm GeminiWatermarkTool.exe | |
| # Linux | |
| cp GeminiWatermarkTool-Linux-x64/GeminiWatermarkTool ./GeminiWatermarkTool | |
| chmod +x GeminiWatermarkTool | |
| zip GeminiWatermarkTool-Linux-x64.zip GeminiWatermarkTool | |
| rm GeminiWatermarkTool | |
| # macOS | |
| cp GeminiWatermarkTool-macOS-Universal/GeminiWatermarkTool ./GeminiWatermarkTool | |
| chmod +x GeminiWatermarkTool | |
| zip GeminiWatermarkTool-macOS-Universal.zip GeminiWatermarkTool | |
| rm GeminiWatermarkTool | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| body: ${{ steps.tag.outputs.message }} | |
| files: | | |
| GeminiWatermarkTool-Windows-x64.zip | |
| GeminiWatermarkTool-Linux-x64.zip | |
| GeminiWatermarkTool-macOS-Universal.zip | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |