From 55031d91c6c4566cba9520fe13446a1ceaa54312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=BC=E1=84=8B=E1=85=B5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=AF=E1=86=AB?= Date: Wed, 8 Apr 2026 22:41:32 +0900 Subject: [PATCH 1/2] chore: standardize action metadata validation --- .github/workflows/validate-actions.yml | 29 ++++++++++++++++++++++++++ notify-on-branch-delete/action.yml | 4 ++++ notify-on-commit-comment/action.yml | 4 ++++ notify-on-failure/action.yml | 4 ++++ notify-on-issue/action.yml | 4 ++++ notify-on-pr/action.yml | 4 ++++ notify-on-push/action.yml | 4 ++++ notify-on-release/action.yml | 4 ++++ scripts/validate-actions.sh | 29 ++++++++++++++++++++++++++ 9 files changed, 86 insertions(+) create mode 100644 .github/workflows/validate-actions.yml create mode 100755 scripts/validate-actions.sh diff --git a/.github/workflows/validate-actions.yml b/.github/workflows/validate-actions.yml new file mode 100644 index 0000000..80b7e1f --- /dev/null +++ b/.github/workflows/validate-actions.yml @@ -0,0 +1,29 @@ +name: Validate actions metadata + +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + +jobs: + actionlint: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Run actionlint + uses: rhysd/actionlint@v1 + + metadata: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Validate action.yml standards + run: ./scripts/validate-actions.sh diff --git a/notify-on-branch-delete/action.yml b/notify-on-branch-delete/action.yml index cbf738f..635dc53 100644 --- a/notify-on-branch-delete/action.yml +++ b/notify-on-branch-delete/action.yml @@ -15,6 +15,10 @@ inputs: description: 'Telegram Chat ID' required: false +branding: + icon: 'bell' + color: 'blue' + runs: using: 'node20' main: 'dist/index.js' diff --git a/notify-on-commit-comment/action.yml b/notify-on-commit-comment/action.yml index 5804f7a..bca0f44 100644 --- a/notify-on-commit-comment/action.yml +++ b/notify-on-commit-comment/action.yml @@ -13,6 +13,10 @@ inputs: telegram_chat_id: description: 'Telegram Chat ID' required: false +branding: + icon: 'bell' + color: 'blue' + runs: using: 'node20' main: 'dist/index.js' diff --git a/notify-on-failure/action.yml b/notify-on-failure/action.yml index 8fc36a0..d70bb79 100644 --- a/notify-on-failure/action.yml +++ b/notify-on-failure/action.yml @@ -16,6 +16,10 @@ inputs: job_name: description: 'Name of the failed job' required: false +branding: + icon: 'bell' + color: 'blue' + runs: using: 'node20' main: 'dist/index.js' \ No newline at end of file diff --git a/notify-on-issue/action.yml b/notify-on-issue/action.yml index 817e757..4741e3a 100644 --- a/notify-on-issue/action.yml +++ b/notify-on-issue/action.yml @@ -13,6 +13,10 @@ inputs: telegram_chat_id: description: 'Telegram Chat ID' required: false +branding: + icon: 'bell' + color: 'blue' + runs: using: 'node20' main: 'dist/index.js' diff --git a/notify-on-pr/action.yml b/notify-on-pr/action.yml index 4691f0e..b2aba45 100644 --- a/notify-on-pr/action.yml +++ b/notify-on-pr/action.yml @@ -16,6 +16,10 @@ inputs: github_token: description: 'GitHub Token for fetching PR details' required: true +branding: + icon: 'bell' + color: 'blue' + runs: using: 'node20' main: 'dist/index.js' diff --git a/notify-on-push/action.yml b/notify-on-push/action.yml index 54a2b34..5f27e89 100644 --- a/notify-on-push/action.yml +++ b/notify-on-push/action.yml @@ -35,6 +35,10 @@ inputs: required: false default: 'false' +branding: + icon: 'bell' + color: 'blue' + runs: using: 'node20' main: 'dist/index.js' diff --git a/notify-on-release/action.yml b/notify-on-release/action.yml index e48d324..e84be9e 100644 --- a/notify-on-release/action.yml +++ b/notify-on-release/action.yml @@ -13,6 +13,10 @@ inputs: telegram_chat_id: description: 'Telegram Chat ID' required: false +branding: + icon: 'bell' + color: 'blue' + runs: using: 'node20' main: 'dist/index.js' diff --git a/scripts/validate-actions.sh b/scripts/validate-actions.sh new file mode 100755 index 0000000..9275c11 --- /dev/null +++ b/scripts/validate-actions.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$ROOT_DIR" + +fail() { + echo "❌ $1" >&2 + exit 1 +} + +echo "🔎 Validating action metadata..." + +mapfile -t action_files < <(find . -mindepth 2 -maxdepth 2 -name action.yml | sort) +[[ ${#action_files[@]} -gt 0 ]] || fail "No action.yml files found" + +for file in "${action_files[@]}"; do + dir="$(dirname "$file")" + echo "- $file" + + grep -Eq "^runs:" "$file" || fail "$file: missing runs block" + grep -Eq "^[[:space:]]+using:[[:space:]]*'node20'" "$file" || fail "$file: runs.using must be 'node20'" + grep -Eq "^[[:space:]]+main:[[:space:]]*'dist/index.js'" "$file" || fail "$file: runs.main must be 'dist/index.js'" + grep -Eq "^branding:" "$file" || fail "$file: missing branding block" + + [[ -f "$dir/dist/index.js" ]] || fail "$dir/dist/index.js is missing" +done + +echo "✅ Metadata validation passed" From b3f134b662a9aad36abb935846a9774990695788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=BC=E1=84=8B=E1=85=B5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=AF=E1=86=AB?= Date: Sat, 16 May 2026 17:41:06 +0900 Subject: [PATCH 2/2] ci: install actionlint binary in validation workflow --- .github/workflows/validate-actions.yml | 10 +++++++++- scripts/validate-actions.sh | 6 +++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/validate-actions.yml b/.github/workflows/validate-actions.yml index 80b7e1f..c165bd6 100644 --- a/.github/workflows/validate-actions.yml +++ b/.github/workflows/validate-actions.yml @@ -16,8 +16,16 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Install actionlint + run: | + curl -sSL \ + https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz \ + -o actionlint.tar.gz + tar -xzf actionlint.tar.gz actionlint + sudo mv actionlint /usr/local/bin/actionlint + - name: Run actionlint - uses: rhysd/actionlint@v1 + run: actionlint metadata: runs-on: ubuntu-latest diff --git a/scripts/validate-actions.sh b/scripts/validate-actions.sh index 9275c11..53585f5 100755 --- a/scripts/validate-actions.sh +++ b/scripts/validate-actions.sh @@ -5,11 +5,11 @@ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT_DIR" fail() { - echo "❌ $1" >&2 + echo "[FAIL] $1" >&2 exit 1 } -echo "🔎 Validating action metadata..." +echo "Validating action metadata..." mapfile -t action_files < <(find . -mindepth 2 -maxdepth 2 -name action.yml | sort) [[ ${#action_files[@]} -gt 0 ]] || fail "No action.yml files found" @@ -26,4 +26,4 @@ for file in "${action_files[@]}"; do [[ -f "$dir/dist/index.js" ]] || fail "$dir/dist/index.js is missing" done -echo "✅ Metadata validation passed" +echo "Metadata validation passed"