Files
website/.gitlab/project_docs.gitlab-ci.yml
Jon 20726d1712 feat(project): add django itsm docs
!62 nofusscomputing/projects/django_template!27
2024-06-17 17:08:38 +09:30

163 lines
4.3 KiB
YAML

---
# Variables required:
# ASSEMBLE_PROJECT_NAME: ''
# ASSEMBLE_PROJECT_ID: ''
# ASSEMBLE_PROJECT_PATH: ''
.fetch_project_docs:
stage: chores
needs: []
variables:
GIT_STRATEGY: none
before_script:
- mkdir -p "$CI_PROJECT_DIR/artifacts/project_docs"
script:
- echo "[DEBUG] Fetch Project ${ASSEMBLE_PROJECT_NAME}"
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/${ASSEMBLE_PROJECT_ID}/jobs/artifacts/development/download?job=Documentation%2EBuild")'
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
- |
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
# exit 1;
else
curl --location --output artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/${ASSEMBLE_PROJECT_ID}/jobs/artifacts/development/download?job=Documentation%2EBuild";
unzip artifacts.zip;
# rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/gitlab-ci";
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/${ASSEMBLE_PROJECT_PATH}" "$CI_PROJECT_DIR/artifacts/project_docs/$(echo -n "${ASSEMBLE_PROJECT_PATH}" | sed -e "s/\//./g")/";
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
fi
artifacts:
expire_in: 24 hrs
when: always
paths:
- "$CI_PROJECT_DIR/artifacts/"
rules:
# Docs must always be built for:
# - git tag
# - dev branch
# - master branch
- if: # condition_git_tag
(
$CI_COMMIT_TAG
)
||
(
(
$CI_COMMIT_BRANCH == "development"
||
$CI_COMMIT_BRANCH != "master"
)
&&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
)
||
(
$CI_COMMIT_BRANCH == "master"
&&
$CI_PIPELINE_SOURCE == "push"
)
exists:
- '{docs/**,pages/**}/*.md'
when: always
- when: never
.merge_project_docs:
stage: prepare
variables:
GIT_STRATEGY: none
before_script:
- mkdir -p $CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs
- mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs/"
script:
- ls -l ${CI_PROJECT_DIR}/artifacts/project_docs/
- | # Merge Project docs to website
for i in `ls ${CI_PROJECT_DIR}/artifacts/project_docs/`; do
echo "Found Path - $i";
export JOIN_PROJECT_PATH=$(echo -n "${i}" | sed -e "s/\./\//g");
echo "set as project path [${JOIN_PROJECT_PATH}]";
rm -Rf $CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs/build/${JOIN_PROJECT_PATH};
cp -rvf $CI_PROJECT_DIR/artifacts/project_docs/${i} $CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs/build/${JOIN_PROJECT_PATH}/;
done
- | # Assemble website and project sources to build search index
echo "ToDo: build website and docs together to get the search index to add to the website";
- | # Join sitemaps together
echo "ToDo: Join all Sitemaps together into one";
artifacts:
expire_in: 24 hrs
when: always
paths:
- "$CI_PROJECT_DIR/artifacts/"
rules:
# Docs must always be built for:
# - git tag
# - dev branch
# - master branch
- if: # condition_git_tag
(
$CI_COMMIT_TAG
)
||
(
(
$CI_COMMIT_BRANCH == "development"
||
$CI_COMMIT_BRANCH != "master"
)
&&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
)
||
(
$CI_COMMIT_BRANCH == "master"
&&
$CI_PIPELINE_SOURCE == "push"
)
exists:
- '{docs/**,pages/**}/*.md'
when: always
- when: never