Skip to content

Merge pull request #346 from SixLabors/dependabot/github_actions/acti… #585

Merge pull request #346 from SixLabors/dependabot/github_actions/acti…

Merge pull request #346 from SixLabors/dependabot/github_actions/acti… #585

name: Build
on:
push:
branches:
- main
tags:
- "v*"
pull_request:
branches:
- main
jobs:
Build:
strategy:
matrix:
options:
- os: ubuntu-latest
framework: net7.0
sdk-preview: true
runtime: -x64
codecov: false
- os: macos-latest
framework: net7.0
sdk-preview: true
runtime: -x64
codecov: false
- os: windows-latest
framework: net7.0
sdk-preview: true
runtime: -x64
codecov: true
- os: ubuntu-latest
framework: net6.0
runtime: -x64
codecov: false
- os: macos-latest
framework: net6.0
runtime: -x64
codecov: false
- os: windows-latest
framework: net6.0
runtime: -x64
codecov: false
runs-on: ${{matrix.options.os}}
steps:
- name: Git Config
shell: bash
run: |
git config --global core.autocrlf false
git config --global core.longpaths true
- name: Git Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
# See https://github.com/actions/checkout/issues/165#issuecomment-657673315
- name: Git Create LFS FileList
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id
- name: Git Setup LFS Cache
uses: actions/cache@v3
id: lfs-cache
with:
path: .git/lfs
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1
- name: Git Pull LFS
run: git lfs pull
- name: NuGet Install
uses: NuGet/setup-nuget@v1
- name: NuGet Setup Cache
uses: actions/cache@v3
id: nuget-cache
with:
path: ~/.nuget
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.props', '**/*.targets') }}
restore-keys: ${{ runner.os }}-nuget-
- name: Azurite Setup
if: matrix.options.os != 'windows-latest'
shell: bash
run: |
sudo npm install -g azurite
sudo azurite --loose &
- name: Azurite Setup Windows
if: matrix.options.os == 'windows-latest'
shell: bash
run: |
npm install -g azurite
azurite --loose &
- name: S3rver Setup
if: matrix.options.os != 'windows-latest'
shell: bash
run: |
sudo npm install -g s3rver
sudo s3rver -d . &
- name: S3rver Setup Windows
if: matrix.options.os == 'windows-latest'
shell: bash
run: |
npm install -g s3rver
s3rver -d . &
- name: DotNet Setup
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
7.0.x
6.0.x
- name: DotNet Build
if: ${{ matrix.options.sdk-preview != true }}
shell: pwsh
run: ./ci-build.ps1 "${{matrix.options.framework}}"
env:
SIXLABORS_TESTING: True
- 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.Web.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.Web.Tests # Required for xunit
- name: Codecov Update
uses: codecov/codecov-action@v3
if: matrix.options.codecov == true && startsWith(github.repository, 'SixLabors')
with:
flags: unittests
Publish:
needs: [Build]
runs-on: ubuntu-latest
if: (github.event_name == 'push')
steps:
- name: Git Config
shell: bash
run: |
git config --global core.autocrlf false
git config --global core.longpaths true
- name: Git Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: NuGet Install
uses: NuGet/setup-nuget@v1
- name: NuGet Setup Cache
uses: actions/cache@v3
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: Feedz Publish
shell: pwsh
run: |
dotnet nuget push .\artifacts\*.nupkg -k ${{secrets.FEEDZ_TOKEN}} -s https://f.feedz.io/sixlabors/sixlabors/nuget/index.json --skip-duplicate
dotnet nuget push .\artifacts\*.snupkg -k ${{secrets.FEEDZ_TOKEN}} -s https://f.feedz.io/sixlabors/sixlabors/symbols --skip-duplicate
- name: NuGet Publish
if: ${{ startsWith(github.ref, 'refs/tags/') }}
shell: pwsh
run: |
dotnet nuget push .\artifacts\*.nupkg -k ${{secrets.NUGET_TOKEN}} -s https://api.nuget.org/v3/index.json --skip-duplicate
dotnet nuget push .\artifacts\*.snupkg -k ${{secrets.NUGET_TOKEN}} -s https://api.nuget.org/v3/index.json --skip-duplicate