Skip to content

Always explicitly reference System.Text.Json dependencies (#278) #978

Always explicitly reference System.Text.Json dependencies (#278)

Always explicitly reference System.Text.Json dependencies (#278) #978

Workflow file for this run

name: Build
on:
push:
pull_request:
branches:
- main
- release-*
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
# 6.0 needed for GitVersion
dotnet-version: |
6.0.x
8.0.x
- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v1
with:
versionSpec: "5.12.0"
- name: Determine Version
id: gitversion
uses: gittools/actions/gitversion/execute@v1
with:
useConfigFile: true
configFilePath: "GitVersion.yml"
- uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Install dependencies
working-directory: ./src/main
run: dotnet restore
- name: Install SDK dependencies
working-directory: ./src/sdk
run: dotnet restore Yardarm.Sdk.sln
- name: Build
working-directory: ./src/main
run: dotnet build --configuration Release -p:Version=${{ steps.gitversion.outputs.nuGetVersionV2 }} --no-restore
- name: Test
working-directory: ./src/main
run: dotnet test --configuration Release --no-build --verbosity normal
- name: Build SDK
working-directory: ./src/sdk
run: dotnet build --configuration Release -p:Version=${{ steps.gitversion.outputs.nuGetVersionV2 }} --no-restore Yardarm.Sdk.sln
- name: Test Generate
run: ./scripts/generate.sh
- name: Pack
working-directory: ./src/main
run: dotnet pack --configuration Release -p:Version=${{ steps.gitversion.outputs.nuGetVersionV2 }} --no-build
# Note: SDK is packed by build above, doesn't need to be packed here
- name: Push to NuGet.org
if: ${{ startsWith(github.ref, 'refs/tags/release/') }}
working-directory: ./src
run: |
dotnet nuget push **/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
- name: Push to GitHub Packages
if: ${{ startsWith(github.ref, 'refs/pull/') || startsWith(github.ref, 'refs/tags/release/') }}
working-directory: ./src
run: |
dotnet nuget push **/*.nupkg --api-key ${{ secrets.GITHUB_TOKEN }} --source https://nuget.pkg.github.com/CenterEdge/index.json --skip-duplicate
docker:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
# 6.0 needed for GitVersion
dotnet-version: |
6.0.x
- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v1
with:
versionSpec: "5.12.0"
- name: Determine Version
id: gitversion
uses: gittools/actions/gitversion/execute@v1
with:
useConfigFile: true
configFilePath: "GitVersion.yml"
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ghcr.io/centeredge/yardarm
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}},value=${{ steps.gitversion.outputs.nuGetVersionV2 }}
type=sha
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5
with:
context: .
build-args: VERSION=${{ steps.gitversion.outputs.nuGetVersionV2 }}
push: ${{ startsWith(github.ref, 'refs/tags/release/') }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max