It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Install NodeJS on the microsoft/dotnet:sdk docker image

Hello

In my ASP.NET Core, I am using Gulp to convert Sass to CSS and minify files ...etc.

In the build step, I need NodeJS present so that Gulp tasks can run.

How do I install NodeJS onto the ASP.NET Core image: microsoft/dotnet:sdk

Thank you.

1 answer

0 votes
devpartisan Atlassian Team Feb 12, 2019

Jwan,

One way answers your question precisely, but I don't recommend it. The official dockerfile indicates the image uses Debian (I happen to know the code word "stretch" means Debian). That means we can install Node using the Debian package manager:

curl -sL https://deb.nodesource.com/setup_11.x | bash -
apt-get install -y nodejs

What I would recommend instead is using 2 different images. Do the Gulp tasks in 1 Pipeline step using a Node image, pass the resulting files as "artifacts", and then perform the .NET work. That might look something like this (don't read too much into the directory structures, change to fit your case):

pipelines:
  default:
    - step:
        name: Gulp the JavaScript
        image: node:11.9.0
        caches:
          - node
        script:
          - npm install
          - gulp
        artifacts: # defining the artifacts to be passed to each future step.
          - dist/**
          - reports/*.txt
    - step:
        name: Dotnet the Csharp
        image: microsoft/dotnet:2.2-sdk
        script:
          # using one of the artifacts from the previous step
          - cat reports/tests.txt
          - dotnet build someproject.sln

Note both images are pinned to a version. Major version numbers are breaking changes, so don't undermine the reliability of your build by pointing to "latest". I find minor and bugfix numbers also useful to pin because they can cause more subtle build problems. When you want to bump the version, put it on a branch, make the change, then merge only when you know it works.

Hope that helps.

Is this answer still valid?  I have a configured a similar pipeline but the artifacts from the first node step are not available in the second step which uses dotnet image.  Do the images between the steps have to be the same for this to work?

I have also tried the $BITBUCKET_PIPE_STORAGE_DIR and $BITBUCKET_PIPE_SHARED_STORAGE_DIR but those don't seem to work either.  They both point to /root when I cd to their locations.

Thanks.

Suggest an answer

Log in or Sign up to answer
TAGS
Community showcase
Published in Bitbucket Pipelines

What We Learned When We Researched Open Source Vulnerabilities in 7 Popular Coding Languages

...hey are a part of us, shaping how we interact with the world around us. The same holds true for programming languages when we think about how different kinds of vulnerabilities raise their heads in t...

1,042 views 0 3
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you