Loading templates/gitlab-ci-node.yml +56 −13 Original line number Diff line number Diff line Loading @@ -48,12 +48,12 @@ variables: # Audit NODE_AUDIT_LEVEL: "low" NODE_AUDIT_ARGS: "--audit-level=$NODE_AUDIT_LEVEL" NODE_AUDIT_JSON_PATH: "reports/npm-audit-report.json" NODE_AUDIT_JSON_PATH: "reports/audit-report.json" # Outdated NODE_OUTDATED_ARGS: "--long" NODE_OUTDATED_SILENT: "true" NODE_OUTDATED_JSON_PATH: "reports/npm-outdated-report.json" NODE_OUTDATED_JSON_PATH: "reports/outdated-report.json" # default production ref name (pattern) PROD_REF: '/^(master|main)$/' Loading Loading @@ -95,9 +95,9 @@ stages: if [[ -n "$SONAR_URL" ]] then mkdir -p reports # generate eslint report in json for SONARqube # generate eslint report in json for SonarQube # shellcheck disable=SC2086 npm $NODE_LINT_ARGS -- --format=json --output-file=$NODE_LINT_REPORT_PATH $NODE_MANAGER $NODE_LINT_ARGS -- --format=json --output-file=$NODE_LINT_REPORT_PATH fi } Loading Loading @@ -229,6 +229,38 @@ stages: log_info "... done" } function guess_node_manager_system() { case "${NODE_MANAGER:-auto}" in auto) ;; npm) log_info "--- Build system explictly declared: npm" return ;; yarn) log_info "--- Build system explictly declared: yarn" return ;; *) log_warn "--- Unknown declared node manager system: \\e[33;1m${NODE_MANAGER}\\e[0m: please read template doc" ;; esac if [[ -f "package-lock.json" ]] then log_info "--- Build system auto-detected: npm" export NODE_MANAGER="npm" elif [[ -f "yarn.lock" ]] then log_info "--- Build system auto-detected: yarn" export NODE_MANAGER="yarn" else log_error "--- Node manager system auto-detect failed: please read template doc" exit 1 fi } unscope_variables # ENDSCRIPT Loading @@ -243,22 +275,31 @@ stages: cache: key: "$CI_COMMIT_REF_SLUG-node" paths: - $NODE_PROJECT_DIR/.npm/ - $NODE_PROJECT_DIR/.$NODE_MANAGER/ before_script: - *node-scripts - install_ca_certs "${CUSTOM_CA_CERTS:-$DEFAULT_CA_CERTS}" - guess_node_manager_system - cd ${NODE_PROJECT_DIR} # NPM_CONFIG_REGISTRY is not supported by old npm versions: force with cli - if [[ "$NPM_CONFIG_REGISTRY" ]]; then npm config set registry $NPM_CONFIG_REGISTRY; fi - npm ci --cache .npm --prefer-offline - if [[ "$CONFIG_REGISTRY" ]]; then $NODE_MANAGER config set registry $CONFIG_REGISTRY; fi - | case "$NODE_MANAGER" in npm) npm ci --cache .npm --prefer-offline ;; yarn) yarn install --immutable --immutable-cache --check-cache --cache-folder .yarn ;; esac node-build: extends: .node-base stage: build script: # launch unit test and code coverage - npm $NODE_TEST_ARGS - if [[ "$NODE_BUILD_DISABLED" != "true" ]]; then npm $NODE_BUILD_ARGS; fi - $NODE_MANAGER $NODE_TEST_ARGS - if [[ "$NODE_BUILD_DISABLED" != "true" ]]; then $NODE_MANAGER $NODE_BUILD_ARGS; fi coverage: '/^All files\s*\|\s*(\d+(?:\.\d+)?)/' artifacts: reports: Loading @@ -277,7 +318,7 @@ node-lint: # generate lint report for sonar - sonar_lint_report # display lint result for console - npm $NODE_LINT_ARGS - $NODE_MANAGER $NODE_LINT_ARGS artifacts: when: always # store artifact even if test Failed name: "$CI_JOB_NAME artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG" Loading @@ -303,7 +344,8 @@ node-audit: stage: test script: - mkdir -p reports - npm audit --json $NODE_AUDIT_ARGS | tee $NODE_AUDIT_JSON_PATH - $NODE_MANAGER audit --json $NODE_AUDIT_ARGS > $NODE_AUDIT_JSON_PATH - $NODE_MANAGER audit $NODE_AUDIT_ARGS artifacts: name: "$CI_JOB_NAME artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG" expire_in: 1 day Loading @@ -327,7 +369,8 @@ node-outdated: script: - set +e - mkdir -p reports - npm outdated --json $NODE_OUTDATED_ARGS | tee $NODE_OUTDATED_JSON_PATH || EXIT_CODE=$? - $NODE_MANAGER outdated --json $NODE_OUTDATED_ARGS > $NODE_OUTDATED_JSON_PATH - $NODE_MANAGER outdated $NODE_OUTDATED_ARGS || EXIT_CODE=$? - if [[ $NODE_OUTDATED_SILENT == "true" ]] && [[ $EXIT_CODE == 1 ]]; then exit 0; fi artifacts: name: "$CI_JOB_NAME artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG" Loading Loading
templates/gitlab-ci-node.yml +56 −13 Original line number Diff line number Diff line Loading @@ -48,12 +48,12 @@ variables: # Audit NODE_AUDIT_LEVEL: "low" NODE_AUDIT_ARGS: "--audit-level=$NODE_AUDIT_LEVEL" NODE_AUDIT_JSON_PATH: "reports/npm-audit-report.json" NODE_AUDIT_JSON_PATH: "reports/audit-report.json" # Outdated NODE_OUTDATED_ARGS: "--long" NODE_OUTDATED_SILENT: "true" NODE_OUTDATED_JSON_PATH: "reports/npm-outdated-report.json" NODE_OUTDATED_JSON_PATH: "reports/outdated-report.json" # default production ref name (pattern) PROD_REF: '/^(master|main)$/' Loading Loading @@ -95,9 +95,9 @@ stages: if [[ -n "$SONAR_URL" ]] then mkdir -p reports # generate eslint report in json for SONARqube # generate eslint report in json for SonarQube # shellcheck disable=SC2086 npm $NODE_LINT_ARGS -- --format=json --output-file=$NODE_LINT_REPORT_PATH $NODE_MANAGER $NODE_LINT_ARGS -- --format=json --output-file=$NODE_LINT_REPORT_PATH fi } Loading Loading @@ -229,6 +229,38 @@ stages: log_info "... done" } function guess_node_manager_system() { case "${NODE_MANAGER:-auto}" in auto) ;; npm) log_info "--- Build system explictly declared: npm" return ;; yarn) log_info "--- Build system explictly declared: yarn" return ;; *) log_warn "--- Unknown declared node manager system: \\e[33;1m${NODE_MANAGER}\\e[0m: please read template doc" ;; esac if [[ -f "package-lock.json" ]] then log_info "--- Build system auto-detected: npm" export NODE_MANAGER="npm" elif [[ -f "yarn.lock" ]] then log_info "--- Build system auto-detected: yarn" export NODE_MANAGER="yarn" else log_error "--- Node manager system auto-detect failed: please read template doc" exit 1 fi } unscope_variables # ENDSCRIPT Loading @@ -243,22 +275,31 @@ stages: cache: key: "$CI_COMMIT_REF_SLUG-node" paths: - $NODE_PROJECT_DIR/.npm/ - $NODE_PROJECT_DIR/.$NODE_MANAGER/ before_script: - *node-scripts - install_ca_certs "${CUSTOM_CA_CERTS:-$DEFAULT_CA_CERTS}" - guess_node_manager_system - cd ${NODE_PROJECT_DIR} # NPM_CONFIG_REGISTRY is not supported by old npm versions: force with cli - if [[ "$NPM_CONFIG_REGISTRY" ]]; then npm config set registry $NPM_CONFIG_REGISTRY; fi - npm ci --cache .npm --prefer-offline - if [[ "$CONFIG_REGISTRY" ]]; then $NODE_MANAGER config set registry $CONFIG_REGISTRY; fi - | case "$NODE_MANAGER" in npm) npm ci --cache .npm --prefer-offline ;; yarn) yarn install --immutable --immutable-cache --check-cache --cache-folder .yarn ;; esac node-build: extends: .node-base stage: build script: # launch unit test and code coverage - npm $NODE_TEST_ARGS - if [[ "$NODE_BUILD_DISABLED" != "true" ]]; then npm $NODE_BUILD_ARGS; fi - $NODE_MANAGER $NODE_TEST_ARGS - if [[ "$NODE_BUILD_DISABLED" != "true" ]]; then $NODE_MANAGER $NODE_BUILD_ARGS; fi coverage: '/^All files\s*\|\s*(\d+(?:\.\d+)?)/' artifacts: reports: Loading @@ -277,7 +318,7 @@ node-lint: # generate lint report for sonar - sonar_lint_report # display lint result for console - npm $NODE_LINT_ARGS - $NODE_MANAGER $NODE_LINT_ARGS artifacts: when: always # store artifact even if test Failed name: "$CI_JOB_NAME artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG" Loading @@ -303,7 +344,8 @@ node-audit: stage: test script: - mkdir -p reports - npm audit --json $NODE_AUDIT_ARGS | tee $NODE_AUDIT_JSON_PATH - $NODE_MANAGER audit --json $NODE_AUDIT_ARGS > $NODE_AUDIT_JSON_PATH - $NODE_MANAGER audit $NODE_AUDIT_ARGS artifacts: name: "$CI_JOB_NAME artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG" expire_in: 1 day Loading @@ -327,7 +369,8 @@ node-outdated: script: - set +e - mkdir -p reports - npm outdated --json $NODE_OUTDATED_ARGS | tee $NODE_OUTDATED_JSON_PATH || EXIT_CODE=$? - $NODE_MANAGER outdated --json $NODE_OUTDATED_ARGS > $NODE_OUTDATED_JSON_PATH - $NODE_MANAGER outdated $NODE_OUTDATED_ARGS || EXIT_CODE=$? - if [[ $NODE_OUTDATED_SILENT == "true" ]] && [[ $EXIT_CODE == 1 ]]; then exit 0; fi artifacts: name: "$CI_JOB_NAME artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG" Loading