From 51c3544718f751dbba4ece9aec39c53fab524c88 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 7 Aug 2019 12:04:06 +0200 Subject: [PATCH] Deprecate Node 8 The support ends on December 2019: https://github.com/nodejs/Release#release-schedule --- README.md | 2 +- server.ts | 4 +++- server/initializers/checker-before-init.ts | 16 +++++++++++++++- server/tests/api/ci-3.sh | 2 +- support/doc/dependencies.md | 8 ++++---- support/doc/tools.md | 4 ++-- support/docker/dev/Dockerfile | 2 +- support/docker/production/Dockerfile.stretch | 2 +- 8 files changed, 28 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 5de29a067..29478b085 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,7 @@ Feel free to reach out if you have any questions or ideas! :speech_balloon: * nginx * **PostgreSQL >= 9.6** * **Redis >= 2.8.18** - * **NodeJS >= 8.x** + * **NodeJS >= 10.x** * **yarn >= 1.x** * **FFmpeg >= 3.x** diff --git a/server.ts b/server.ts index abfeeed2e..6896add34 100644 --- a/server.ts +++ b/server.ts @@ -26,7 +26,7 @@ process.title = 'peertube' const app = express() // ----------- Core checker ----------- -import { checkMissedConfig, checkFFmpeg } from './server/initializers/checker-before-init' +import { checkMissedConfig, checkFFmpeg, checkNodeVersion } from './server/initializers/checker-before-init' // Do not use barrels because we don't want to load all modules here (we need to initialize database first) import { CONFIG } from './server/initializers/config' @@ -45,6 +45,8 @@ checkFFmpeg(CONFIG) process.exit(-1) }) +checkNodeVersion() + import { checkConfig, checkActivityPubUrls } from './server/initializers/checker-after-init' const errorMessage = checkConfig() diff --git a/server/initializers/checker-before-init.ts b/server/initializers/checker-before-init.ts index c94bca2f8..55bc820f5 100644 --- a/server/initializers/checker-before-init.ts +++ b/server/initializers/checker-before-init.ts @@ -1,5 +1,6 @@ import * as config from 'config' import { promisify0 } from '../helpers/core-utils' +import { logger } from '../helpers/logger' // ONLY USE CORE MODULES IN THIS FILE! @@ -109,10 +110,23 @@ async function checkFFmpegEncoders (): Promise> { return supportedOptionalEncoders } +function checkNodeVersion () { + const v = process.version + const majorString = v.split('.')[0].replace('v', '') + const major = parseInt(majorString, 10) + + logger.debug('Checking NodeJS version %s.', v) + + if (major < 10) { + logger.warn('Your NodeJS version %s is deprecated. Please use Node 10.', v) + } +} + // --------------------------------------------------------------------------- export { checkFFmpeg, checkFFmpegEncoders, - checkMissedConfig + checkMissedConfig, + checkNodeVersion } diff --git a/server/tests/api/ci-3.sh b/server/tests/api/ci-3.sh index f6bb8a83e..7aeea7fcb 100644 --- a/server/tests/api/ci-3.sh +++ b/server/tests/api/ci-3.sh @@ -4,5 +4,5 @@ set -eu videosFiles=$(find server/tests/api/videos -type f | grep -v index.ts | xargs echo) -MOCHA_PARALLEL=true npm run mocha -- --timeout 30000 --exit --require ts-node/register --bail \ +npm run mocha -- --timeout 30000 --exit --require ts-node/register --bail \ $videosFiles diff --git a/support/doc/dependencies.md b/support/doc/dependencies.md index 6d33f934a..7255f1331 100644 --- a/support/doc/dependencies.md +++ b/support/doc/dependencies.md @@ -26,7 +26,7 @@ 3. Install certbot (choose instructions for nginx and your distribution) : [https://certbot.eff.org/all-instructions](https://certbot.eff.org/all-instructions) - 4. Install NodeJS 8.x: + 4. Install NodeJS 10.x: [https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions](https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions) 5. Install yarn, and be sure to have [a recent version](https://github.com/yarnpkg/yarn/releases/latest): [https://yarnpkg.com/en/docs/install#linux-tab](https://yarnpkg.com/en/docs/install#linux-tab) @@ -66,7 +66,7 @@ $ sudo systemctl start redis postgresql ## CentOS 7 - 1. Install NodeJS 8.x: + 1. Install NodeJS 10.x: [https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora](https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora) 2. Install yarn: [https://yarnpkg.com/en/docs/install](https://yarnpkg.com/en/docs/install) @@ -121,7 +121,7 @@ su my-peertube-user ``` 2. (Optional) Install certbot (choose instructions for nginx and your distribution) : [https://certbot.eff.org/all-instructions](https://certbot.eff.org/all-instructions) -3. Install NodeJS 8.x: +3. Install NodeJS 10.x: [https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora](https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora) 4. Install yarn: [https://yarnpkg.com/en/docs/install](https://yarnpkg.com/en/docs/install) @@ -155,7 +155,7 @@ sudo systemctl start redis.service ``` 8. Firewall -By default, you cannot acces your server via public IP. To do so, you must configure firewall: +By default, you cannot access your server via public IP. To do so, you must configure firewall: ``` # Ports used by peertube dev setup sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp diff --git a/support/doc/tools.md b/support/doc/tools.md index e0f02173e..cf427ec84 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md @@ -36,7 +36,7 @@ You need to follow all the following steps even if you are on a PeerTube server ### Dependencies Install the [PeerTube dependencies](dependencies.md) except PostgreSQL and Redis. -PeerTube only supports NodeJS 8.x or 10.x. +PeerTube only supports NodeJS 10.x. ### Installation @@ -280,7 +280,7 @@ To uninstall a plugin or a theme: $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run npm run plugin:uninstall -- --npm-name peertube-plugin-myplugin ``` -### REPL ([Read Eval Print Loop](https://nodejs.org/docs/latest-v8.x/api/repl.html)) +### REPL ([Read Eval Print Loop](https://nodejs.org/docs/latest-v10.x/api/repl.html)) If you want to interact with the application libraries and objects even when PeerTube is not running, there is a REPL for that. diff --git a/support/docker/dev/Dockerfile b/support/docker/dev/Dockerfile index 8e049f3f6..991cf05e2 100644 --- a/support/docker/dev/Dockerfile +++ b/support/docker/dev/Dockerfile @@ -17,7 +17,7 @@ RUN apt-get update -q && apt-get install -qy \ postgresql \ postgresql-contrib \ redis-server \ - && curl -sL https://deb.nodesource.com/setup_8.x | bash - \ + && curl -sL https://deb.nodesource.com/setup_10.x | bash - \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \ && apt-get update \ diff --git a/support/docker/production/Dockerfile.stretch b/support/docker/production/Dockerfile.stretch index c653233b6..b6de4bd9b 100644 --- a/support/docker/production/Dockerfile.stretch +++ b/support/docker/production/Dockerfile.stretch @@ -1,4 +1,4 @@ -FROM node:8-stretch +FROM node:10-stretch # Allow to pass extra options to the npm run build # eg: --light --light-fr to not build all client languages -- 2.41.0