From 9b4538300eee637bfe35db5c900fba278e248bd1 Mon Sep 17 00:00:00 2001 From: Lewis Dale Date: Fri, 8 Mar 2024 11:14:01 +0000 Subject: [PATCH] Post about using Echo --- .../using-git-actions-for-triggering-echo.md | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/blog/posts/2024/3/using-git-actions-for-triggering-echo.md diff --git a/src/blog/posts/2024/3/using-git-actions-for-triggering-echo.md b/src/blog/posts/2024/3/using-git-actions-for-triggering-echo.md new file mode 100644 index 0000000..2a2868b --- /dev/null +++ b/src/blog/posts/2024/3/using-git-actions-for-triggering-echo.md @@ -0,0 +1,69 @@ +--- +title: Using Gitea/Github actions for triggering Echo +date: 2024-03-08T11:12:00Z +tags: + - eleventy + - tech +--- + +I decided to start using [Robb Knight's Echo tool](https://echo.rknight.me), to syndicate my blog posts to Mastodon, and trigger Webmentions. I'm not going to go through the configuration of Echo here, the [project README](https://github.com/rknightuk/echo) has some good instructions for setting it up. + +However, I have just started using [Gitea Actions](https://docs.gitea.com/usage/actions/overview) for CI on my private Git server, so I'm using a scheduled action to achieve this: + +{% raw %} +```yaml +name: Syndicate using echo +on: + schedule: + - cron: '*/5 * * * *' +jobs: + echo: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 20.x + - name: Install dependencies 📦 + run: npm ci + - name: Cache build + id: cache-data + uses: actions/cache@v4 + with: + path: data + key: cache-data-${{ gitea.run_id }} + restore-keys: | + cache-data + - uses: actions/setup-go@v3 + with: + go-version: '1.20' + - uses: https://gitea.com/actions/go-hashfiles@v0.0.1 + id: get-hash + with: + patterns: |- + ./data/* + - name: Init echo + if: ${{ steps.get-hash.outputs.hash == ''}} + run: node index.js init + env: + MASTODON_ACCESS_TOKEN: ${{ secrets.MASTODON_ACCESS_TOKEN }} + MASTODON_URL: ${{ secrets.MASTODON_URL }} + - name: Run echo + run: node index.js + env: + MASTODON_ACCESS_TOKEN: ${{ secrets.MASTODON_ACCESS_TOKEN }} + MASTODON_URL: ${{ secrets.MASTODON_URL }} +``` +{% endraw %} + +This: +* Checks out the code +* Sets up node +* Uses the [cache action](https://github.com/actions/cache) to persist the `data` directory between runs +* Uses the `go-hashfiles` action to calculate a hash of the data directory[^1] +* If the hash is empty, initialise Echo +* Run echo + +[^1]: If using Github Actions, you can remove these steps and just use the `hashFiles` function \ No newline at end of file