pipeline { agent any stages { stage("Install") { steps { sh '''#!/bin/bash # Installing .NET environment # According to https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script#examples # and https://learn.microsoft.com/en-us/dotnet/core/install/linux-scripted-manual#scripted-install curl -L -o- https://dot.net/v1/dotnet-install.sh | bash -s -- --channel 8.0 echo \'export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1\' >> ~/.profile echo \'export DOTNET_ROOT=$HOME/.dotnet\' >> ~/.profile echo \'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools\' >> ~/.profile # Installing Node Version Manager # According to https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash ''' sh '''#!/bin/bash source ~/.profile nvm install 20.15.1 nvm use default # Restore all projects dotnet restore Props/Props.csproj dotnet restore Props.Tests/Props.Tests.csproj dotnet restore Props.Shop/Props.Shop.sln npm install --prefix ./Props ''' } } stage("Props.Shop") { stages { stage("Test") { steps { sh '''#!/bin/bash source ~/.profile dotnet test --logger xunit --no-restore Props.Shop/Props.Shop.sln ''' xunit([xUnitDotNet(excludesPattern: '', pattern: 'Props.Shop/*.Tests/TestResults/*.xml', stopProcessingIfError: true)]) } } stage("Publish") { steps { sh '''#!/bin/bash source ~/.profile dotnet publish --configuration Release --output output/shop-modules Props.Shop/Props.Shop.sln ''' fingerprint 'output/shop-modules/**/Props.Shop.*' sh '''#!/bin/bash source ~/.profile cp ./Props.Shop/output/shop-modules/**/*.dll ./Props.Shop/output/shop-modules/**/*.deps.json ./Props/shops/. ''' } } } } stage("Props") { stages { stage("Test") { steps { sh '''#!/bin/bash source ~/.profile dotnet test --logger xunit --no-restore Props.Tests ''' xunit([xUnitDotNet(excludesPattern: '', pattern: 'Props.Tests/TestResults/*.xml', stopProcessingIfError: true)]) } } stage("Publish") { steps { sh '''#!/bin/bash source ~/.profile dotnet publish --configuration Release --output output/props/props-linux-x64 --runtime linux-x64 --self-contained Props dotnet publish --configuration Release --output output/props/props-win-x64 --runtime win-x64 --self-contained Props ''' fingerprint 'output/props/**/Props*' tar file: "output/props-linux-x64.tar.gz", archive: true, compress: true, dir: "output/props/props-linux-x64" zip zipFile: "output/props-win-x64.zip", archive: true, dir: "output/props/props-win-x64" } } } } } }