-
-
Notifications
You must be signed in to change notification settings - Fork 148
129 lines (108 loc) · 4.56 KB
/
Publish-Nuget.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
name: Nuget Publish
on:
push:
branches:
- main
paths:
- OpenAI-DotNet/**
- OpenAI-DotNet-Proxy/**
pull_request:
branches:
- '*'
paths:
- OpenAI-DotNet/**
- OpenAI-DotNet-Proxy/**
types:
- opened
- synchronize
workflow_dispatch:
inputs:
dotnet-version:
description: ".NET version to use"
required: false
default: "6.0.x"
env:
DOTNET_VERSION: ${{ github.event.inputs.dotnet-version || '6.0.x' }}
PACKAGE_VERSION: ''
jobs:
build:
if: ${{ !github.event_name == 'pull_request' || !github.event.pull_request.draft }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: dotnet restore
run: dotnet restore
- name: dotnet build
run: dotnet build --configuration Release --no-restore
- name: Test Packages
if: ${{ github.ref != 'refs/heads/main' && github.event_name != 'push' }}
run: dotnet test --configuration Release --logger "xunit;LogFilePath=test-results/results.xml" --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./coverage
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENAI_ORGANIZATION_ID: ${{ secrets.OPENAI_ORGANIZATION_ID }}
- name: Publish Test Results
if: ${{ github.ref != 'refs/heads/main' && github.event_name != 'push' && always() }}
uses: EnricoMi/publish-unit-test-result-action@v2
with:
files: "test-results/**/*.xml"
comment_mode: off
report_individual_runs: true
compare_to_earlier_commit: false
- name: Code Coverage Summary Report
if: ${{ github.ref != 'refs/heads/main' && github.event_name != 'push' && always() }}
uses: irongut/[email protected]
with:
filename: coverage/**/coverage.cobertura.xml
badge: true
format: 'markdown'
output: 'both'
- name: Write Coverage Job Summary
if: ${{ github.ref != 'refs/heads/main' && github.event_name != 'push' && always() }}
run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
- name: Pack and Publish NuGet Package
run: |
$projectPath = "${{ github.workspace }}\OpenAI-DotNet"
$proxyProjectPath = "${{ github.workspace }}\OpenAI-DotNet-Proxy"
# pack OpenAI-DotNet
dotnet pack $projectPath --configuration Release --include-symbols
$out = "$projectPath\bin\Release"
$packagePath = Get-ChildItem -Path $out -File -Include '*.nupkg' -Exclude '*symbols*' -Recurse -ErrorAction SilentlyContinue
if ($packagePath) {
Write-Host Package path: $packagePath
} else {
Write-Host Failed to find package at $out
exit 1
}
# pack OpenAI-DotNet-Proxy
dotnet pack $proxyProjectPath --configuration Release --include-symbols
$proxyOut = "$proxyProjectPath\bin\Release"
$proxyPackagePath = Get-ChildItem -Path $proxyOut -File -Include '*.nupkg' -Exclude '*symbols*' -Recurse -ErrorAction SilentlyContinue
if ($proxyPackagePath) {
Write-Host Package path: $proxyPackagePath
} else {
Write-Host Failed to find package at $proxyOut
exit 1
}
$isRelease = "${{ github.ref == 'refs/heads/main' }}"
if ($isRelease -eq 'true') {
dotnet nuget push $packagePath.FullName --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
dotnet nuget push $proxyPackagePath.FullName --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
}
$version = $packagePath.Name -replace "^OpenAI-DotNet.(.*).nupkg$",'$1'
echo "PACKAGE_VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
shell: pwsh
- uses: actions/upload-artifact@v3
if: always()
with:
name: OpenAI-DotNet.${{ env.PACKAGE_VERSION }}
path: |
${{ github.workspace }}/OpenAI-DotNet/bin/Release/OpenAI-DotNet.${{ env.PACKAGE_VERSION }}.nupkg
${{ github.workspace }}/OpenAI-DotNet/bin/Release/OpenAI-DotNet.${{ env.PACKAGE_VERSION }}.symbols.nupkg
${{ github.workspace }}/OpenAI-DotNet/bin/Release/OpenAI-DotNet-Proxy.${{ env.PACKAGE_VERSION }}.nupkg
${{ github.workspace }}/OpenAI-DotNet/bin/Release/OpenAI-DotNet-Proxy.${{ env.PACKAGE_VERSION }}.symbols.nupkg
if-no-files-found: ignore