代码之家  ›  专栏  ›  技术社区  ›  J86

BitBucket管道:在microsoft/dotnet:sdk映像上为Gulp添加NodeJS

  •  0
  • J86  · 技术社区  · 7 年前

    吞咽 将Sass转换为CSS等等。我已经修改了我的密码 .csproj 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 - export PROJECT_NAME=YeGods.sln apt-get install nodejs 但那没用。它说找不到 nodejs .

    如果哪种思路是正确的,那么将NodeJS安装到服务器上的正确方法是什么 microsoft/dotnet:sdk 形象

    0 回复  |  直到 7 年前
        1
  •  2
  •   Peter Eke    7 年前

    I have an article on this exact issue ,以下是总结:

    解决方案1:

    您需要一个docker映像,它同时安装了dotnet和node。这可以通过安装nodejs来扩展微软的官方dotnet映像来轻松实现。但是你需要知道如何使用docker。

    这是一个学习docker的好机会,如果你还没有,网上有很多教程。

    image: microsoft/dotnet:sdk 到 image:peterekepeter/dotnet-node-sdk:latest

    下面是一个Dockerfile示例,说明如何获取dotnet映像并在其上安装NodeJ:

    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
    

    解决方案2:

    将前端构建分离到单独的管道步骤,并在安装了NodeJ的docker映像上运行gulp任务。如果您在这两个步骤之间建立了依赖关系,请使用工件来持久化它们。

    但要使其正常工作,您需要修改构建脚本,从csproj项目中删除gulp命令,并将其作为管道脚本的一部分运行。

    下面是一个如何执行此操作的示例:

    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