name: .NET Core CI on: push: paths-ignore: - '.github/*' - '.github/*_TEMPLATE/**' - '*.md' pull_request: paths-ignore: - '.github/*' - '.github/*_TEMPLATE/**' - '*.md' workflow_dispatch: jobs: build: name: .NET on ${{ matrix.runs-on }} (${{ matrix.configuration }}) runs-on: ${{ matrix.runs-on }} strategy: fail-fast: false matrix: runs-on: [macos-latest, macos-14, ubuntu-latest, windows-latest] configuration: [Release, Debug] env: DOTNET_CLI_TELEMETRY_OPTOUT: 1 steps: - uses: actions/checkout@v4 - name: Setup .NET Core uses: actions/setup-dotnet@v4 with: dotnet-version: 8.0.x - name: Build run: dotnet publish DepotDownloader/DepotDownloader.csproj -c ${{ matrix.configuration }} -o artifacts - name: Upload artifact uses: actions/upload-artifact@v4 if: matrix.configuration == 'Release' && matrix.runs-on == 'windows-latest' with: name: DepotDownloader-framework path: artifacts if-no-files-found: error - name: Publish Windows-x64 if: matrix.configuration == 'Release' && matrix.runs-on == 'windows-latest' run: dotnet publish DepotDownloader/DepotDownloader.csproj --configuration Release -p:PublishSingleFile=true -p:DebugType=embedded --self-contained --runtime win-x64 --output selfcontained-win-x64 - name: Publish Windows-arm64 if: matrix.configuration == 'Release' && matrix.runs-on == 'windows-latest' run: dotnet publish DepotDownloader/DepotDownloader.csproj --configuration Release -p:PublishSingleFile=true -p:DebugType=embedded --self-contained --runtime win-arm64 --output selfcontained-win-arm64 - name: Publish Linux-x64 if: matrix.configuration == 'Release' && matrix.runs-on == 'ubuntu-latest' run: dotnet publish DepotDownloader/DepotDownloader.csproj --configuration Release -p:PublishSingleFile=true -p:DebugType=embedded --self-contained --runtime linux-x64 --output selfcontained-linux-x64 - name: Publish Linux-arm if: matrix.configuration == 'Release' && matrix.runs-on == 'ubuntu-latest' run: dotnet publish DepotDownloader/DepotDownloader.csproj --configuration Release -p:PublishSingleFile=true -p:DebugType=embedded --self-contained --runtime linux-arm --output selfcontained-linux-arm - name: Publish Linux-arm64 if: matrix.configuration == 'Release' && matrix.runs-on == 'ubuntu-latest' run: dotnet publish DepotDownloader/DepotDownloader.csproj --configuration Release -p:PublishSingleFile=true -p:DebugType=embedded --self-contained --runtime linux-arm64 --output selfcontained-linux-arm64 - name: Publish macOS-x64 if: matrix.configuration == 'Release' && matrix.runs-on == 'macos-latest' run: dotnet publish DepotDownloader/DepotDownloader.csproj --configuration Release -p:PublishSingleFile=true -p:DebugType=embedded --self-contained --runtime osx-x64 --output selfcontained-osx-x64 - name: Publish macOS-arm64 if: matrix.configuration == 'Release' && matrix.runs-on == 'macos-14' run: dotnet publish DepotDownloader/DepotDownloader.csproj --configuration Release -p:PublishSingleFile=true -p:DebugType=embedded --self-contained --runtime osx-arm64 --output selfcontained-osx-arm64 - name: Upload Windows-x64 uses: actions/upload-artifact@v4 if: matrix.configuration == 'Release' && matrix.runs-on == 'windows-latest' with: name: DepotDownloader-windows-x64 path: selfcontained-win-x64 if-no-files-found: error - name: Upload Windows-arm64 uses: actions/upload-artifact@v4 if: matrix.configuration == 'Release' && matrix.runs-on == 'windows-latest' with: name: DepotDownloader-windows-arm64 path: selfcontained-win-arm64 if-no-files-found: error - name: Upload Linux-x64 uses: actions/upload-artifact@v4 if: matrix.configuration == 'Release' && matrix.runs-on == 'ubuntu-latest' with: name: DepotDownloader-linux-x64 path: selfcontained-linux-x64 if-no-files-found: error - name: Upload Linux-arm uses: actions/upload-artifact@v4 if: matrix.configuration == 'Release' && matrix.runs-on == 'ubuntu-latest' with: name: DepotDownloader-linux-arm path: selfcontained-linux-arm if-no-files-found: error - name: Upload Linux-arm64 uses: actions/upload-artifact@v4 if: matrix.configuration == 'Release' && matrix.runs-on == 'ubuntu-latest' with: name: DepotDownloader-linux-arm64 path: selfcontained-linux-arm64 if-no-files-found: error - name: Upload macOS-x64 uses: actions/upload-artifact@v4 if: matrix.configuration == 'Release' && matrix.runs-on == 'macos-latest' with: name: DepotDownloader-macos-x64 path: selfcontained-osx-x64 if-no-files-found: error - name: Upload macOS-arm64 uses: actions/upload-artifact@v4 if: matrix.configuration == 'Release' && matrix.runs-on == 'macos-14' with: name: DepotDownloader-macos-arm64 path: selfcontained-osx-arm64 if-no-files-found: error