Skip to content
Merged

pr #47

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
2488e2e
Update README.md
kpj2006 Jan 5, 2026
3b25e52
Merge pull request #15 from automation-workflows/test
kpj2006 Jan 5, 2026
8b29e93
gist check logging
kpj2006 Jan 6, 2026
793ffcb
Update README.md
kpj-2006 Jan 6, 2026
5f5b255
Merge pull request #16 from kpj-2006/main
kpj2006 Jan 6, 2026
da56444
add logging of other env
kpj2006 Jan 6, 2026
a53da20
Update README.md
kpj-2006 Jan 6, 2026
7e14412
Merge pull request #17 from kpj-2006/main
kpj2006 Jan 6, 2026
4b481c6
remove exit
kpj2006 Jan 6, 2026
262d858
Merge branch 'main' of https://github.com/automation-workflows/test2
kpj2006 Jan 6, 2026
20152fb
Update README.md
kpj-2006 Jan 6, 2026
164257d
Merge pull request #18 from kpj-2006/main
kpj2006 Jan 6, 2026
b4312b9
config GIST_PAT env
kpj2006 Jan 6, 2026
12fdc41
Merge branch 'main' of https://github.com/automation-workflows/test2
kpj2006 Jan 6, 2026
fe9c53b
Update README.md
kpj-2006 Jan 6, 2026
2a60d1e
Merge pull request #19 from kpj-2006/main
kpj2006 Jan 6, 2026
31491cd
error fix
kpj2006 Jan 6, 2026
d851adb
Merge branch 'main' of https://github.com/automation-workflows/test2
kpj2006 Jan 6, 2026
d735581
Update README.md
kpj-2006 Jan 6, 2026
b506ed3
Merge pull request #20 from kpj-2006/main
kpj2006 Jan 6, 2026
7f9d682
check org secret
kpj2006 Jan 6, 2026
a88862d
Update README.md
kpj-2006 Jan 6, 2026
8064f29
Merge pull request #21 from kpj-2006/main
kpj2006 Jan 6, 2026
e577824
Update README.md
kpj-2006 Jan 6, 2026
cf9aa47
Merge pull request #22 from kpj-2006/main
kpj2006 Jan 6, 2026
86115d2
Revert "check org secret"
kpj2006 Jan 6, 2026
158af4c
Update README.md
kpj-2006 Jan 6, 2026
2e42a83
Merge pull request #23 from kpj-2006/main
kpj2006 Jan 6, 2026
0c09230
Update README.md
kpj-2006 Jan 7, 2026
6c8d67c
Merge pull request #24 from kpj-2006/main
kpj2006 Jan 7, 2026
7530bfc
debug secert workflow
kpj2006 Jan 7, 2026
0643ee5
remove env for better scope
kpj2006 Jan 8, 2026
5d68bde
Update README.md
kpj-2006 Jan 8, 2026
b535c06
Merge pull request #25 from kpj-2006/main
kpj2006 Jan 8, 2026
bde56bf
commented error portion
kpj2006 Jan 8, 2026
cecbe92
success revert
kpj2006 Jan 8, 2026
e26f160
left changes revert
kpj2006 Jan 8, 2026
1523310
Update README.md
kpj-2006 Jan 8, 2026
8c567bd
Merge pull request #26 from kpj-2006/main
kpj2006 Jan 8, 2026
5a67031
Update README.md
kpj-2006 Jan 8, 2026
06b99a4
Merge pull request #27 from kpj-2006/testing
kpj2006 Jan 8, 2026
0dff2e4
specify permission(as resuable use inherits caller
kpj2006 Jan 8, 2026
a16f281
Merge branch 'main' of https://github.com/automation-workflows/test2
kpj2006 Jan 8, 2026
ea1cd8c
Update README.md
kpj-2006 Jan 8, 2026
db3d6d5
Merge pull request #28 from kpj-2006/testing
kpj2006 Jan 8, 2026
0419f1b
add permission
kpj2006 Jan 8, 2026
e26df30
Update README.md
kpj-2006 Jan 8, 2026
6cec41e
Merge pull request #29 from kpj-2006/testing
kpj2006 Jan 8, 2026
0d3fb75
Update README.md
kpj-2006 Jan 8, 2026
75882e1
Merge pull request #30 from kpj-2006/testing
kpj2006 Jan 8, 2026
131baad
Update README.md
kpj-2006 Jan 8, 2026
daa0be4
Merge pull request #31 from kpj-2006/testing
kpj2006 Jan 8, 2026
163fe8a
try remove main permission but still on reuable
kpj2006 Jan 8, 2026
891f916
Update README.md
kpj-2006 Jan 8, 2026
faf5cef
Merge pull request #32 from kpj-2006/testing
kpj2006 Jan 8, 2026
4fd471f
try permission to calculate job
kpj2006 Jan 8, 2026
21832fe
Update README.md
kpj-2006 Jan 8, 2026
9874dc9
Merge pull request #33 from kpj-2006/testing
kpj2006 Jan 8, 2026
c03da88
try permission inside
kpj2006 Jan 8, 2026
93ff787
Update README.md
kpj-2006 Jan 8, 2026
3518a67
Merge pull request #34 from kpj-2006/testing
kpj2006 Jan 8, 2026
b34a696
Update README.md
kpj-2006 Jan 8, 2026
68bbd1d
Merge pull request #35 from kpj-2006/testing
kpj2006 Jan 8, 2026
3344a55
try inherit
kpj2006 Jan 8, 2026
ee5fe63
Merge branch 'main' of https://github.com/automation-workflows/test2
kpj2006 Jan 8, 2026
73550f3
Update README.md
kpj-2006 Jan 8, 2026
934219b
Merge pull request #36 from kpj-2006/testing
kpj2006 Jan 8, 2026
dcce604
made it manually
kpj2006 Jan 8, 2026
be2d53d
Merge branch 'main' of https://github.com/automation-workflows/test2
kpj2006 Jan 8, 2026
275b126
Update README.md
kpj-2006 Jan 8, 2026
ed70232
Merge pull request #37 from kpj-2006/testing
kpj2006 Jan 8, 2026
2d264d8
Revert "try permission inside"
kpj2006 Jan 8, 2026
297e306
Update README.md
kpj-2006 Jan 8, 2026
5512f18
Merge pull request #38 from kpj-2006/main
kpj2006 Jan 8, 2026
205baa6
Update README.md
kpj-2006 Jan 8, 2026
bfb843b
Merge pull request #39 from kpj-2006/testing
kpj2006 Jan 8, 2026
1e067c1
Update README.md
kpj-2006 Jan 8, 2026
acefe33
Merge pull request #40 from kpj-2006/testing
kpj2006 Jan 8, 2026
bb6b6b5
Update README.md
kpj-2006 Jan 8, 2026
4374501
Merge pull request #41 from kpj-2006/testing
kpj2006 Jan 8, 2026
b6e71ba
try inherit
kpj2006 Jan 8, 2026
5ee613b
Merge branch 'main' of https://github.com/automation-workflows/test2
kpj2006 Jan 8, 2026
26145ae
Update README.md
kpj-2006 Jan 8, 2026
aff7fef
Merge pull request #42 from kpj-2006/testing
kpj2006 Jan 8, 2026
b3642f5
Revert "try inherit"
kpj2006 Jan 8, 2026
8a04be2
Merge branch 'main' of https://github.com/automation-workflows/test2
kpj2006 Jan 8, 2026
2f4ac63
add manual trigger
kpj2006 Jan 8, 2026
ff3f8a1
add manaul assign role flow
kpj2006 Jan 9, 2026
6e7a981
Create manual-reward.yml
kpj2006 Jan 10, 2026
b0e2012
use resuable script
kpj2006 Jan 10, 2026
3d84b7b
Create test-contributor-label.yml
kpj2006 Jan 27, 2026
fa9b1e4
Change pull_request to pull_request_target event
kpj2006 Jan 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .github/workflows/debug-secrets.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Debug Secrets

on:
workflow_dispatch: # Manual trigger
push:
branches: [main] # Or remove this if you only want manual

jobs:
debug:
runs-on: ubuntu-latest
steps:
- name: Check all secrets
env:
GIST_PAT: ${{ secrets.GIST_PAT }}
DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }}
DISCORD_GUILD_ID: ${{ secrets.DISCORD_GUILD_ID }}
DISCORD_APPRENTICE_ROLE_ID: ${{ secrets.DISCORD_APPRENTICE_ROLE_ID }}
DISCORD_SENTINEL_ROLE_ID: ${{ secrets.DISCORD_SENTINEL_ROLE_ID }}
run: |
[ -n "$GIST_PAT" ] && echo "✓ GIST_PAT (${#GIST_PAT} chars)" || echo "❌ GIST_PAT missing"
[ -n "$DISCORD_BOT_TOKEN" ] && echo "✓ DISCORD_BOT_TOKEN (${#DISCORD_BOT_TOKEN} chars)" || echo "❌ DISCORD_BOT_TOKEN missing"
[ -n "$DISCORD_GUILD_ID" ] && echo "✓ DISCORD_GUILD_ID ($DISCORD_GUILD_ID)" || echo "❌ DISCORD_GUILD_ID missing"
[ -n "$DISCORD_APPRENTICE_ROLE_ID" ] && echo "✓ DISCORD_APPRENTICE_ROLE_ID ($DISCORD_APPRENTICE_ROLE_ID)" || echo "❌ DISCORD_APPRENTICE_ROLE_ID missing"
[ -n "$DISCORD_SENTINEL_ROLE_ID" ] && echo "✓ DISCORD_SENTINEL_ROLE_ID ($DISCORD_SENTINEL_ROLE_ID)" || echo "❌ DISCORD_SENTINEL_ROLE_ID missing"
82 changes: 82 additions & 0 deletions .github/workflows/manual-assign-role.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Manual Discord Role Assignment

