2626 PackageOutputDir : " .packages"
2727 Prerelease : ${{ github.event.inputs.prerelease || 'false' }}
2828 PushPackage : ${{ (github.event_name == 'push' && github.ref == 'refs/heads/master') || github.event.inputs.push }}
29+ NpmTokenExists : ${{ secrets.NPM_TOKEN != '' }}
30+ Platforms : " linux-x64 linux-musl-x64 osx-x64 osx-arm64 win-x64"
2931
3032 steps :
3133 - uses : actions/checkout@v4
3739 with :
3840 dotnet-version : 9.0.x
3941
42+ - name : Setup Node.js
43+ uses : actions/setup-node@v4
44+ with :
45+ node-version : 20
46+
4047 - name : Install GitVersion
4148 uses : gittools/actions/gitversion/setup@v3.0.0
4249 with :
@@ -46,27 +53,62 @@ jobs:
4653 run : |
4754 ${GITVERSION_PATH}/dotnet-gitversion /output buildserver /output json
4855
49- - name : Pack
56+ - name : Pack Nuget
5057 run : |
5158 dotnet pack --nologo -o ${PackageOutputDir} \
5259 -p:PackageVersion=${GitVersion_SemVer} \
53- -p:AssemblyVersion=${GitVersion_AssemblySemFileVer} \
5460 -p:FileVersion=${GitVersion_MajorMinorPatch} \
5561 -p:AssemblyVersion=${GitVersion_AssemblySemVer} \
5662 -p:FileVersion=${GitVersion_MajorMinorPatch} \
5763 -p:Configuration=Release
5864
65+ - name : Pack Npm
66+ run : |
67+ ROOT=$(pwd)
68+ cd src/ApiCodeGenerator.Npm
69+ npm install
70+ npm version ${GitVersion_FullSemVer} --no-git-tag-version
71+ npm run pack-ci -- ${ROOT}/${PackageOutputDir}
72+
73+ - name : Pack Npm Binaries
74+ run : |
75+ ROOT=$(pwd)
76+ for PLATFORM in ${{ env.Platforms }}; do
77+ echo "Building for platform: $PLATFORM"
78+ dotnet publish src/ApiCodeGenerator.MSBuild \
79+ -c Release \
80+ -f net8.0 \
81+ -r $PLATFORM \
82+ --self-contained \
83+ -p:PublishTrimmed=false \
84+ -o ./bin/publish/$PLATFORM
85+
86+ # Create tgz archive with platform name only
87+ cd ./bin/publish/$PLATFORM
88+ tar -czf $ROOT/${PackageOutputDir}/${PLATFORM}.tgz *
89+ cd $ROOT
90+
91+ echo "Created archive: ${PLATFORM}.tgz"
92+ done
93+
5994 - name : Nuget Push
6095 if : env.PushPackage == 'true'
6196 working-directory : ${{ env.PackageOutputDir }}
6297 run : dotnet nuget push *.nupkg -s https://api.nuget.org/v3/index.json -k ${{secrets.NUGET_API_KEY}}
6398
99+ - name : Npm Push
100+ if : env.PushPackage == 'true' && env.NpmTokenExists == 'true'
101+ uses : JS-DevTools/npm-publish@v4
102+ with :
103+ token : ${{ secrets.NPM_TOKEN }}
104+ package : ${{ env.PackageOutputDir }}
105+
64106 - name : Create Release
65107 uses : ncipollo/release-action@v1
66108 with :
67109 name : v${{ env.GitVersion_SemVer }}
68110 tag : v${{ env.GitVersion_SemVer }}
69- artifacts : ${{ env.PackageOutputDir }}/*.nupkg
111+ artifacts : ${{ env.PackageOutputDir }}/*.nupkg,${{ env.PackageOutputDir }}/*.tgz
70112 generateReleaseNotes : true
71113 commit : ${{ env.GitVersion_Sha}}
72114 prerelease : ${{ env.Prerelease }}
0 commit comments