Pipeline Shell Script Permission Issue on .NET Build Attempt

妖精的绣舞 提交于 2019-12-13 12:46:58

问题


I am trying to build an ASP.NET5 application via Bluemix Pipeline using a shell script to configure a runtime that supports .NET builds with DNVM. When building the application we need to get dependencies from Mono 4.0 (such as kestrel) but the latest Mono available via apt-get is 3.2. I tried to resolve this by adding the Mono deb repository in /etc/apt/sources.list so that an apt-get update would fetch the latest Mono package but due to a permission error we are not allowed to alter sources.list nor add or alter any files in /etc/apt/sources.list.d/*.

For example, running:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
sudo echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo -i tee /etc/apt/sources.list.d/mono-xamarin.list

Will result in:

sudo: no tty present and no askpass program specified

Not using sudo will give a permission issue and I think we have exhausted all possible workarounds such as ssh -t -t and forth.

Does anyone have any suggestions on a workaround for this or an alternative method to run a shell script where a .NET build with DNVM and all dependencies would be supported? Using another language or cf push in this case is not an option, we really want to push .NET through pipeline at any cost.


回答1:


When experimenting with the pipeline I wasn't able to get it working with Mono either, but if you can get away with just the CoreCLR on Linux then you should be able to. Kestrel, for example, doesn't require Mono anymore.

This was a build script from the beta7 timeframe but it should be close to what's needed to use RC1 now:

#!/bin/bash

sudo apt-get update
sudo apt-get -y install libunwind8 gettext libssl-dev libcurl3-dev zlib1g

curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
dnvm install 1.0.0-beta7 -r coreclr -a x64

cd src/dotnetstarter
dnu restore
dnu build

cd ../../test/dotnetstarter.tests
dnu restore
dnu build
dnx test

cd ../../src/dotnetstarter
dnu publish --runtime ~/.dnx/runtimes/dnx-coreclr-linux-x64.1.0.0-beta7

The app was https://github.com/IBM-Bluemix/asp.net5-helloworld and I added the dotnetstarter.tests project which I was trying to run in the pipeline (the dnx test step). The last publish step isn't required but is included to show it was working.




回答2:


Thanks to opiethehokie, this is the working script:

#!/bin/bash

echo --- UPDATING DEPENDENCIES! ---

sudo apt-get update

echo --- DOWNLOADING PACKAGES! ---

sudo apt-get -y install libunwind8 gettext libssl-dev libcurl3-dev zlib1g libcurl4-openssl-dev libicu-dev uuid-dev

echo --- DOWNLOADING DNVM! ---

curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh

echo --- INSTALLING DNVM! ---

dnvm install 1.0.0-rc1-final -r coreclr -a x64

echo --- EXECUTING RESTORE! ---

cd /path-to-project-folder
dnu restore

echo --- EXECUTING BUILD! ---

dnu build

echo --- PUBLISH BUILD (OPTIONAL)! ---

dnu publish --runtime ~/.dnx/runtimes/dnx-coreclr-linux-x64.1.0.0-*`


来源:https://stackoverflow.com/questions/35501524/pipeline-shell-script-permission-issue-on-net-build-attempt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!