From 36aa2b23fbca970dd2bdbde6676423821f8c18a9 Mon Sep 17 00:00:00 2001 From: Val Horomanskii Date: Fri, 28 Jun 2024 17:23:36 -0400 Subject: [PATCH 1/3] Initial commit --- README.md | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..f6dd4e5 --- /dev/null +++ b/README.md @@ -0,0 +1,71 @@ +# ilot.io +Upstream: https://lab.ilot.io/ilot/ilot.io + +![Build Status](https://lab.ilot.io/ilot/ilot.io/badges/main/pipeline.svg) + + +## Description + +This repository contains the source code to the [ilot.io](https://ilot.io) +website. + +## GitLab CI + +This project's static Pages are built by [GitLab CI][ci], following the steps +defined in [`.gitlab-ci.yml`](.gitlab-ci.yml): + +We are using a theme based on +[Bootstrap 3](https://lab.ilot.io/ilot/ikiwiki-bootstrap-ilot) using submodules. + +## Building locally + +To work locally with this project, you'll have to follow the steps below: + +1. Fork, clone or download this project +1. Install ikiwiki: + * [mac][] + * [linux][] + * [source][] +1. Clone the submodules: `git submodule init && git submodule update` +1. Generate the website: `ikiwiki --setup ikiwiki.setup` +1. Start http-server: `./test-server.sh` + +Read more at ikiwiki's [documentation][]. + +## Contributing + +1. Fork the main ilot.io repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@lab.ilot.io/$USER/ilot.io` + - `cd ilot.io` + +3. Make your changes. + +4. Do local build. + + - `ikiwiki --setup ikiwiki.setup` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b ` + - `git add` changes + - `git commit -m 'content/index: descriptive description'` + - `git push` + +7. Create a merge request with your changes by following link in server response. + +8. Once the tests in the merge-request pass, and reviewers are happy, your changes + will be merged. + +[ci]: https://about.gitlab.com/gitlab-ci/ +[ikiwiki]: https://ikiwiki.info/ +[source]: https://ikiwiki.info/install/ +[linux]: https://ikiwiki.info/setup/ +[mac]: https://ikiwiki.info/tips/ikiwiki_on_mac_os_x/ +[documentation]: https://ikiwiki.info/ +[userpages]: https://docs.gitlab.com/ce/user/project/pages/introduction.html#user-or-group-pages +[projpages]: https://docs.gitlab.com/ce/user/project/pages/introduction.html#project-pages From 7b7b1baee38d91d49c81be902cd6647187bcd3b9 Mon Sep 17 00:00:00 2001 From: Val Eriy Date: Fri, 28 Jun 2024 21:24:45 +0000 Subject: [PATCH 2/3] Add empty html file --- index.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 index.html diff --git a/index.html b/index.html new file mode 100644 index 0000000..e69de29 From 7ccb19f7c0bae527253c8700da7dcddfa5ef9b56 Mon Sep 17 00:00:00 2001 From: Val Horomanskii Date: Fri, 28 Jun 2024 17:25:40 -0400 Subject: [PATCH 3/3] Add gitlab ci --- .gitignore | 3 ++ .gitlab-ci.yml | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..72d03f4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +content/.ikiwiki +public/ +http-server/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..5c13bdb --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,75 @@ +workflow: + rules: # disable tag pipelines and duplicate MR pipelines + - if: $CI_COMMIT_BRANCH + +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 + script: + - | # sed needs to be in its own section + sed -i "s|destdir.*|destdir: ./public/$CURRENT_CONTENT_PATH|" ikiwiki.setup + - ikiwiki --setup ikiwiki.setup + - | # create symbolic link to index.en.html if public/index.html does not exist + if [ ! -L "public/$CURRENT_CONTENT_PATH/index.html" ]; then + ln -s index.en.html public/$CURRENT_CONTENT_PATH/index.html + 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 + rules: + # '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 + tags: + - knit + +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 + script: + - rm -rf public/$FOLDER_TO_DELETE + environment: + name: pages/$CI_COMMIT_BRANCH + action: stop + rules: + - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH + when: manual + allow_failure: true + tags: + - knit