Add reusable Forgejo Actions
Composite actions for CI/CD workflows: - checkout: Clone repo with configurable depth - docker-build: Build Docker images with multiple tags - docker-push: Push to Forgejo Packages registry - create-tag: Auto-increment semantic version tags - create-issue: Create issues via Forgejo API - create-pr: Create pull requests via Forgejo API - comment-pr: Add comments to PRs via Forgejo API All actions use shell scripts (no Node.js required). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
83
create-pr/action.yaml
Normal file
83
create-pr/action.yaml
Normal file
@@ -0,0 +1,83 @@
|
||||
name: Create Pull Request
|
||||
description: Create a pull request via Forgejo API
|
||||
|
||||
inputs:
|
||||
token:
|
||||
description: Forgejo API token
|
||||
required: true
|
||||
repository:
|
||||
description: Repository (owner/repo)
|
||||
default: ${{ github.repository }}
|
||||
title:
|
||||
description: Pull request title
|
||||
required: true
|
||||
body:
|
||||
description: Pull request body
|
||||
default: ''
|
||||
head:
|
||||
description: Source branch
|
||||
required: true
|
||||
base:
|
||||
description: Target branch
|
||||
default: 'main'
|
||||
labels:
|
||||
description: Comma-separated label names
|
||||
default: ''
|
||||
assignees:
|
||||
description: Comma-separated usernames to assign
|
||||
default: ''
|
||||
|
||||
outputs:
|
||||
number:
|
||||
description: Created PR number
|
||||
value: ${{ steps.create.outputs.number }}
|
||||
url:
|
||||
description: PR URL
|
||||
value: ${{ steps.create.outputs.url }}
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- id: create
|
||||
shell: bash
|
||||
run: |
|
||||
TOKEN="${{ inputs.token }}"
|
||||
REPO="${{ inputs.repository }}"
|
||||
TITLE="${{ inputs.title }}"
|
||||
BODY="${{ inputs.body }}"
|
||||
HEAD="${{ inputs.head }}"
|
||||
BASE="${{ inputs.base }}"
|
||||
LABELS="${{ inputs.labels }}"
|
||||
ASSIGNEES="${{ inputs.assignees }}"
|
||||
|
||||
# Build JSON payload
|
||||
JSON=$(jq -n \
|
||||
--arg title "$TITLE" \
|
||||
--arg body "$BODY" \
|
||||
--arg head "$HEAD" \
|
||||
--arg base "$BASE" \
|
||||
'{title: $title, body: $body, head: $head, base: $base}')
|
||||
|
||||
# Add labels if provided
|
||||
if [ -n "$LABELS" ]; then
|
||||
LABELS_JSON=$(echo "$LABELS" | tr ',' '\n' | jq -R . | jq -s .)
|
||||
JSON=$(echo "$JSON" | jq --argjson labels "$LABELS_JSON" '. + {labels: $labels}')
|
||||
fi
|
||||
|
||||
# Add assignees if provided
|
||||
if [ -n "$ASSIGNEES" ]; then
|
||||
ASSIGNEES_JSON=$(echo "$ASSIGNEES" | tr ',' '\n' | jq -R . | jq -s .)
|
||||
JSON=$(echo "$JSON" | jq --argjson assignees "$ASSIGNEES_JSON" '. + {assignees: $assignees}')
|
||||
fi
|
||||
|
||||
RESPONSE=$(curl -s -X POST \
|
||||
"https://code.flowmade.one/api/v1/repos/$REPO/pulls" \
|
||||
-H "Authorization: token $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$JSON")
|
||||
|
||||
NUMBER=$(echo "$RESPONSE" | jq -r '.number')
|
||||
URL=$(echo "$RESPONSE" | jq -r '.html_url')
|
||||
|
||||
echo "number=$NUMBER" >> $GITHUB_OUTPUT
|
||||
echo "url=$URL" >> $GITHUB_OUTPUT
|
||||
Reference in New Issue
Block a user