diff --git a/templates/npm_projects.gitlab-ci.yml b/templates/npm_projects.gitlab-ci.yml index 919d0cb298717f2ce4196634c6ec3b85153c0d12..031022d0153a1292fd55138e0b608e0a9400cc0a 100644 --- a/templates/npm_projects.gitlab-ci.yml +++ b/templates/npm_projects.gitlab-ci.yml @@ -56,7 +56,7 @@ variables: when: always expire_in: 1 week -.npm_test_template: +.npm_process_built_package_tarball: extends: .npm_based_job_base variables: # Path pointing the source directory containing a package.json file - it can be overrided by derived job @@ -64,11 +64,22 @@ variables: # Path to the built package tarball - it should be overrided by derived job PACKAGE_TGZ_PATH: "" - script: + before_script: + - !reference [.npm_based_job_base, before_script] - echo -e "\e[0Ksection_start:$(date +%s):package_tgz_unpack[collapsed=true]\r\e[0KAttempting to unpack ${PACKAGE_TGZ_PATH}" - cd "${CI_PROJECT_DIR}" - tar -xf "${PACKAGE_TGZ_PATH}" -C "${SOURCE_DIR}" --strip-components=1 - echo -e "\e[0Ksection_end:$(date +%s):package_tgz_unpack\r\e[0K" + +.npm_test_template: + extends: .npm_process_built_package_tarball + variables: + # Path pointing the source directory containing a package.json file - it can be overrided by derived job + SOURCE_DIR: "${CI_PROJECT_DIR}" + # Path to the built package tarball - it should be overrided by derived job + PACKAGE_TGZ_PATH: "" + + script: - echo -e "\e[0Ksection_start:$(date +%s):testing[collapsed=false]\r\e[0KAttempting to start tests..." - cd "${SOURCE_DIR}" - npm run test @@ -88,7 +99,7 @@ variables: # Base definition for NPM package publishing job. # The derived job, should have in its dependencies a final job performing a npm-build (derived from `.npm_build_template`) .npm_deploy_package_template: - extends: .npm_based_job_base + extends: .npm_process_built_package_tarball variables: # The directory containing sources to be built - it can be overrided by derived job SOURCE_DIR: "${CI_PROJECT_DIR}" @@ -100,10 +111,32 @@ variables: NPM_PUBLISH_TOKEN: "${CI_JOB_TOKEN}" script: - - echo -e "\e[0Ksection_start:$(date +%s):package_tgz_unpack[collapsed=true]\r\e[0KAttempting to unpack ${PACKAGE_TGZ_PATH}" - - cd "${CI_PROJECT_DIR}" - - tar -xf "${PACKAGE_TGZ_PATH}" -C "${SOURCE_DIR}" --strip-components=1 - - echo -e "\e[0Ksection_end:$(date +%s):package_tgz_unpack\r\e[0K" - echo -e "\e[0Ksection_start:$(date +%s):publishing[collapsed=false]\r\e[0KAttempting to publish a package..." - /home/emscripten/scripts/npm_publish.sh "${SOURCE_DIR}" "${NPM_REGISTRY_URL}" "${NPM_PACKAGE_SCOPE}" "${NPM_PUBLISH_TOKEN}" - - echo -e "\e[0Ksection_end:$(date +%s):publishing\r\e[0K" + - echo -e "\e[0Ksection_end:$(date +%s):publishing\r\e[0KDone" + +# Base definition for NPM package publishing job to the registry.npmjs.org. +# The derived job, should have in its dependencies a final job performing a npm-build (derived from `.npm_build_template`) +.registry_npmjs_org_deploy_package_template: + extends: .npm_process_built_package_tarball + variables: + # The directory containing sources to be built - it can be overrided by derived job + SOURCE_DIR: "${CI_PROJECT_DIR}" + # Target package name - it should be overrided by derived job + NPM_PACKAGE_NAME: "" + # Path to the built package tarball - it should be overrided by derived job + PACKAGE_TGZ_PATH: "" + # registry.npmjs.org authentication token - it should be overrided by derived job + NPM_PUBLISH_TOKEN: "" + + script: + # project version info must be regenerated accoring to correct target registry, package scope and name + - "/home/emscripten/scripts/npm_generate_version.sh" "${SOURCE_DIR}" "registry.npmjs.org/" "@hiveio" "${NPM_PACKAGE_NAME}" + - echo -e "\e[0Ksection_start:$(date +%s):publishing[collapsed=false]\r\e[0KAttempting to publish a package to registry.npmjs.org..." + - /home/emscripten/scripts/npm_publish.sh "${SOURCE_DIR}" "registry.npmjs.org/" "@hiveio" "${NPM_PUBLISH_TOKEN}" + - echo -e "\e[0Ksection_end:$(date +%s):publishing\r\e[0KDone" + + rules: + - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"' + when: manual + allow_failure: true