# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json name: Publish release on: workflow_dispatch: workflow_call: env: ZIP_BASE_NAME: luacsforbarotrauma ZIP_FILES_SERVER: | DedicatedServer.deps.json DedicatedServer.dll DedicatedServer.pdb ZIP_FILES_CLIENT: | Barotrauma.deps.json Barotrauma.dll Barotrauma.pdb ZIP_FILES_SHARED: | 0Harmony.dll Sigil.dll MoonSharp.Interpreter.dll MonoMod.Common.dll Mono.Cecil.dll Mono.Cecil.Mdb.dll Mono.Cecil.Pdb.dll Mono.Cecil.Rocks.dll Microsoft.CodeAnalysis.CSharp.Scripting.dll Microsoft.CodeAnalysis.CSharp.dll Microsoft.CodeAnalysis.dll Microsoft.CodeAnalysis.Scripting.dll System.Collections.Immutable.dll System.Reflection.Metadata.dll System.Runtime.CompilerServices.Unsafe.dll Lua jobs: build: runs-on: ubuntu-latest steps: - name: Checkout branch uses: actions/checkout@v3 with: submodules: recursive - name: Setup .NET uses: actions/setup-dotnet@v2 with: dotnet-version: | 3.1.x 6.0.x - name: "Build: WindowsServer" run: dotnet publish Barotrauma/BarotraumaServer/WindowsServer.csproj -c Release -clp:"ErrorsOnly;Summary" --self-contained -r win-x64 \/p:Platform="x64" - name: "Build: WindowsClient" run: dotnet publish Barotrauma/BarotraumaClient/WindowsClient.csproj -c Release -clp:"ErrorsOnly;Summary" --self-contained -r win-x64 \/p:Platform="x64" - name: "Build: LinuxServer" run: dotnet publish Barotrauma/BarotraumaServer/LinuxServer.csproj -c Release -clp:"ErrorsOnly;Summary" --self-contained -r linux-x64 \/p:Platform="x64" - name: "Build: LinuxClient" run: dotnet publish Barotrauma/BarotraumaClient/LinuxClient.csproj -c Release -clp:"ErrorsOnly;Summary" --self-contained -r linux-x64 \/p:Platform="x64" - name: "Build: MacServer" run: dotnet publish Barotrauma/BarotraumaServer/MacServer.csproj -c Release -clp:"ErrorsOnly;Summary" --self-contained -r osx-x64 \/p:Platform="x64" - name: "Build: MacClient" run: dotnet publish Barotrauma/BarotraumaClient/MacClient.csproj -c Release -clp:"ErrorsOnly;Summary" --self-contained -r osx-x64 \/p:Platform="x64" - name: Create zip files run: | IFS=$'\n' readarray -td $'\n' ZIP_FILES_SHARED <<< "$ZIP_FILES_SHARED" IFS=$'\n' readarray -td $'\n' ZIP_FILES_CLIENT <<< "$ZIP_FILES_CLIENT" IFS=$'\n' readarray -td $'\n' ZIP_FILES_SERVER <<< "$ZIP_FILES_SERVER" for i in "${!ZIP_FILES_SHARED[@]}"; do file="${ZIP_FILES_SHARED[i]}" if [[ -z "$file" ]]; then unset "ZIP_FILES_SHARED[$i]" fi done for i in "${!ZIP_FILES_CLIENT[@]}"; do file="${ZIP_FILES_CLIENT[i]}" if [[ -z "$file" ]]; then unset "ZIP_FILES_CLIENT[$i]" fi done for i in "${!ZIP_FILES_SERVER[@]}"; do file="${ZIP_FILES_SERVER[i]}" if [[ -z "$file" ]]; then unset "ZIP_FILES_SERVER[$i]" fi done platforms=( "windows" "linux" "mac" ) publish_dirs=( "Barotrauma/bin/ReleaseWindows/netcoreapp3.1/win-x64/publish" "Barotrauma/bin/ReleaseLinux/netcoreapp3.1/linux-x64/publish" "Barotrauma/bin/ReleaseMac/netcoreapp3.1/osx-x64/publish" ) for i in "${!platforms[@]}"; do ( platform="${platforms[i]}" publish_dir="${publish_dirs[i]}" cd "$publish_dir" echo "Creating build_${platform}.zip" zip -x *.zip -r "${ZIP_BASE_NAME}_build_${platform}.zip" . echo "Creating patch_${platform}_client.zip" zip -x *.zip -r "${ZIP_BASE_NAME}_patch_${platform}_client.zip" \ "${ZIP_FILES_SHARED[@]}" \ mscordaccore_amd64_amd64_* \ "${ZIP_FILES_CLIENT[@]}" echo "Creating patch_${platform}_server.zip" zip -x *.zip -r "${ZIP_BASE_NAME}_patch_${platform}_server.zip" \ "${ZIP_FILES_SHARED[@]}" \ mscordaccore_amd64_amd64_* \ "${ZIP_FILES_SERVER[@]}" ) done - name: Publish release uses: marvinpinto/action-automatic-releases@v1.2.1 with: repo_token: ${{ secrets.GITHUB_TOKEN }} automatic_release_tag: latest prerelease: false title: Automatic Build files: | Barotrauma/bin/ReleaseWindows/netcoreapp3.1/win-x64/publish/${{ env.ZIP_BASE_NAME }}_build_windows.zip Barotrauma/bin/ReleaseWindows/netcoreapp3.1/win-x64/publish/${{ env.ZIP_BASE_NAME }}_patch_windows_client.zip Barotrauma/bin/ReleaseWindows/netcoreapp3.1/win-x64/publish/${{ env.ZIP_BASE_NAME }}_patch_windows_server.zip Barotrauma/bin/ReleaseLinux/netcoreapp3.1/linux-x64/publish/${{ env.ZIP_BASE_NAME }}_build_linux.zip Barotrauma/bin/ReleaseLinux/netcoreapp3.1/linux-x64/publish/${{ env.ZIP_BASE_NAME }}_patch_linux_client.zip Barotrauma/bin/ReleaseLinux/netcoreapp3.1/linux-x64/publish/${{ env.ZIP_BASE_NAME }}_patch_linux_server.zip Barotrauma/bin/ReleaseMac/netcoreapp3.1/osx-x64/publish/${{ env.ZIP_BASE_NAME }}_build_mac.zip Barotrauma/bin/ReleaseMac/netcoreapp3.1/osx-x64/publish/${{ env.ZIP_BASE_NAME }}_patch_mac_client.zip Barotrauma/bin/ReleaseMac/netcoreapp3.1/osx-x64/publish/${{ env.ZIP_BASE_NAME }}_patch_mac_server.zip