.NET 构建尝试的管道 Shell 脚本权限问题

Pipeline Shell Script Permission Issue on .NET Build Attempt

我正在尝试通过 Bluemix Pipeline 构建一个 ASP.NET5 应用程序,使用 shell 脚本配置一个 运行time 以支持使用 DNVM 进行 .NET 构建。在构建应用程序时,我们需要从 Mono 4.0(例如 kestrel)获取依赖项,但通过 apt-get 可用的最新 Mono 是 3.2。我试图通过在 /etc/apt/sources.list 中添加 Mono deb 存储库来解决这个问题,这样 apt-get update 将获取最新的 Mono 包,但由于权限错误,我们不允许更改 sources.list 或添加或更改 /etc/apt/sources.list.d/*.

中的任何文件

例如,运行宁:

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

将导致:

sudo: no tty present and no askpass program specified

不使用 sudo 会导致权限问题,我认为我们已经用尽了所有可能的解决方法,例如 ssh -t -t 等等。

有没有人对此有任何解决方法或 运行 shell 脚本的替代方法的建议,其中支持使用 DNVM 和所有依赖项构建的 .NET?在这种情况下使用另一种语言或 cf push 不是一种选择,我们真的想不惜一切代价通过管道推动 .NET。

在试验管道时,我也无法让它与 Mono 一起工作,但如果你可以在 Linux 上只使用 CoreCLR,那么你应该可以。例如,Kestrel 不再需要 Mono。

这是来自 beta7 时间框架的构建脚本,但它应该接近现在使用 RC1 所需的内容:

#!/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

该应用程序是 https://github.com/IBM-Bluemix/asp.net5-helloworld,我在管道中添加了 dotnetstarter.tests 我试图 运行 的项目(dnx 测试步骤)。最后的发布步骤不是必需的,但包括在内以表明它正在运行。

感谢 opiethehokie,这是工作脚本:

#!/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-*`