35cfd63945
Sync campaigns / sync (push) Successful in 19s
Sent/running campaigns are now skipped (not rejected) during sync, so a finished campaign like 2026-07-23-iron-rose-proof-approved no longer has to be deleted just to keep sync green.
49 lines
1.6 KiB
YAML
49 lines
1.6 KiB
YAML
name: Send campaign
|
|
on:
|
|
# Pushing a tag like send/big-announcement is the primary trigger — a
|
|
# deliberate, git-native, auditable action (git log --tags shows every
|
|
# real send that ever happened). These are "command tags," not release
|
|
# tags: fine to delete and re-push if a send needs retrying, since the
|
|
# actual safety net is listmonk's own draft/paused status check in
|
|
# `eec-campaigns send`, not tag uniqueness.
|
|
push:
|
|
tags: ["send/*"]
|
|
# workflow_dispatch is kept alongside it for when clicking a button is
|
|
# more convenient than a local `git tag && git push`. Same command either
|
|
# way.
|
|
workflow_dispatch:
|
|
inputs:
|
|
slug:
|
|
description: "Campaign slug (campaigns/<slug>/) to send"
|
|
required: true
|
|
type: string
|
|
|
|
jobs:
|
|
send:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: "1.23.1"
|
|
|
|
- name: Install eec-campaigns
|
|
run: go install gitea.reground.org/will/eec-campaigns@v0.1.6
|
|
|
|
- name: Determine campaign slug
|
|
id: slug
|
|
run: |
|
|
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
echo "value=${{ inputs.slug }}" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "value=${GITHUB_REF#refs/tags/send/}" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
- name: Send campaign
|
|
run: eec-campaigns send "${{ steps.slug.outputs.value }}"
|
|
env:
|
|
LISTMONK_BASE_URL: ${{ secrets.CAMPAIGNS_LISTMONK_BASE_URL }}
|
|
LISTMONK_API_USER: ${{ secrets.CAMPAIGNS_LISTMONK_API_USER }}
|
|
LISTMONK_API_TOKEN: ${{ secrets.CAMPAIGNS_LISTMONK_API_TOKEN }}
|