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