diff --git a/Jenkinsfile b/Jenkinsfile index b8b9dfd..63bbab3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,50 +1,33 @@ pipeline { - agent any + agent { + kubernetes { + defaultContainer 'conda' + } + } + 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 >> ~/.bashrc - echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc - echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc - # Installing Node Version Manager - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - - ''' - sh '''#!/bin/bash - 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 - ''' + sh 'conda env update -n base --file environment.yml' + sh 'dotnet restore Props/Props.csproj' + sh 'dotnet restore Props.Tests/Props.Tests.csproj' + sh 'dotnet restore Props.Shop/Props.Shop.sln' + sh 'npm install --prefix ./Props' } } stage("Props.Shop") { stages { stage("Test") { steps { - sh '''#!/bin/bash - dotnet test --logger xunit --no-restore Props.Shop/Adafruit.Tests/Props.Shop.Adafruit.Tests.csproj - ''' + sh 'dotnet test --logger xunit --no-restore Props.Shop/Adafruit.Tests/Props.Shop.Adafruit.Tests.csproj' xunit([xUnitDotNet(excludesPattern: '', pattern: 'Props.Shop/*.Tests/TestResults/*.xml', stopProcessingIfError: true)]) } } stage("Publish") { steps { - sh '''#!/bin/bash - dotnet publish --configuration Release --output output/shop-modules Props.Shop/Props.Shop.sln - ''' + sh 'dotnet publish --configuration Release --output output/shop-modules Props.Shop/Props.Shop.sln' fingerprint 'output/shop-modules/**/Props.Shop.*' - sh '''#!/bin/bash - cp ./Props.Shop/output/shop-modules/**/*.dll ./Props.Shop/output/shop-modules/**/*.deps.json ./Props/shops/. - ''' + sh 'cp ./Props.Shop/output/shop-modules/**/*.dll ./Props.Shop/output/shop-modules/**/*.deps.json ./Props/shops/.' } } } @@ -53,18 +36,14 @@ pipeline { stages { stage("Test") { steps { - sh '''#!/bin/bash - dotnet test --logger xunit --no-restore Props.Tests - ''' + sh 'dotnet test --logger xunit --no-restore Props.Tests' xunit([xUnitDotNet(excludesPattern: '', pattern: 'Props.Tests/TestResults/*.xml', stopProcessingIfError: true)]) } } stage("Publish") { steps { - sh '''#!/bin/bash - 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 - ''' + sh 'dotnet publish --configuration Release --output output/props/props-linux-x64 --runtime linux-x64 --self-contained Props' + sh '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" diff --git a/environment.yml b/environment.yml index 9944af0..b88ecc4 100644 --- a/environment.yml +++ b/environment.yml @@ -2,5 +2,5 @@ name: props channels: - conda-forge dependencies: - - dotnet-sdk=7.0.* + - dotnet-sdk=8.0.* - nodejs=18.12.* \ No newline at end of file