diff --git a/Dockerfile b/Dockerfile index 7118a39..d09bbe2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:current-stretch-slim +FROM node:current-stretch ADD entrypoint.sh /entrypoint.sh ADD action.yml /action.yml diff --git a/README.md b/README.md index b226646..cf18382 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ The inputs this action uses are: | `install_command` | `false` | Auto-detected | The (optional) command to install dependencies. Runs `yarn` when `yarn.lock` is found; `npm i` otherwise | | `build_command` | `false` | `npm run build` | The (optional) command to build static website | | `deploy_alias` | `false` | '' | (Optional) [Deployed site alias](https://cli.netlify.com/commands/deploy) | +| `node_version` | `false` | '' | (Optional) Node version or other arguments passed to [nvm install](https://github.com/nvm-sh/nvm#usage) | ## Example @@ -134,3 +135,15 @@ jobs: state: success target_url: https://${{ env.BRANCH_NAME }}--my-site.netlify.app ``` + +### Selecting node version + +By default, the latest node will be installed before building the application. + +Use the `node_version` input to change the desired version. It will be passed to [`nvm install`](https://github.com/nvm-sh/nvm#usage). Valid examples include `16.3.0`, `14`, or `--lts`. + +Alternatively, create an `.nvmrc` file with the desired version range in your repository. + +## Contributors + +- [tpluscode](https://github.com/tpluscode) diff --git a/action.yml b/action.yml index d810805..1c2fbb9 100644 --- a/action.yml +++ b/action.yml @@ -42,12 +42,17 @@ inputs: description: 'Command to build static website' required: false default: 'npm run build' - + deploy_alias: description: 'Deployment Subdomain name' required: false default: '' + node_version: + description: 'Node version or arguments compatible with `nvm install`' + required: false + default: '' + runs: using: 'docker' image: 'Dockerfile' @@ -60,6 +65,7 @@ runs: - ${{ inputs.install_command }} - ${{ inputs.build_command }} - ${{ inputs.deploy_alias }} + - ${{ inputs.node_version }} branding: icon: activity diff --git a/entrypoint.sh b/entrypoint.sh index ecd7fa6..ac014da 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,7 +1,17 @@ #!/bin/bash +# Install netlify globally before NVM to prevent EACCESS issues npm i -g netlify-cli +# Save its exec path to run later +NETLIFY_CLI=$(which netlify) + +# Install node from NVM to honor .nvmrc files +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash +[ -s "$HOME/.nvm/nvm.sh" ] && \. "$HOME/.nvm/nvm.sh" + +nvm install "$9" + NETLIFY_AUTH_TOKEN=$1 NETLIFY_SITE_ID=$2 NETLIFY_DEPLOY_TO_PROD=$3 @@ -29,7 +39,7 @@ eval ${BUILD_COMMAND:-"npm run build"} export NETLIFY_SITE_ID=$NETLIFY_SITE_ID export NETLIFY_AUTH_TOKEN=$NETLIFY_AUTH_TOKEN -COMMAND="netlify deploy --dir=$BUILD_DIRECTORY --functions=$FUNCTIONS_DIRECTORY --message=\"$INPUT_NETLIFY_DEPLOY_MESSAGE\"" +COMMAND="$NETLIFY_CLI deploy --dir=$BUILD_DIRECTORY --functions=$FUNCTIONS_DIRECTORY --message=\"$INPUT_NETLIFY_DEPLOY_MESSAGE\"" if [[ $NETLIFY_DEPLOY_TO_PROD == "true" ]] then