on:
workflow_dispatch:
inputs:
discord_user_id:
description: 'Discord User ID (17-19 digits)'
required: true
type: string
role_name:
description: 'Role to assign'
required: true
type: choice
options:
- Apprentice
- Sentinel
- Knights

jobs:
assign-role:
runs-on: ubuntu-latest

steps:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install requests
run: pip install requests

- name: Assign Discord Role
env:
DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }}
DISCORD_GUILD_ID: ${{ secrets.DISCORD_GUILD_ID }}
DISCORD_USER_ID: ${{ inputs.discord_user_id }}
DISCORD_APPRENTICE_ROLE_ID: ${{ secrets.DISCORD_APPRENTICE_ROLE_ID }}
DISCORD_SENTINEL_ROLE_ID: ${{ secrets.DISCORD_SENTINEL_ROLE_ID }}
DISCORD_KNIGHTS_ROLE_ID: ${{ secrets.DISCORD_KNIGHTS_ROLE_ID }}
ROLE_NAME: ${{ inputs.role_name }}
run: |
python << 'EOF'
import os
import requests

# Get inputs
bot_token = os.environ['DISCORD_BOT_TOKEN']
guild_id = os.environ['DISCORD_GUILD_ID']
user_id = os.environ['DISCORD_USER_ID']
role_name = os.environ['ROLE_NAME']

