Example project with Node.js, TypeScript and React#
Semaphore provides a tutorial and demo application with a working CI pipeline that you can use to get started quickly:
Supported Node.js versions#
Semaphore supports all versions of Node.js. You have the following options:
- Linux: Node.js is available out-of-the-box in the Ubuntu 18.04 VM image.
- macOS: Node.js is available out-of-the-box in the macOS VM image.
- Docker: use semaphoreci/node or your own Docker image with the version of Node.js and other packages that you need.
Follow the links above for details on currently available language versions and additional tools.
Selecting a Node.js version on Linux#
On Linux, Semaphore uses nvm to manage Node.js
versions. Any version installable with
nvm is supported by Semaphore.
The version of Node.js that will be used can be set from a
.nvmrc file if
such a file exists in your repository. If you want to make use of the
file you will need to run
nvm use so you can actually tell nvm to set the
node version specified within the
Alternatively, you can change the Node.js version by calling
Here's an example:
blocks: - name: Tests task: prologue: commands: - sem-version node 10.13.0 jobs: - name: Tests commands: - node --version
If you need a version other than the preinstalled versions, then you
can install it with
nvm. Here's an example:
blocks: - name: Tests task: prologue: commands: - nvm install --lts carbon - sem-version node --lts carbon jobs: - name: Tests commands: - node --version
If the version of Node.js that you need is not currently available in the Linux VM, we recommend running your jobs in a custom Docker image.
You can use Semaphores
cache command to store and load
node_modules. In the following configuration example, we install dependencies
and warm the cache in the first block, then use the cache in subsequent blocks.
version: v1.0 name: First pipeline example agent: machine: type: e1-standard-2 os_image: ubuntu1804 blocks: - name: Install dependencies task: jobs: - name: npm install and cache commands: - checkout - cache restore - npm install - cache store - name: Tests task: prologue: commands: - checkout - cache restore jobs: - name: Everything commands: - npm test
If you need to clear cache for your project, launch a
cache clear or
cache delete <key>.
Yarn is supported#
Besides NPM, Semaphore also supports Yarn for managing Node.js dependencies.
To get started, use the configuration example above and replace
Semaphore doesn't set language specific environment variables like
NODE_ENV You should set these at the task level.
blocks: - name: Tests task: env_vars: - name: NODE_ENV value: test jobs: - name: Everything commands: - npm test
Refer to the Ubuntu image reference for details on pre-installed browsers and testing tools on Semaphore.