diff --git a/scripts/bash/npm-helpers/npm_push_doc.sh b/scripts/bash/npm-helpers/npm_push_doc.sh index 9e731b99df01d2ea9666b8e578d34a653aec8919..a4e52b2006dcc2cd22cb11b74626e2982b53d0ff 100755 --- a/scripts/bash/npm-helpers/npm_push_doc.sh +++ b/scripts/bash/npm-helpers/npm_push_doc.sh @@ -46,6 +46,7 @@ PROJECT_ACCESS_TOKEN="${3:?Missing arg #3 pointing a Gitlab repository access to DIST_DIR="${4:?Missing arg #4 pointing the dist directory}" FEATURE_BRANCH_NAME="${5:?Missing arg #5 pointing a branch name}" FINAL_MERGE="${6:?Missing arg #6 pointing the final merge flag value}" +DOC_URL="${7:?Missing arg #7 pointing the documentation URL}" if [ "${FINAL_MERGE}" = "true" ]; then FINAL_MERGE=1 @@ -111,16 +112,8 @@ else git push origin "HEAD:main" fi -if [ ${FINAL_MERGE} -eq 1 ]; then - DOC_URL="${PROJECT_URL}/-/wikis/home" -else - DOC_URL="${PROJECT_URL}/-/wikis/non-stable/${FEATURE_BRANCH_NAME}/home" -fi - perform_wiki_cleanup "${WIKI_REPO_DIR}/non-stable" "${PROJECT_URL}" -echo "Documentation is available at url: ${DOC_URL}" +echo "Documentation url: ${DOC_URL}" popd - -echo GEN_DOC_URL="${DOC_URL}" > "gen_doc.env" diff --git a/scripts/bash/npm-helpers/npm_set_doc_url.sh b/scripts/bash/npm-helpers/npm_set_doc_url.sh new file mode 100755 index 0000000000000000000000000000000000000000..f79cd2cbcb705e84f80c19fabd5a03aa55581f0e --- /dev/null +++ b/scripts/bash/npm-helpers/npm_set_doc_url.sh @@ -0,0 +1,37 @@ +#!/bin/bash +set -e + +PROJECT_DIR="${1:?Missing arg #1 specifying a project source directory}" +PROJECT_URL="${2:?Missing arg #2 pointing project url. It is provided by CI_PROJECT_URL variable}" +FEATURE_BRANCH_NAME="${3:?Missing arg #3 pointing a branch name}" +FINAL_MERGE="${4:?Missing arg #4 pointing the final merge flag value}" +REPLACE_ENV_NAME="${5:-GEN_DOC_URL}" +REPLACE_FILE_PATH="${6:-${PROJECT_DIR}/README.md}" + +pushd "${PROJECT_DIR}" + +if [ "${FINAL_MERGE}" = "true" ]; then + FINAL_MERGE=1 +else + FINAL_MERGE=0 +fi + +if [ ${FINAL_MERGE} -eq 1 ]; then + DOC_URL="${PROJECT_URL}/-/wikis/home" +else + DOC_URL="${PROJECT_URL}/-/wikis/non-stable/${FEATURE_BRANCH_NAME}/home" +fi + +echo "Documentation url: ${DOC_URL}" + +sed -i "s<\${${REPLACE_ENV_NAME}}<${DOC_URL}<g" "${REPLACE_FILE_PATH}" +if grep -q "\${${REPLACE_ENV_NAME}}" "${REPLACE_FILE_PATH}"; then + echo "Failed to replace the documentation url in ${REPLACE_FILE_PATH}" + exit 1; +fi # Ensure that the placeholder was replaced + +echo "Replaced the documentation url: \"\${${REPLACE_ENV_NAME}}\" => \"${DOC_URL}\" in file: \"${REPLACE_FILE_PATH}\"" + +popd + +echo ${REPLACE_ENV_NAME}="${DOC_URL}" > "gen_doc.env" diff --git a/templates/npm_projects.gitlab-ci.yml b/templates/npm_projects.gitlab-ci.yml index 2ac1d7735dafdb9a091080a08eb69a717e998fee..7e56920a1b6284aeeb2a812d523ae0a667e50b9e 100644 --- a/templates/npm_projects.gitlab-ci.yml +++ b/templates/npm_projects.gitlab-ci.yml @@ -110,6 +110,10 @@ variables: # Output directory where should be stored package - it should be overrided by derived job DIST_DIR: "" + PROJECT_URL: "${CI_PROJECT_URL}" + REPLACE_DOC_URL_ENV: "" + REPLACE_FILE_PATH: "${SOURCE_DIR}/README.md" + # Target package scope - it should be overrided by derived job NPM_PACKAGE_SCOPE: "" # Target package name - it should be overrided by derived job @@ -117,15 +121,18 @@ variables: NPM_REGISTRY_URL: "gitlab.syncad.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/" script: + - if [ -n $REPLACE_DOC_URL_ENV ]; then /home/emscripten/scripts/npm_set_doc_url.sh "${SOURCE_DIR}" "${PROJECT_URL}" "${CI_COMMIT_REF_NAME}" "${CI_COMMIT_REF_PROTECTED}" "${REPLACE_DOC_URL_ENV}" "${REPLACE_FILE_PATH}"; fi - /home/emscripten/scripts/npm_build_package.sh "${SOURCE_DIR}" "${NPM_REGISTRY_URL}" "${NPM_PACKAGE_SCOPE}" "${NPM_PACKAGE_NAME}" "${DIST_DIR}" "${CI_COMMIT_REF_PROTECTED}" "${CI_COMMIT_TAG}" artifacts: reports: dotenv: + - "gen_doc.env" # contains URL to generated documentation pointed by `GEN_DOC_URL` variable - "${SOURCE_DIR}/built_package_info.env" # contains path to produced tgz - "${SOURCE_DIR}/built_package_version_info.env" # contains information related to generated package version and git revision paths: + - "${REPLACE_FILE_PATH}" - "${DIST_DIR}/*.tgz" # Built package - "${DIST_DIR}/built_package_info.json" @@ -224,6 +231,7 @@ variables: variables: # Must be overrided by derived job WIKI_PUSH_TOKEN: "" + DOC_URL: "${GEN_DOC_URL}" # The directory containing sources to be built - it can be overrided by derived job SOURCE_DIR: "${CI_PROJECT_DIR}" @@ -232,14 +240,5 @@ variables: DIST_DIR: "$CI_PROJECT_DIR/dist" script: - # start always at project root dir, to make sure .env file (included in artifacts) is generated there - cd "${CI_PROJECT_DIR}" - - /home/emscripten/scripts/npm_push_doc.sh "${SOURCE_DIR}" "${PROJECT_URL}" "${WIKI_PUSH_TOKEN}" "${DIST_DIR}" "${CI_COMMIT_REF_NAME}" "${CI_COMMIT_REF_PROTECTED}" - - artifacts: - reports: - dotenv: - - "gen_doc.env" # contains URL to generated documentation pointed by `GEN_DOC_URL` variable - - when: always - expire_in: 1 week + - /home/emscripten/scripts/npm_push_doc.sh "${SOURCE_DIR}" "${PROJECT_URL}" "${WIKI_PUSH_TOKEN}" "${DIST_DIR}" "${CI_COMMIT_REF_NAME}" "${CI_COMMIT_REF_PROTECTED}" "${DOC_URL}"