# Determine role ID
if role_name == 'Apprentice':
role_id = os.environ['DISCORD_APPRENTICE_ROLE_ID']
elif role_name == 'Sentinel':
role_id = os.environ['DISCORD_SENTINEL_ROLE_ID']
elif role_name == 'Knights':
role_id = os.environ['DISCORD_KNIGHTS_ROLE_ID']
else:
print(f"✗ Unknown role: {role_name}")
exit(1)

print(f"Assigning {role_name} role (ID: {role_id}) to user {user_id}")

# Make Discord API request
url = f"https://discord.com/api/v10/guilds/{guild_id}/members/{user_id}/roles/{role_id}"
headers = {
"Authorization": f"Bot {bot_token}",
"Content-Type": "application/json"
}

response = requests.put(url, headers=headers, timeout=10)

# Log result
if response.status_code == 204:
print(f"✓ Successfully assigned {role_name} role")
exit(0)
else:
print(f"✗ Failed: {response.status_code}")
print(f"Response: {response.text}")
exit(1)
EOF
24 changes: 24 additions & 0 deletions .github/workflows/manual-reward.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Manual Reward Input

on:
workflow_dispatch:
inputs:
metamask:
description: "MetaMask Wallet Address"
required: true
type: string

tokens:
description: "Number of Tokens to Reward"
required: true
type: number

