Post about using Echo
All checks were successful
Build and copy to prod / build-and-copy (push) Successful in 1m41s
All checks were successful
Build and copy to prod / build-and-copy (push) Successful in 1m41s
This commit is contained in:
parent
939747852e
commit
9b4538300e
@ -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
|
Loading…
Reference in New Issue
Block a user