Skip to content

Update workflow template. #11

Update workflow template.

Update workflow template. #11

Workflow file for this run

# build.yml v1.5
# 1.5:
# - Use bash syntax
# - Avoid set-output
# - Updates: actions/cache@v3, actions/checkout@v3, actions/upload-artifact@v3, codecov/codecov-action@v3, WyriHaximus/github-action-get-previous-tag@v1
# - Work around SDK bug (https://github.com/dotnet/sdk/issues/17461)
# - Use pre-release ProjProps.
# 1.4 - Avoid set-env.
# 1.3 - Include tag workflow in this file.
# 1.2 - Define DOTNET_SKIP_FIRST_TIME_EXPERIENCE/NUGET_XMLDOC_MODE.
# 1.1 - Use actions/cache@v2.
# 1.0 - Initial release.
name: Build
on:
- push
env:
CI: 'true'
DOTNET_CLI_TELEMETRY_OPTOUT: 'true'
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 'true'
NUGET_XMLDOC_MODE: 'skip'
MSBuildEnableWorkloadResolver: 'false' # Work around SDK bug https://github.com/dotnet/sdk/issues/17461
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Dump context
env:
CONTEXT: ${{ toJson(github) }}
run: |
echo "Context is available above"
- name: Determine cache fallbacks
if: github.event_name != 'push'
id: cache_fallbacks
run: |
echo "name=nuget::nuget-" >> $GITHUB_OUTPUT
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0 # Required by WyriHaximus/github-action-get-previous-tag@v1
- name: Cache nuget
uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: nuget-${{ hashFiles('**/*.csproj') }}-${{ hashFiles('**/*.props') }}
restore-keys: ${{ steps.cache_fallbacks.outputs.nuget }}
- name: Get existing tag
id: existingtag
uses: WyriHaximus/github-action-get-previous-tag@v1
continue-on-error: true
- name: Get current version
run: |
dotnet tool install --global Nito.ProjProps --version 2.0.0-pre01
echo "NEWTAG=v$(projprops --name version --project src)"
echo "NEWTAG=v$(projprops --name version --project src)" >> $GITHUB_ENV
- name: Build
run: |
dotnet build --configuration Release
dotnet test --configuration Release --no-build --collect:"XPlat Code Coverage"
dotnet pack --configuration Release --no-build
- name: Upload package artifacts
uses: actions/upload-artifact@v3
with:
name: nuget-packages
path: |
**/*.nupkg
**/*.snupkg
- name: Publish code coverage
uses: codecov/codecov-action@v3
- name: Publish packages
if: env.NEWTAG != steps.existingtag.outputs.tag
run: |
dotnet nuget push **/*.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{ secrets.NUGET_API_KEY }}
- name: Create tag
if: env.NEWTAG != steps.existingtag.outputs.tag
run: |
git tag ${{ env.NEWTAG }}
git push --tags