У меня есть приложение ASP.NET Core. Он использует Глоток, среди прочего, для преобразования Sass в CSS. Я уже изменил свой файл .csproj, чтобы задачи Gulp выполнялись до publish. Это сделано для того, чтобы у меня были все мои JS и CSS в артефактах.
<Target Name = "PrePublishScript" BeforeTargets = "PrepareForPublish">
<Exec Command = "npm install" />
<Exec Command = "gulp" />
</Target>
Вот мой файл конвейера BitBucket:
pipelines:
branches:
master:
- step:
name: Build
image: microsoft/dotnet:sdk
caches:
- dotnetcore
script:
- export PROJECT_NAME=YeGods.sln
- dotnet restore
- dotnet build $PROJECT_NAME
- dotnet publish $PROJECT_NAME --configuration Release --output dist --verbosity minimal
artifacts:
- YeGods.Web/dist/**
- step:
name: Deploy
image: alpine:3.8
script:
- apk add --update openssh
- ssh deploy@$SERVER_HOST 'bash -s' < $BITBUCKET_CLONE_DIR/pre-deploy-script.sh
- scp -r YeGods.Web/dist/* deploy@$SERVER_HOST:$SERVER_PATH_TO_SITE_DIRECTORY
- ssh deploy@$SERVER_HOST 'bash -s' < $BITBUCKET_CLONE_DIR/post-deploy-script.sh
В настоящее время это не удается, потому что вызов сценария npm install завершается неудачно, поскольку в образе microsoft/dotnet:sdk не установлен NodeJS. Я подозреваю, что все, что мне нужно сделать, это установить NodeJS в другом вызове сценария до этого - export PROJECT_NAME=YeGods.sln. Я добавил apt-get install nodejs, но это не сработало. Он сказал, что не может найти nodejs.
Если какой образ мышления верен, как правильно установить NodeJS в образ microsoft/dotnet:sdk?





У меня есть статья именно по этой проблеме, вот краткое изложение:
Вам нужен образ докера, в котором также установлены dotnet и node. Это легко сделать, расширив официальные образы dotnet от Microsoft, установив nodejs. Но вам нужно знать, как пользоваться докером.
Это может быть хорошей возможностью изучить докер, если вы еще этого не сделали, в Интернете доступно множество руководств.
Я делал это раньше и загрузил свой образ докера в концентратор докеров, чтобы конвейеры могли его использовать. Он общедоступен на dockerhub, но вам действительно не следует использовать изображения людей, которые не доверяют, но если вы все же хотите протестировать, измените image: microsoft/dotnet:sdk на image:peterekepeter/dotnet-node-sdk:latest
Вот пример Dockerfile, как взять образ dotnet и установить на него nodejs:
FROM microsoft/dotnet:2-sdk
# install nodejs for building & testing frontend
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get -y install nodejs
RUN node -v
Выделите сборку внешнего интерфейса на отдельный этап конвейеров и запустите задачи gulp на образе докера, на котором установлен nodejs. Если между двумя этапами есть зависимости построения, сохраните их с помощью артефактов.
Но для этого вам нужно изменить сценарии сборки, удалить команду gulp из проекта csproj и запустить их как часть сценария конвейеров.
Вот пример того, как это сделать:
pipelines:
default:
- step:
name: .NET Core build & test
image: microsoft/dotnet:2-sdk
caches:
- dotnetcore
script:
- dotnet restore
- dotnet build --no-restore
- dotnet test --no-build --no-restore
- step:
name: Frontend build & test
image: node:6.9.4
caches:
- node
script:
- npm install
- npm run build
- npm run test