socialpost/.woodpecker.yml

68 lines
2 KiB
YAML
Raw Permalink Normal View History

2025-01-14 13:18:00 +00:00
pipeline:
post_to_socials:
image: alpine:3.18
environment:
MASTODON_INSTANCE:
from_secret: mastodon_instance
MASTODON_TOKEN:
from_secret: mastodon_token
BLUESKY_HANDLE:
from_secret: bluesky_handle
BLUESKY_PASSWORD:
from_secret: bluesky_password
commands:
- apk add --no-cache curl jq yq
# Frontmatter extrahieren
- sed -n '/^---$/,/^---$/p' content/post.md | sed '1d;$d' > frontmatter.yaml
# Felder lesen
- post_title=$(yq e '.title' frontmatter.yaml)
- post_description=$(yq e '.description' frontmatter.yaml)
- post_url=$(yq e '.id' frontmatter.yaml)
# Keywords in Hashtags
- post_keywords=$(
yq e '.keywords[]' frontmatter.yaml \
| sed 's/^/#/' \
| paste -sd ' ' -
)
# Nachricht zusammensetzen
- message="${post_title}\n\n${post_description}\n\n${post_url}\n${post_keywords}"
- echo "Nachricht:\n$message"
# Mastodon
- echo "Poste auf Mastodon..."
- |
curl -s -X POST \
-H "Authorization: Bearer $MASTODON_TOKEN" \
--data-urlencode "status=$message" \
"$MASTODON_INSTANCE/api/v1/statuses"
# Bluesky
- echo "Poste auf Bluesky..."
- export BLUESKY_JWT=$(
curl -s -X POST https://bsky.social/xrpc/com.atproto.server.createSession \
-H 'Content-Type: application/json' \
-d "{\"identifier\":\"$BLUESKY_HANDLE\",\"password\":\"$BLUESKY_PASSWORD\"}" \
| jq -r '.accessJwt'
)
- |
curl -s -X POST https://bsky.social/xrpc/com.atproto.repo.createRecord \
-H "Authorization: Bearer $BLUESKY_JWT" \
-H 'Content-Type: application/json' \
-d "{
\"collection\":\"app.bsky.feed.post\",
\"repo\":\"$BLUESKY_HANDLE\",
\"record\": {
\"\$type\": \"app.bsky.feed.post\",
\"text\": \"$message\"
}
}"
branches:
only:
- main