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//) 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.5 - 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 }}