Skip to content

Build

Build #437

Workflow file for this run

name: Build
on:
push:
# branches:
# - main
tags:
- '*'
paths-ignore:
- README.md
- '**/README.md'
- LICENSE
- CHANGELOG.md
- docs/**
pull_request:
branches:
- main
paths-ignore:
- README.md
- '**/README.md'
- LICENSE
- CHANGELOG.md
- docs/**
workflow_dispatch:
schedule:
- cron: '0 1 * * *' # daily at 1am UTC
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
jobs:
Build:
runs-on: ubuntu-latest
name: Build
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for GitVersion
- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v3
with:
versionSpec: '6.x'
- name: Determine Version
uses: gittools/actions/gitversion/execute@v3
id: gitversion
with:
useConfigFile: true
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.x
- name: Install dependencies
run: dotnet restore
- name: Build
run: >
dotnet build
--configuration Release
--no-restore
-p:VersionPrefix=${{ steps.gitversion.outputs.fullSemVer }}
- name: Test
run: dotnet test --configuration Release --no-build
- name: Pack
run: >
dotnet pack
--configuration Release
--no-build
--output ${{ github.workspace }}/drop
-p:PackageVersion=${{ steps.gitversion.outputs.fullSemVer }}
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
path: ${{ github.workspace }}/drop/*
name: drop
retention-days: 1
# TODO: remove support for Azure Artifacts once we have migrated all packages to GitHub Packages
AzureArtifacts:
runs-on: ubuntu-latest
needs: Build
name: Publish (Azure Artifacts)
if: ${{ (github.ref == 'refs/heads/main') || startsWith(github.ref, 'refs/tags') }}
steps:
- uses: actions/download-artifact@v4
with:
name: drop
path: ${{ github.workspace }}/drop
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: '9.x'
source-url: "https://pkgs.dev.azure.com/tingle/_packaging/tingle/nuget/v3/index.json"
env:
NUGET_AUTH_TOKEN: ${{ secrets.PRIVATE_FEED_API_KEY }}
- name: Publish to pkgs.dev.azure.com/tingle
run: >
dotnet nuget push "${{ github.workspace }}/drop/*"
-k ${{ secrets.PRIVATE_FEED_API_KEY }}
--skip-duplicate
GitHubPackages:
runs-on: ubuntu-latest
needs: Build
name: Publish (GitHub Packages)
if: ${{ (github.ref == 'refs/heads/main') || startsWith(github.ref, 'refs/tags') }}
steps:
- uses: actions/download-artifact@v4
with:
name: drop
path: ${{ github.workspace }}/drop
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: '9.x'
source-url: https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json
env:
NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish to nuget.pkg.github.com
run: >
dotnet nuget push "${{ github.workspace }}/drop/*"
-k ${{ secrets.GITHUB_TOKEN }}
--skip-duplicate
NugetOrg:
runs-on: ubuntu-latest
needs: [AzureArtifacts, GitHubPackages]
name: Publish (Nuget.org)
if: ${{ startsWith(github.ref, 'refs/tags') }}
steps:
- uses: actions/download-artifact@v4
with:
name: drop
path: ${{ github.workspace }}/drop
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.x
source-url: https://api.nuget.org/v3/index.json
env:
NUGET_AUTH_TOKEN: ${{ secrets.NUGET_API_KEY }}
- name: Publish to NuGet.org
if: startsWith(github.ref, 'refs/tags/')
run: >
dotnet nuget push "${{ github.workspace }}/drop/*"
-k ${{ secrets.NUGET_API_KEY }}
--skip-duplicate