name: Build on: push: branches: - master tags: - "v*" pull_request: branches: - master jobs: Build: strategy: matrix: options: - os: ubuntu-latest framework: netcoreapp3.1 runtime: -x64 codecov: false - os: windows-latest framework: netcoreapp3.1 runtime: -x64 codecov: true - os: windows-latest framework: netcoreapp2.1 runtime: -x64 codecov: false - os: windows-latest framework: net472 runtime: -x64 codecov: false - os: windows-latest framework: net472 runtime: -x86 codecov: false runs-on: ${{matrix.options.os}} steps: - uses: actions/checkout@v2 - name: Install NuGet uses: NuGet/setup-nuget@v1 - name: Setup Git shell: bash run: | git config --global core.autocrlf false git config --global core.longpaths true git fetch --prune --unshallow git submodule -q update --init --recursive - name: Fetch Tags for GitVersion run: | git fetch --tags - name: Fetch master for GitVersion if: github.ref != 'refs/heads/master' run: git branch --create-reflog master origin/master - name: Install GitVersion uses: gittools/actions/setup-gitversion@v0.3 with: versionSpec: "5.1.x" - name: Use GitVersion id: gitversion # step id used as reference for output values uses: gittools/actions/execute-gitversion@v0.3 - name: Setup DotNet SDK uses: actions/setup-dotnet@v1 with: dotnet-version: "3.1.101" - name: Build shell: pwsh run: ./ci-build.ps1 "${{steps.gitversion.outputs.nuGetVersion}}" "${{matrix.options.framework}}" - name: Test shell: pwsh run: ./ci-test.ps1 "${{matrix.options.os}}" "${{matrix.options.framework}}" "${{matrix.options.runtime}}" "${{matrix.options.codecov}}" env: CI : True XUNIT_PATH: .\tests\ImageSharp.Tests # Required for xunit - name: Update Codecov uses: iansu/codecov-action-node@v1.0.0 if: matrix.options.codecov == true with: token: ${{secrets.CODECOV_TOKEN}} file: "coverage.${{matrix.options.framework}}.xml" flags: unittests - name: Pack # We can use this filter as we know it happens only once and takes the most time to complete. if: (github.event_name == 'push') && (matrix.options.codecov == true) shell: pwsh run: ./ci-build.ps1 "${{steps.gitversion.outputs.nuGetVersion}}" - name: Publish to MyGet if: (github.event_name == 'push') && (matrix.options.codecov == true) shell: pwsh run: nuget.exe push .\artifacts\*.nupkg ${{secrets.MYGET_TOKEN}} -Source https://www.myget.org/F/sixlabors/api/v2/package # TODO: If github.ref starts with 'refs/tags' then it was tag push and we can optionally push out package to nuget.org