diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e667cc7c3ffbc673ed5a0dfb2096186d9443fe2f..4dbc82a92d3b0051461aad8751c8087d8ddd5343 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -40,8 +40,14 @@ setup: script: - sed -i -e "s|%%BRANCH%%|${CI_COMMIT_BRANCH}|g" + -e "s|%%COMMIT_SHA%%|${CI_COMMIT_SHORT_SHA}|g" + -e "s|%%COMMIT_TIMESTAMP%%|${CI_COMMIT_TIMESTAMP}|g" + -e "s|%%JOB_ID%%|${CI_JOB_ID}|g" + -e "s|%%JOB_TIMESTAMP%%|${CI_JOB_STARTED_AT}|g" + -e "s|%%JOB_URL%%|${CI_JOB_URL}|g" + -e "s|%%PROJECT_PATH%%|${CI_PROJECT_PATH}|g" + -e "s|%%PROJECT_TITLE%%|${CI_PROJECT_TITLE}|g" -e "s|%%PROJECT_URL%%|${CI_PROJECT_URL}|g" - -e "s|%%PROJECT_NAMESPACE%%|${CI_PROJECT_NAMESPACE}|g" src/*.html - mv src public artifacts: @@ -64,4 +70,33 @@ pages: rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH +# Purge all of this site's URLs from the Cloudflare cache +create-purge-json: + stage: deploy + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + needs: ['pages'] + tags: + - docker + script: + - >- + echo -en "{\n \"files\": [\n \"$CI_PAGES_URL/\"" > purge.json; + for d in $(find public/* -type d); do echo -en ",\n \"$CI_PAGES_URL/${d#public/}/\"" >> purge.json; done; + for f in $(find public -type f); do echo -en ",\n \"$CI_PAGES_URL/${f#public/}\"" >> purge.json; done; + echo -e "\n ]\n}" >> purge.json + - cat purge.json + artifacts: + paths: + - purge.json + +trigger-cache-purge: + stage: .post + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + trigger: + include: purge-cache.gitlab-ci.yml + variables: + PARENT_PIPELINE_ID: $CI_PIPELINE_ID + + # vi: set ts=2 sw=2 et ft=yaml: diff --git a/purge-cache.gitlab-ci.yml b/purge-cache.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..0b4c616f97bb299e162ee611b5c6675a942eaa35 --- /dev/null +++ b/purge-cache.gitlab-ci.yml @@ -0,0 +1,25 @@ +# Purge the Cloudflare cache using the request body contained in purge.json +# +# We delay this job to give the pages:deploy job time to finish. If we don't +# delay, then the cache might refill with old pages before the new pages are +# finished deploying. +purge-cache: + tags: + - docker + rules: + - if: $CF_PURGE_CACHE_ZONE && $CF_PURGE_CACHE_TOKEN + when: delayed + start_in: 3 minutes + needs: + - pipeline: $PARENT_PIPELINE_ID + job: create-purge-json + script: + - cat purge.json + - >- + wget -qO- "https://api.cloudflare.com/client/v4/zones/$CF_PURGE_CACHE_ZONE/purge_cache" + --header "Content-Type: application/json" + --header "Authorization: Bearer $CF_PURGE_CACHE_TOKEN" + --post-file purge.json + + +# vi: set ts=2 sw=2 et ft=yaml: diff --git a/src/another-page.html b/src/another-page.html deleted file mode 100644 index 2d1289133224c526a183ad48358992a5e049ea00..0000000000000000000000000000000000000000 --- a/src/another-page.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <meta name="generator" content="GitLab Pages"> - <title>Another Page - Plain HTML site using GitLab Pages</title> - <link rel="stylesheet" href="style.css"> - </head> - <body> - <div class="navbar"> - <a href="https://pages.gitlab.io/plain-html/">Plain HTML Example</a> - <a href="https://gitlab.com/pages/plain-html/">Repository</a> - <a href="https://gitlab.com/pages/">Other Examples</a> - </div> - - <h1>Hello World!</h1> - - <p> - This is a another page for testing global replacements. - </p> - <p> - It was built on the <strong>%%BRANCH%%</strong> branch of the - <a href="%%PROJECT_URL%%"><strong>%%PROJECT_NAMESPACE%%</strong></a> project. - </p> - <p> - Go back to the <a href="index.html">homepage</a>. - </p> - </body> -</html> - -<!-- vi: set ts=2 sw=2 et ft=html: --> diff --git a/src/cache-test.html b/src/cache-test.html new file mode 100644 index 0000000000000000000000000000000000000000..182e635318ba82921bede8437f054c9ac0f296a5 --- /dev/null +++ b/src/cache-test.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="generator" content="GitLab Pages"> + <title>Cache Test | %%PROJECT_TITLE%%</title> + <link rel="preload" href="style.css" as="style"> + <link rel="stylesheet" href="style.css"> + </head> + <body> + <div class="navbar"> + <a href="./">Homepage</a> + <a href="cache-test.html">Cache Test</a> + <a href="sub/">Subdirectory</a> + <a href="%%PROJECT_URL%%">Repository</a> + </div> + + <h1>Cache Test</h1> + + <p> + This page is meant for testing caching. + </p> + <p> + It was built on the <strong>%%BRANCH%%</strong> branch of the + <a href="%%PROJECT_URL%%"><strong>%%PROJECT_PATH%%</strong></a> project. + </p> + <p> + The current site revision is <a href="%%PROJECT_URL%%/-/commit/%%COMMIT_SHA%%"><code>%%COMMIT_SHA%%</code></a> from %%COMMIT_TIMESTAMP%%. + </p> + <p> + It was built in <a href="%%JOB_URL%%">Job %%JOB_ID%%</a> at %%JOB_TIMESTAMP%%. + </p> + </body> +</html> + +<!-- vi: set ts=2 sw=2 et ft=html: --> diff --git a/src/index.html b/src/index.html index 17171232f7a56fedd280198d8effd1cdd2cec643..2d74d6340cfe8b5e907081fca0236ceec96b89a4 100644 --- a/src/index.html +++ b/src/index.html @@ -1,16 +1,18 @@ <!DOCTYPE html> -<html> +<html lang="en"> <head> <meta charset="utf-8"> <meta name="generator" content="GitLab Pages"> - <title>Plain HTML site using GitLab Pages</title> + <title>%%PROJECT_TITLE%%</title> + <link rel="preload" href="style.css" as="style"> <link rel="stylesheet" href="style.css"> </head> <body> <div class="navbar"> - <a href="https://pages.gitlab.io/plain-html/">Plain HTML Example</a> - <a href="https://gitlab.com/pages/plain-html/">Repository</a> - <a href="https://gitlab.com/pages/">Other Examples</a> + <a href="./">Homepage</a> + <a href="cache-test.html">Cache Test</a> + <a href="sub/">Subdirectory</a> + <a href="%%PROJECT_URL%%">Repository</a> </div> <h1>Hello World!</h1> @@ -20,10 +22,7 @@ </p> <p> It was built on the <strong>%%BRANCH%%</strong> branch of the - <a href="%%PROJECT_URL%%"><strong>%%PROJECT_NAMESPACE%%</strong></a> project. - </p> - <p> - Go check out this <a href="another-page.html">other page</a>. + <a href="%%PROJECT_URL%%"><strong>%%PROJECT_PATH%%</strong></a> project. </p> </body> </html> diff --git a/src/sub/index.html b/src/sub/index.html new file mode 100644 index 0000000000000000000000000000000000000000..5bdde53c8cf48a21dd8dd644d187db9ae08ef1e4 --- /dev/null +++ b/src/sub/index.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="generator" content="GitLab Pages"> + <title>Subdirectory | %%PROJECT_TITLE%%</title> + <link rel="preload" href="../style.css" as="style"> + <link rel="stylesheet" href="../style.css"> + </head> + <body> + <div class="navbar"> + <a href="../">Homepage</a> + <a href="../cache-test.html">Cache Test</a> + <a href="./">Subdirectory</a> + <a href="%%PROJECT_URL%%">Repository</a> + </div> + + <h1>Subdirectory Page</h1> + + <p> + This page is in a subdirectory. + </p> + </body> +</html> + +<!-- vi: set ts=2 sw=2 et ft=html: -->