ayakael.net/.gitlab-ci.yml

76 lines
2.8 KiB
YAML
Raw Normal View History

2024-06-24 15:46:16 +00:00
workflow:
rules: # disable tag pipelines and duplicate MR pipelines
- if: $CI_COMMIT_BRANCH
2016-07-07 08:05:37 +00:00
2024-06-24 15:46:16 +00:00
variables:
MAIN_BRANCH_PATH: "."
EPHEMERAL_BRANCHES_PATH: preview # subpath to ephemeral branches content for preview
pages:
stage: build
cache:
key: gitlab-pages
paths: [public]
before_script:
- sudo apk add git ikiwiki po4a perl-yaml-tiny tree
# CURRENT_CONTENT_PATH is defined in rules, different between main branch and ephemeral branches
- mkdir -p public/$CURRENT_CONTENT_PATH && ls public/$CURRENT_CONTENT_PATH/..
- | # create ephermetal branched path if not existent
if [ ! -d "public/$EPHEMERAL_BRANCHES_PATH" ]; then
mkdir -p public/$EPHEMERAL_BRANCHES_PATH
fi
- | # avoid deleting main branch content when cache has been erased
if [ "$CI_COMMIT_BRANCH" != "$CI_DEFAULT_BRANCH" ] && [ ! -f public/$MAIN_BRANCH_PATH/index.html ]; then
echo -e "💥\e[91;1m Unable to retrieve $CI_DEFAULT_BRANCH generated files from cache ; please regenerate $CI_DEFAULT_BRANCH files first\e[0m"
exit 1
fi
- rm -rf public/$CURRENT_CONTENT_PATH || true # remove last version of current branch
2016-07-07 07:59:53 +00:00
script:
2024-06-24 16:23:51 +00:00
- | # sed needs to be in its own section
sed -i "s|destdir.*|destdir: ./public/$CURRENT_CONTENT_PATH|" ikiwiki.setup
2024-06-24 15:46:16 +00:00
- ikiwiki --setup ikiwiki.setup
- | # create symbolic link to index.en.html if public/index.html does not exist
2024-06-24 16:23:51 +00:00
if [ ! -L "public/$CURRENT_CONTENT_PATH/index.html" ]; then
ln -s index.en.html public/$CURRENT_CONTENT_PATH/index.html
2024-06-24 15:46:16 +00:00
fi
- cd public/$EPHEMERAL_BRANCHES_PATH
- tree -d -H '.' -L 1 --noreport --charset utf-8 -T "Versions" -o index.html # generate a root HTML listing all previews for easier access
environment:
name: pages/$CI_COMMIT_BRANCH
action: start
url: $CI_PAGES_URL/$CURRENT_CONTENT_PATH
on_stop: pages-clean-preview
2021-09-15 07:50:29 +00:00
rules:
2024-06-24 15:46:16 +00:00
# 'main branch' is exposed at GitLab Pages root
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
variables:
CURRENT_CONTENT_PATH: $MAIN_BRANCH_PATH
# other (short-lived) branches generation are exposed in 'EPHEMERAL_BRANCHES_PATH/branch-name-sanitized' sub path
- variables:
CURRENT_CONTENT_PATH: $EPHEMERAL_BRANCHES_PATH/$CI_COMMIT_REF_SLUG
artifacts:
paths: [public]
expire_in: 1h
2023-08-13 22:55:08 +00:00
tags:
2023-08-13 22:57:21 +00:00
- knit
2016-07-07 06:22:49 +00:00
2024-06-24 15:46:16 +00:00
pages-clean-preview:
stage: build
cache:
key: gitlab-pages
paths: [public]
variables:
GIT_STRATEGY: none # git files not available after branch deletion
FOLDER_TO_DELETE: $EPHEMERAL_BRANCHES_PATH/$CI_COMMIT_REF_SLUG # an indirection to allow arbitrary deletion when launching this job
2016-07-07 07:59:53 +00:00
script:
2024-06-24 15:46:16 +00:00
- rm -rf public/$FOLDER_TO_DELETE
environment:
name: pages/$CI_COMMIT_BRANCH
action: stop
2021-09-15 07:50:29 +00:00
rules:
2024-06-24 15:46:16 +00:00
- if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
when: manual
allow_failure: true
2023-08-13 22:55:08 +00:00
tags:
2023-08-13 22:57:21 +00:00
- knit