.NET Build Attempt

时间:2016-02-19 09:16:21

标签: bash debian pipeline

我正在尝试使用shell脚本通过Bluemix Pipeline构建一个ASP.NET5应用程序,以配置支持使用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。

2 个答案:

答案 0 :(得分:1)

在尝试使用管道时,我也无法使用Mono,但是如果你能在Linux上使用CoreCLR,那么你应该可以。例如,红隼不再需要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测试步骤)。最后一个发布步骤不是必需的,但包含在内以表明它正在运行。

答案 1 :(得分:0)

感谢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-*`