From a7c63441aedabe3a6296c2bf14d0763fcfeb7b6d Mon Sep 17 00:00:00 2001 From: Jack Jackson Date: Tue, 25 Feb 2025 19:25:22 -0800 Subject: [PATCH] Abandon alpine --- .gitea/workflows/publish.yaml | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/publish.yaml b/.gitea/workflows/publish.yaml index 9750383..85bdd0e 100644 --- a/.gitea/workflows/publish.yaml +++ b/.gitea/workflows/publish.yaml @@ -16,24 +16,43 @@ jobs: - name: Check out repository code uses: actions/checkout@v4 + # I'd like to use `alpine`, here, but it doesn't have `bash` installed by default. + # It can be installed with `shell: /bin/sh\nrun: apk add --no-cache bash`, but that's a pain. + # In any case, `ubuntu-latest` should already be present, so there shouldn't be extra delay in pulling it. block-posts-containining-tk: depends-on: - checkout - runs-on: alpine + runs-on: ubuntu-latest steps: - - shell: /bin/sh - run: apk add --no-cache bash - run: | - echo "Hello World" - echo "Goodbye Mars" + # This is necessary because, if `grep ...` doesn't find anything, it will _return_ (not print) a value of 1 + # (non-zero return codes indicating errors in Unix - since there are many more ways for something to go wrong + # than there are for it to go right!), and so the `files=` assignment will also return 1, and the whole operation + # will be considered a failure. + # + # Since a non-zero value is truthy in Linux, we can use the OR operator (`||`) to only execute the second command + # if the first one errors out. So, this line can be translated to English as: + # "Set the variable `files` to a list of all the files that contain `TK` - unless there aren't any, in which case + # set it to `FILES NOT FOUND" + files=$(grep -rl 'TK' blog/content/posts || echo "FILES NOT FOUND") + + # We have to filter out (`grep -v`) the "marker" value of `FILES NOT FOUND`, otherwise the no-matches case would + # be recorded as having 1 matching file, leading to an error-out below. + # (I guess _technically_ there's an edge case in that, if I ever make a blog post titled "FILES NOT FOUND" _which also_ + # contains the string `TK`, it would slip through this check. But that feels pretty unlikely - not least because spaces + # are very rare in my filesystem names - so I'm ok taking that risk) + count=$(wc -l <(echo "$files" | grep -v "FILES NOT FOUND") | awk '{print $1}') + if [[ "$count" -gt "0" ]]; then + echo "Found TK in $count files:" + echo $files + exit 1 # TODO - and alerting via Matrix! + fi build-blog: depends-on: - block-posts-containining-tk - runs-on: alpine + runs-on: ubuntu-latest steps: - - shell: /bin/sh - run: apk add --no-cache bash - run: | apk add --no-cache hugo git git submodule init