Skip to content

Release

Release #6

Workflow file for this run

name: Release
on:
push:
tags:
- "v*"
workflow_dispatch:
jobs:
build-linux-with-docker:
name: Linux(With Dockerfile)
runs-on: ubuntu-latest
timeout-minutes: 15
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t gpupixel_img .
- name: Build
run: mkdir -p build output && docker run --rm -u $(id -u):$(id -g) -v $(pwd)/output:/workspace/output -v $(pwd)/build:/workspace/build -v /etc/passwd:/etc/passwd:ro -v /etc/group:/etc/group:ro gpupixel_img
- name: Create zip
working-directory: output
run: zip -r gpupixel_linux_x86_64.zip . && ls
- name: Upload Linux Artifact
uses: actions/upload-artifact@v4
with:
name: gpupixel_linux_x86_64
path: output/gpupixel_linux_x86_64.zip
build-macos-clang:
name: macOS (Universal)
runs-on: macos-latest
timeout-minutes: 15
env:
BUILD_TYPE: Release
CMAKE_OSX_ARCHITECTURES: x86_64;arm64
steps:
- uses: actions/checkout@v4
- name: Configure
run: cmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/toolchain/ios.toolchain.cmake -DPLATFORM=MAC_UNIVERSAL -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -S ${{ github.workspace }}/src
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Create zip
working-directory: ${{github.workspace}}/output
run: zip -r gpupixel_mac_Universal.zip .
- name: Upload Mac Artifact
uses: actions/upload-artifact@v4
with:
name: gpupixel_mac_Universal
path: ${{github.workspace}}/output/gpupixel_mac_Universal.zip
build-ios-clang:
name: iOS (Arm64)
runs-on: macos-latest
timeout-minutes: 15
env:
BUILD_TYPE: Release
CMAKE_OSX_ARCHITECTURES: x86_64;arm64
steps:
- uses: actions/checkout@v4
- name: Configure
run: cmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/toolchain/ios.toolchain.cmake -DPLATFORM=OS64 -B ${{github.workspace}}/build -S ${{github.workspace}}/src -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Create zip
working-directory: ${{github.workspace}}/output
run: zip -r gpupixel_ios_arm64.zip .
- name: Upload iOS Artifact
uses: actions/upload-artifact@v4
with:
name: gpupixel_ios_arm64
path: ${{github.workspace}}/output/gpupixel_ios_arm64.zip
build-windows-cl:
name: Windows (MSCV CL.EXE)
runs-on: windows-latest
timeout-minutes: 15
env:
BUILD_TYPE: Release
steps:
- uses: actions/checkout@v4
# Step 2: 配置 MSVC 环境为 x64
- name: Build something requiring CL.EXE
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
# Step 3: 创建构建目录并运行 CMake(指定 x64 平台)
- name: Configure CMake for x64
run: |
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release .
nmake
- name: Create zip
run: Compress-Archive -Path ${{github.workspace}}/output/* -Destination gpupixel_windows_x86_64.zip
- name: Upload Win Artifact
uses: actions/upload-artifact@v4
with:
name: gpupixel_windows_x86_64
path: ./gpupixel_windows_x86_64.zip
build-android-gradle:
name: Android (Arm64-v8a & Armeabi-v7a)
runs-on: ubuntu-latest
timeout-minutes: 15
env:
BUILD_TYPE: Release
steps:
- uses: actions/checkout@v4
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: "11"
distribution: "temurin"
cache: gradle
- name: Grant execute permission for gradlew
working-directory: src/android/java
run: chmod +x gradlew
- name: Build with Gradle
working-directory: src/android/java
run: ./gradlew :gpupixel:assembleRelease
- name: Create zip
working-directory: ${{github.workspace}}/output
run: |
cp -r ${{github.workspace}}/src/android/java/gpupixel/build/outputs/aar ${{github.workspace}}/output/library/android
zip -r gpupixel_android.zip .
- name: Upload Android Artifact
uses: actions/upload-artifact@v4
with:
name: gpupixel_android
path: ${{github.workspace}}/output/gpupixel_android.zip
# Deployment job
deploy:
needs:
[
build-linux-with-docker,
build-macos-clang,
build-ios-clang,
build-windows-cl,
build-android-gradle,
]
runs-on: ubuntu-latest
name: Deploy
steps:
- uses: actions/checkout@v4
- name: Download Linux Artifact
uses: actions/download-artifact@v4
with:
name: gpupixel_linux_x86_64
path: ./
- name: Download Mac Artifact
uses: actions/download-artifact@v4
with:
name: gpupixel_mac_Universal
path: ./
- name: Download iOS Artifact
uses: actions/download-artifact@v4
with:
name: gpupixel_ios_arm64
path: ./
- name: Download Win Artifact
uses: actions/download-artifact@v4
with:
name: gpupixel_windows_x86_64
path: ./
- name: Download Android Artifact
uses: actions/download-artifact@v4
with:
name: gpupixel_android
path: ./
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
body_path: ${{ github.workspace }}/CHANGELOG.md
draft: false
prerelease: false
- name: Upload Linux library
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./gpupixel_linux_x86_64.zip
asset_name: gpupixel_linux_x86_64.zip
asset_content_type: application/gzip
- name: Upload Mac library
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./gpupixel_mac_Universal.zip
asset_name: gpupixel_mac_Universal.zip
asset_content_type: application/gzip
- name: Upload iOS library
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./gpupixel_ios_arm64.zip
asset_name: gpupixel_ios_arm64.zip
asset_content_type: application/gzip
- name: Upload Win library
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./gpupixel_windows_x86_64.zip
asset_name: gpupixel_windows_x86_64.zip
asset_content_type: application/gzip
- name: Upload Android library
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./gpupixel_android.zip
asset_name: gpupixel_android.zip
asset_content_type: application/gzip