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 # Avoid "Please provide the repository token to upload reports via `-t :repository-token`" # https://community.codecov.io/t/whitelist-github-action-servers-to-upload-without-a-token/491/10 # https://github.community/t5/GitHub-Actions/Make-secrets-available-to-builds-of-forks/m-p/42814/highlight/true#M5129 - name: Update Codecov uses: iansu/codecov-action-node@v1.0.0 if: matrix.options.codecov == true && startsWith(github.repository, 'SixLabors') with: token: 0ef021c7-2679-4012-b42f-4bed33d99450 flags: unittests Publish: needs: [Build] runs-on: windows-latest if: (github.event_name == 'push') 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: Pack shell: pwsh run: ./ci-pack.ps1 "${{steps.gitversion.outputs.nuGetVersion}}" - name: Publish to MyGet 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