jobs:
reward:
runs-on: ubuntu-latest

steps:
- name: Print inputs (dummy check)
run: |
echo "Wallet: ${{ github.event.inputs.metamask }}"
echo "Tokens: ${{ github.event.inputs.tokens }}"
45 changes: 13 additions & 32 deletions .github/workflows/onboard-first-comment-trigger.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,35 +65,16 @@ jobs:
# Only post comment if user is NOT already onboarded
- name: Comment asking for Discord ID and wallet
if: steps.check_existing.outputs.exists == 'false'
uses: actions/github-script@v7
with:
script: |
const author = context.payload.pull_request.user.login;
const body = `🎉 **Congratulations @${author} on your first merged PR!**

To complete onboarding and receive your Discord **Apprentice** role, please comment **exactly** in this format:

\`\`\`
discord: "YOUR_DISCORD_USER_ID"
wallet: "YOUR_WALLET_ADDRESS"
\`\`\`

**How to find your Discord ID:**
1. Enable Developer Mode in Discord (Settings → Advanced)
2. Right-click your username → Copy User ID

**Wallet format:** Must start with \`0x\` (42 characters total)

⚠️ **Important:**
- Only the PR author's comment will be accepted
- You must be in the Discord server to be assigned a role

**Discord Server:** https://discord.gg/fuuWX4AbJt

⏰ **You have 7 days to respond.**`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body
});
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO_NAME: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_AUTHOR: ${{ github.event.pull_request.user.login }}
run: |
cd automation
python scripts/discord_manager.py \
--action ask_info \
--repo-name "$REPO_NAME" \
--pr-number $PR_NUMBER \
--pr-author "$PR_AUTHOR" \
--github-token "$GITHUB_TOKEN"
12 changes: 9 additions & 3 deletions .github/workflows/promote-trigger.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,22 @@ name: Check Promotion to Sentinel
on:
pull_request:
types: [closed]
workflow_dispatch:
inputs:
pr_author:
description: 'GitHub username to check for promotion'
required: true
type: string

jobs:
promote:
# Run after PR is merged to check if promotion is needed
if: github.event.pull_request.merged == true
if: github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch'
uses: automation-workflows/contributor-automation/.github/workflows/reusable-promote.yml@main
with:
pr_number: ${{ github.event.pull_request.number }}
pr_number: ${{ github.event.pull_request.number || 0 }}
repo_name: ${{ github.repository }}
pr_author: ${{ github.event.pull_request.user.login }}
pr_author: ${{ github.event.pull_request.user.login || inputs.pr_author }}
secrets:
GIST_PAT: ${{ secrets.GIST_PAT }}
DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }}
Expand Down
51 changes: 51 additions & 0 deletions .github/workflows/test-contributor-label.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Test Contributor Label

on:
pull_request_target:
types: [opened, reopened]

permissions:
contents: read
pull-requests: write
issues: write

jobs:
label-contributor:
runs-on: ubuntu-latest
steps:
- name: Label contributor type
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const prNumber = context.payload.pull_request.number;
const prAuthor = context.payload.pull_request.user.login;

