|
|
|
@ -1,19 +1,37 @@ |
|
|
|
name: Build |
|
|
|
|
|
|
|
on: |
|
|
|
push: |
|
|
|
branches: |
|
|
|
- master |
|
|
|
tags: |
|
|
|
- "v*" |
|
|
|
pull_request: |
|
|
|
branches: |
|
|
|
- master |
|
|
|
push: |
|
|
|
branches: |
|
|
|
- master |
|
|
|
tags: |
|
|
|
- "v*" |
|
|
|
pull_request: |
|
|
|
branches: |
|
|
|
- master |
|
|
|
jobs: |
|
|
|
Build: |
|
|
|
strategy: |
|
|
|
matrix: |
|
|
|
options: |
|
|
|
- os: ubuntu-latest |
|
|
|
framework: net6.0 |
|
|
|
sdk: 6.0.x |
|
|
|
sdk-preview: true |
|
|
|
runtime: -x64 |
|
|
|
codecov: false |
|
|
|
- os: macos-latest |
|
|
|
framework: net6.0 |
|
|
|
sdk: 6.0.x |
|
|
|
sdk-preview: true |
|
|
|
runtime: -x64 |
|
|
|
codecov: false |
|
|
|
- os: windows-latest |
|
|
|
framework: net6.0 |
|
|
|
sdk: 6.0.x |
|
|
|
sdk-preview: true |
|
|
|
runtime: -x64 |
|
|
|
codecov: false |
|
|
|
- os: ubuntu-latest |
|
|
|
framework: net5.0 |
|
|
|
runtime: -x64 |
|
|
|
@ -52,37 +70,38 @@ jobs: |
|
|
|
codecov: false |
|
|
|
|
|
|
|
runs-on: ${{matrix.options.os}} |
|
|
|
if: "!contains(github.event.head_commit.message, '[skip ci]')" |
|
|
|
|
|
|
|
steps: |
|
|
|
- uses: actions/checkout@v2 |
|
|
|
- name: Git Config |
|
|
|
shell: bash |
|
|
|
run: | |
|
|
|
git config --global core.autocrlf false |
|
|
|
git config --global core.longpaths true |
|
|
|
|
|
|
|
- name: Git Checkout |
|
|
|
uses: actions/checkout@v2 |
|
|
|
with: |
|
|
|
fetch-depth: 0 |
|
|
|
submodules: recursive |
|
|
|
|
|
|
|
# See https://github.com/actions/checkout/issues/165#issuecomment-657673315 |
|
|
|
- name: Create LFS file list |
|
|
|
- name: Git Create LFS FileList |
|
|
|
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id |
|
|
|
|
|
|
|
- name: Restore LFS cache |
|
|
|
- name: Git Setup LFS Cache |
|
|
|
uses: actions/cache@v2 |
|
|
|
id: lfs-cache |
|
|
|
with: |
|
|
|
path: .git/lfs |
|
|
|
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1 |
|
|
|
|
|
|
|
- name: Git LFS Pull |
|
|
|
- name: Git Pull LFS |
|
|
|
run: git lfs pull |
|
|
|
|
|
|
|
- name: Install NuGet |
|
|
|
- name: NuGet Install |
|
|
|
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: Setup NuGet Cache |
|
|
|
- name: NuGet Setup Cache |
|
|
|
uses: actions/cache@v2 |
|
|
|
id: nuget-cache |
|
|
|
with: |
|
|
|
@ -90,60 +109,94 @@ jobs: |
|
|
|
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.props', '**/*.targets') }} |
|
|
|
restore-keys: ${{ runner.os }}-nuget- |
|
|
|
|
|
|
|
- name: Build |
|
|
|
- name: DotNet Setup Preview |
|
|
|
if: ${{ matrix.options.sdk-preview == true }} |
|
|
|
uses: actions/setup-dotnet@v1 |
|
|
|
with: |
|
|
|
dotnet-version: ${{ matrix.options.sdk }} |
|
|
|
include-prerelease: true |
|
|
|
|
|
|
|
- name: DotNet Build |
|
|
|
if: ${{ matrix.options.sdk-preview != true }} |
|
|
|
shell: pwsh |
|
|
|
run: ./ci-build.ps1 "${{matrix.options.framework}}" |
|
|
|
env: |
|
|
|
SIXLABORS_TESTING: True |
|
|
|
|
|
|
|
- name: Test |
|
|
|
- name: DotNet Build Preview |
|
|
|
if: ${{ matrix.options.sdk-preview == true }} |
|
|
|
shell: pwsh |
|
|
|
run: ./ci-build.ps1 "${{matrix.options.framework}}" |
|
|
|
env: |
|
|
|
SIXLABORS_TESTING_PREVIEW: True |
|
|
|
|
|
|
|
- name: DotNet Test |
|
|
|
if: ${{ matrix.options.sdk-preview != true }} |
|
|
|
shell: pwsh |
|
|
|
run: ./ci-test.ps1 "${{matrix.options.os}}" "${{matrix.options.framework}}" "${{matrix.options.runtime}}" "${{matrix.options.codecov}}" |
|
|
|
env: |
|
|
|
SIXLABORS_TESTING: True |
|
|
|
XUNIT_PATH: .\tests\ImageSharp.Tests # Required for xunit |
|
|
|
SIXLABORS_TESTING: True |
|
|
|
XUNIT_PATH: .\tests\ImageSharp.Tests # Required for xunit |
|
|
|
|
|
|
|
- name: DotNet Test Preview |
|
|
|
if: ${{ matrix.options.sdk-preview == true }} |
|
|
|
shell: pwsh |
|
|
|
run: ./ci-test.ps1 "${{matrix.options.os}}" "${{matrix.options.framework}}" "${{matrix.options.runtime}}" "${{matrix.options.codecov}}" |
|
|
|
env: |
|
|
|
SIXLABORS_TESTING_PREVIEW: True |
|
|
|
XUNIT_PATH: .\tests\ImageSharp.Tests # Required for xunit |
|
|
|
|
|
|
|
- name: Export Failed Output |
|
|
|
uses: actions/upload-artifact@v2 |
|
|
|
if: failure() |
|
|
|
with: |
|
|
|
name: actual_output_${{ runner.os }}_${{ matrix.options.framework }}${{ matrix.options.runtime }}.zip |
|
|
|
path: tests/Images/ActualOutput/ |
|
|
|
name: actual_output_${{ runner.os }}_${{ matrix.options.framework }}${{ matrix.options.runtime }}.zip |
|
|
|
path: tests/Images/ActualOutput/ |
|
|
|
|
|
|
|
- name: Update Codecov |
|
|
|
- name: Codecov Update |
|
|
|
uses: codecov/codecov-action@v1 |
|
|
|
if: matrix.options.codecov == true && startsWith(github.repository, 'SixLabors') |
|
|
|
with: |
|
|
|
flags: unittests |
|
|
|
flags: unittests |
|
|
|
|
|
|
|
Publish: |
|
|
|
needs: [Build] |
|
|
|
|
|
|
|
runs-on: windows-latest |
|
|
|
runs-on: ubuntu-latest |
|
|
|
|
|
|
|
if: (github.event_name == 'push') |
|
|
|
|
|
|
|
steps: |
|
|
|
- uses: actions/checkout@v2 |
|
|
|
|
|
|
|
- name: Install NuGet |
|
|
|
uses: NuGet/setup-nuget@v1 |
|
|
|
|
|
|
|
- name: Setup Git |
|
|
|
- name: Git Config |
|
|
|
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: Pack |
|
|
|
- name: Git Checkout |
|
|
|
uses: actions/checkout@v2 |
|
|
|
with: |
|
|
|
fetch-depth: 0 |
|
|
|
submodules: recursive |
|
|
|
|
|
|
|
- name: NuGet Install |
|
|
|
uses: NuGet/setup-nuget@v1 |
|
|
|
|
|
|
|
- name: NuGet Setup Cache |
|
|
|
uses: actions/cache@v2 |
|
|
|
id: nuget-cache |
|
|
|
with: |
|
|
|
path: ~/.nuget |
|
|
|
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.props', '**/*.targets') }} |
|
|
|
restore-keys: ${{ runner.os }}-nuget- |
|
|
|
|
|
|
|
- name: DotNet Pack |
|
|
|
shell: pwsh |
|
|
|
run: ./ci-pack.ps1 |
|
|
|
|
|
|
|
- name: Publish to MyGet |
|
|
|
- name: MyGet Publish |
|
|
|
shell: pwsh |
|
|
|
run: | |
|
|
|
nuget.exe push .\artifacts\*.nupkg ${{secrets.MYGET_TOKEN}} -Source https://www.myget.org/F/sixlabors/api/v2/package |
|
|
|
nuget.exe push .\artifacts\*.snupkg ${{secrets.MYGET_TOKEN}} -Source https://www.myget.org/F/sixlabors/api/v3/index.json |
|
|
|
dotnet nuget push .\artifacts\*.nupkg -k ${{secrets.MYGET_TOKEN}} -s https://www.myget.org/F/sixlabors/api/v2/package |
|
|
|
dotnet nuget push .\artifacts\*.snupkg -k ${{secrets.MYGET_TOKEN}} -s https://www.myget.org/F/sixlabors/api/v3/index.json |
|
|
|
# TODO: If github.ref starts with 'refs/tags' then it was tag push and we can optionally push out package to nuget.org |
|
|
|
|