name: Build on: push: # branches: master # pull_request: # branches: '*' # paths-ignore: # - 'README.md' # - '.github/ISSUE_TEMPLATE/**' # workflow_dispatch: jobs: prepare: runs-on: ubuntu-latest outputs: version: ${{ steps.version.outputs.version }} steps: - name: checkout repository uses: actions/checkout@v3 - name: check raylib version id: version shell: bash run: | echo "version=$(sed -n 's/.*\(.*\)<\/TargetRaylibTag>.*/\1/p' Raylib-cs/Raylib-cs.csproj)">> ${GITHUB_OUTPUT} build-linux: runs-on: ubuntu-latest needs: prepare steps: - name: setup dependencies run: | sudo apt install \ libasound2-dev \ libx11-dev \ libxrandr-dev \ libxi-dev \ libgl1-mesa-dev \ libglu1-mesa-dev \ libxcursor-dev \ libxinerama-dev - name: build raylib env: version: ${{ needs.prepare.outputs.version }} run: | curl -Lso raylib.zip https://github.com/raysan5/raylib/archive/refs/tags/${version}.zip unzip -qq raylib.zip cmake -S raylib-${version} \ -B build \ -D CMAKE_BUILD_TYPE=Release \ -D BUILD_SHARED_LIBS=ON \ -D BUILD_EXAMPLES=OFF cmake --build build --config Release file build/raylib/libraylib.so # TODO: remove me - name: upload build uses: actions/upload-artifact@v3 with: name: linux-x64 path: build/raylib/libraylib.so if-no-files-found: error build-osx: runs-on: macos-latest needs: prepare strategy: matrix: name: [arm64, x64] include: - name: arm64 arch: arm64 - name: x64 arch: x86_64 steps: - name: build raylib env: version: ${{ needs.prepare.outputs.version }} run: | curl -Lso raylib.zip https://github.com/raysan5/raylib/archive/refs/tags/${version}.zip unzip -qq raylib.zip cmake -S raylib-${version} \ -B build \ -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \ -D BUILD_SHARED_LIBS=ON \ -D BUILD_EXAMPLES=OFF cmake --build build --config Release file build/raylib/libraylib.dylib # TODO: remove me - name: upload build uses: actions/upload-artifact@v3 with: name: osx-${{ matrix.name }} path: build/raylib/libraylib.dylib if-no-files-found: error build-windows: runs-on: windows-latest needs: prepare strategy: matrix: name: [x86, x64] include: - name: x86 arch: win32 - name: x64 arch: x64 steps: - name: build ${{ matrix.arch }} shell: bash env: version: ${{ needs.prepare.outputs.version }} run: | curl -Lso raylib.zip https://github.com/raysan5/raylib/archive/refs/tags/${version}.zip unzip -qq raylib.zip cmake -S raylib-${version} \ -A ${{ matrix.arch }} \ -B build \ -D CMAKE_BUILD_TYPE=Release \ -D BUILD_SHARED_LIBS=ON \ -D BUILD_EXAMPLES=OFF cmake --build build --config Release file build/raylib/Release/raylib.dll # TODO: remove me - name: upload build uses: actions/upload-artifact@v3 with: name: win-${{ matrix.name }} path: build/raylib/Release/raylib.dll if-no-files-found: error publish: runs-on: ubuntu-latest needs: - prepare - build-linux - build-osx - build-windows steps: - name: checkout repository uses: actions/checkout@v3 - uses: actions/download-artifact@v3 with: name: linux-x64 path: Raylib-cs/runtimes/linux-x64/native - uses: actions/download-artifact@v3 with: name: osx-arm64 path: Raylib-cs/runtimes/osx-arm64/native - uses: actions/download-artifact@v3 with: name: osx-x64 path: Raylib-cs/runtimes/osx-x64/native - uses: actions/download-artifact@v3 with: name: win-x86 path: Raylib-cs/runtimes/win-x86/native - uses: actions/download-artifact@v3 with: name: win-x64 path: Raylib-cs/runtimes/win-x64/native - run: find Raylib-cs/runtimes/ # TODO: remove me # jobs: # build: # name: Build on dotnet using ${{ matrix.os }} # runs-on: ${{ matrix.os }} # strategy: # matrix: # os: [ubuntu-latest, windows-latest, macOS-latest] # steps: # - uses: actions/checkout@v2 # - name: Setup dotnet # uses: actions/setup-dotnet@v1 # with: # dotnet-version: 6.0.x # - name: Build project # run: dotnet build -c Release -f net6.0 # - name: Test project # run: dotnet test -c Release -f net6.0 # publish: # name: Build Release Package # runs-on: ubuntu-latest # needs: build # steps: # - uses: actions/checkout@v2 # - name: Setup dotnet # uses: actions/setup-dotnet@v1 # with: # dotnet-version: 6.0.x # - name: Download Repo # uses: actions/checkout@v2 # - id: get-tag # name: Get Target Raylib Version # uses: mavrosxristoforos/get-xml-info@1.0 # with: # xml-file: './Raylib-cs/Raylib-cs.csproj' # xpath: '//TargetRaylibTag' # - name: echo tag # run: echo ${{ steps.get-tag.outputs.info }} # - name: Download win-x64 Raylib Release # uses: robinraju/release-downloader@v1.3 # with: # repository: 'raysan5/raylib' # tag: ${{ steps.get-tag.outputs.info }} # fileName: 'raylib-${{steps.get-tag.outputs.info}}_win64_msvc16.zip' # - name: extract win-x64 # uses: montudor/action-zip@v1 # with: # args: unzip -qq raylib-${{steps.get-tag.outputs.info}}_win64_msvc16.zip -d raylib-win64 # - name: copy win-x64 # uses: canastro/copy-file-action@master # with: # source: 'raylib-win64/raylib-${{steps.get-tag.outputs.info}}_win64_msvc16/lib/raylib.dll' # target: 'Raylib-cs/runtimes/win-x64/native/raylib.dll' # - name: Download win-x86 Raylib Release # uses: robinraju/release-downloader@v1.3 # with: # repository: 'raysan5/raylib' # tag: ${{ steps.get-tag.outputs.info }} # fileName: 'raylib-${{steps.get-tag.outputs.info}}_win32_msvc16.zip' # - name: extract win-x86 # uses: montudor/action-zip@v1 # with: # args: unzip -qq raylib-${{steps.get-tag.outputs.info}}_win32_msvc16.zip -d raylib-win86 # - name: copy win-x86 # uses: canastro/copy-file-action@master # with: # source: 'raylib-win86/raylib-${{steps.get-tag.outputs.info}}_win32_msvc16/lib/raylib.dll' # target: 'Raylib-cs/runtimes/win-x86/native/raylib.dll' # - name: Download linux-x64 Raylib Release # uses: robinraju/release-downloader@v1.3 # with: # repository: 'raysan5/raylib' # tag: ${{ steps.get-tag.outputs.info }} # fileName: 'raylib-${{steps.get-tag.outputs.info}}_linux_amd64.tar.gz' # - name: extract linux-x64 # run: mkdir -p raylib-linux64 && tar -xvf raylib-${{steps.get-tag.outputs.info}}_linux_amd64.tar.gz -C raylib-linux64 # - name: copy linux-x64 # uses: canastro/copy-file-action@master # with: # source: 'raylib-linux64/raylib-${{steps.get-tag.outputs.info}}_linux_amd64/lib/libraylib.so.${{steps.get-tag.outputs.info}}' # target: 'Raylib-cs/runtimes/linux-x64/native/libraylib.so' # - name: Download osx-x64 Raylib Release # uses: robinraju/release-downloader@v1.3 # with: # repository: 'raysan5/raylib' # tag: ${{ steps.get-tag.outputs.info }} # fileName: 'raylib-${{steps.get-tag.outputs.info}}_macos.tar.gz' # - name: extract osx-x64 # run: mkdir -p raylib-osx64 && tar -xvf raylib-${{steps.get-tag.outputs.info}}_macos.tar.gz -C raylib-osx64 # - name: copy osx-x64 # uses: canastro/copy-file-action@master # with: # source: 'raylib-osx64/raylib-${{steps.get-tag.outputs.info}}_macos/lib/libraylib.dylib' # target: 'Raylib-cs/runtimes/osx-x64/native/libraylib.dylib' # - name: copy osx-arm64 # uses: canastro/copy-file-action@master # with: # source: 'raylib-osx64/raylib-${{steps.get-tag.outputs.info}}_macos/lib/libraylib.dylib' # target: 'Raylib-cs/runtimes/osx-arm64/native/libraylib.dylib' # - id: get-nuget-version # name: Get NuGet Package Version # uses: mavrosxristoforos/get-xml-info@1.0 # with: # xml-file: './Raylib-cs/Raylib-cs.csproj' # xpath: '//PackageVersion' # - name: Create NuGet Package # run: dotnet pack -c Release Raylib-cs # - name: Upload NuGet Package As Artifact # uses: actions/upload-artifact@v2 # with: # name: Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg # path: Raylib-cs/bin/Release/Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg # - name: Upload NuGet Package As Release # uses: softprops/action-gh-release@v1 # if: startsWith(github.ref, 'refs/tags/') # with: # files: Raylib-cs/bin/Release/Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg # - name: Publish to NuGet # if: startsWith(github.ref, 'refs/tags/') # run: dotnet nuget push Raylib-cs/bin/Release/Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg --api-key ${{secrets.NUGET_API_KEY}}