console.log(`Checking contributor type for: ${prAuthor}`);

let label = 'external-contributor';

try {
const permissionLevel = await github.rest.repos.getCollaboratorPermissionLevel({
owner: context.repo.owner,
repo: context.repo.repo,
username: prAuthor
});

console.log(`Permission level: ${permissionLevel.data.permission}`);

if (['admin', 'maintain'].includes(permissionLevel.data.permission)) {
label = 'maintainer';
}
} catch (error) {
console.log(`Could not check permissions: ${error.message}`);
}

console.log(`Applying label: ${label}`);

await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
labels: [label]
});
53 changes: 43 additions & 10 deletions .github/workflows/update-trigger.yml
Original file line number Diff line number Diff line change
@@ -1,33 +1,66 @@
name: Update Contributor Registry

on:
pull_request:
pull_request_target:
types: [closed]
workflow_dispatch:

jobs:
calculate:
# Run on any merged PR (not just first-time contributors)
if: github.event.pull_request.merged == true
if: github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
outputs:
lines_changed: ${{ steps.calc.outputs.lines_changed }}
steps:
- name: Verify secrets configuration
env:
GIST_PAT: ${{ secrets.GIST_PAT }}
DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }}
DISCORD_GUILD_ID: ${{ secrets.DISCORD_GUILD_ID }}
run: |
echo "Checking required secrets..."

if [ -z "$GIST_PAT" ]; then
echo "❌ GIST_PAT secret is not configured"
exit 1
else
echo "✓ GIST_PAT is configured (length: ${#GIST_PAT} chars)"
fi

if [ -z "$DISCORD_BOT_TOKEN" ]; then
echo "⚠️ DISCORD_BOT_TOKEN is not configured (optional for registry update)"
else
echo "✓ DISCORD_BOT_TOKEN is configured (length: ${#DISCORD_BOT_TOKEN} chars)"
fi

if [ -z "$DISCORD_GUILD_ID" ]; then
echo "⚠️ DISCORD_GUILD_ID is not configured (optional for registry update)"
else
echo "✓ DISCORD_GUILD_ID is configured (value: $DISCORD_GUILD_ID)"
fi

- name: Calculate lines changed
id: calc
run: |
ADDITIONS=${{ github.event.pull_request.additions }}
DELETIONS=${{ github.event.pull_request.deletions }}
ADDITIONS=${{ github.event.pull_request.additions || 0 }}
DELETIONS=${{ github.event.pull_request.deletions || 0 }}
LINES_CHANGED=$((ADDITIONS + DELETIONS))
echo "lines_changed=$LINES_CHANGED" >> $GITHUB_OUTPUT

update:
needs: calculate
permissions:
contents: write
pull-requests: read
uses: automation-workflows/contributor-automation/.github/workflows/reusable-update-registry.yml@main
with:
pr_number: ${{ github.event.pull_request.number }}
pr_number: ${{ github.event.pull_request.number || 0 }}
repo_name: ${{ github.repository }}
pr_author: ${{ github.event.pull_request.user.login }}
lines_changed: ${{ fromJson(needs.calculate.outputs.lines_changed) }}
pr_labels: ${{ toJson(github.event.pull_request.labels.*.name) }}
secrets:
GIST_PAT: ${{ secrets.GIST_PAT }}
pr_author: ${{ github.event.pull_request.user.login || github.actor }}
lines_changed: ${{ needs.calculate.outputs.lines_changed }}
pr_labels: ${{ toJson(github.event.pull_request.labels.*.name || '[]') }}
secrets: inherit
28 changes: 27 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,33 @@ check 10
check 11
check 12
check 13

check 14
check 15
check 16
check 17
check 18
check 19
check 20
check 21
check 22
check 23
check 24
check 25
check 26
check 27
check 28
check 29
check 30
check 31
check 32
check 33
check 34
check 35
check 36
check 37
check 38
check 40
check 41
<!-- Don't delete it -->
<div name="readme-top"></div>

Expand Down