ci(l1): consolidate Slack failure webhooks into a single secret#6526
ci(l1): consolidate Slack failure webhooks into a single secret#6526
Conversation
ETHREX_INTERNO_SLACK_WEBHOOK across the three workflows that use them. In common_failure_alerts.yaml the L1/L2 branching in the Select Slack webhook step is collapsed to a single line. In daily_hive_report.yaml the two-webhook format() call is collapsed to a single webhook. In daily_snapsync.yaml both SLACK_WEBHOOK_URL_FAILURE references are updated.
🤖 Claude Code ReviewPR #6526 Review —
|
🤖 Kimi Code ReviewThis PR consolidates Slack webhook configurations from separate L1/L2 channels into a single internal channel. The changes are straightforward, but there are operational considerations: Critical: Secret Configuration
Behavioral Change - L2 Notification Loss
Code Quality
Security
Recommendation: Add a PR comment or commit message documenting that this change intentionally removes L1/L2 notification segregation in favor of a unified channel. Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt |
There was a problem hiding this comment.
Pull request overview
This PR consolidates CI failure Slack notifications by replacing the separate L1/L2 failure webhooks with a single repository secret (ETHREX_INTERNO_SLACK_WEBHOOK) across the relevant GitHub Actions workflows.
Changes:
- Updated Daily Snapsync workflows to use
ETHREX_INTERNO_SLACK_WEBHOOKfor failure notifications. - Simplified Daily Hive Report Slack posting to use a single webhook instead of formatting two.
- Removed L1/L2 branching logic in common failure alerts and always selects the consolidated webhook.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
.github/workflows/daily_snapsync.yaml |
Switch failure Slack webhook env var to ETHREX_INTERNO_SLACK_WEBHOOK for both snapsync jobs. |
.github/workflows/daily_hive_report.yaml |
Replace two-webhook format() expression with the consolidated webhook for scheduled runs. |
.github/workflows/common_failure_alerts.yaml |
Remove workflow-name-based L1/L2 webhook selection and always use the consolidated webhook. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Greptile SummaryThis PR consolidates three CI workflows from two separate Slack webhooks ( Confidence Score: 5/5Safe to merge — purely a secret-name consolidation with no behavioral changes beyond routing notifications to one channel instead of two. All three files make targeted, correct substitutions. The only finding is a P2 style suggestion to remove a now-trivial intermediate step in common_failure_alerts.yaml. No files require special attention.
|
| Filename | Overview |
|---|---|
| .github/workflows/common_failure_alerts.yaml | Replaces L1/L2 webhook branching with a single ETHREX_INTERNO_SLACK_WEBHOOK; the intermediate select_webhook step is now a trivial pass-through. |
| .github/workflows/daily_hive_report.yaml | Collapses two-webhook format() call into a single ETHREX_INTERNO_SLACK_WEBHOOK; the for-loop still works correctly with one webhook. |
| .github/workflows/daily_snapsync.yaml | Updates SLACK_WEBHOOK_URL_FAILURE in both lighthouse and prysm jobs from ETHREX_L1_SLACK_WEBHOOK to ETHREX_INTERNO_SLACK_WEBHOOK. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[CI Workflow Fails] --> B{common_failure_alerts}
B -->|before| C[Branch on L1 vs L2 name]
C --> D[ETHREX_L1_SLACK_WEBHOOK]
C --> E[ETHREX_L2_SLACK_WEBHOOK]
B -->|after| F[ETHREX_INTERNO_SLACK_WEBHOOK]
G[daily_hive_report] -->|before| H["format(L1, L2) → two webhooks"]
G -->|after| I[ETHREX_INTERNO_SLACK_WEBHOOK]
J[daily_snapsync lighthouse/prysm] -->|before| K[ETHREX_L1_SLACK_WEBHOOK on failure]
J -->|after| L[ETHREX_INTERNO_SLACK_WEBHOOK on failure]
D -.->|consolidated| F
E -.->|consolidated| F
H -.->|consolidated| I
K -.->|consolidated| L
Prompt To Fix All With AI
This is a comment left during a code review.
Path: .github/workflows/common_failure_alerts.yaml
Line: 36-40
Comment:
**Intermediate step now a no-op**
The `select_webhook` step no longer branches on anything — it just echoes a constant secret. Consider removing the step and passing the secret directly to `notify_workflow_failure.sh` as an env var, which simplifies the job.
```suggestion
- name: Post failure to Slack
env:
REPO: ${{ github.repository }}
WORKFLOW_NAME: ${{ github.event.workflow_run.name }}
CONCLUSION: ${{ github.event.workflow_run.conclusion }}
RUN_HTML_URL: ${{ github.event.workflow_run.html_url }}
RUN_ID: ${{ github.event.workflow_run.id }}
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
FAILED_JOBS: ${{ steps.failed_jobs.outputs.names }}
SLACK_WEBHOOK: ${{ secrets.ETHREX_INTERNO_SLACK_WEBHOOK }}
run: |
bash .github/scripts/notify_workflow_failure.sh "$SLACK_WEBHOOK"
```
(This also avoids routing the secret through `GITHUB_OUTPUT`.)
How can I resolve this? If you propose a fix, please make it concise.Reviews (1): Last reviewed commit: "Replace ETHREX_L1_SLACK_WEBHOOK and ETHR..." | Re-trigger Greptile
| - name: Select Slack webhook | ||
| id: select_webhook | ||
| run: | | ||
| WF_NAME="${{ github.event.workflow_run.name }}" | ||
| if echo "$WF_NAME" | grep -Eiq 'L2'; then | ||
| echo "webhook=${{ secrets.ETHREX_L2_SLACK_WEBHOOK }}" >> "$GITHUB_OUTPUT" | ||
| else | ||
| echo "webhook=${{ secrets.ETHREX_L1_SLACK_WEBHOOK }}" >> "$GITHUB_OUTPUT" | ||
| fi | ||
| echo "webhook=${{ secrets.ETHREX_INTERNO_SLACK_WEBHOOK }}" >> "$GITHUB_OUTPUT" | ||
|
|
There was a problem hiding this comment.
The select_webhook step no longer branches on anything — it just echoes a constant secret. Consider removing the step and passing the secret directly to notify_workflow_failure.sh as an env var, which simplifies the job.
| - name: Select Slack webhook | |
| id: select_webhook | |
| run: | | |
| WF_NAME="${{ github.event.workflow_run.name }}" | |
| if echo "$WF_NAME" | grep -Eiq 'L2'; then | |
| echo "webhook=${{ secrets.ETHREX_L2_SLACK_WEBHOOK }}" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "webhook=${{ secrets.ETHREX_L1_SLACK_WEBHOOK }}" >> "$GITHUB_OUTPUT" | |
| fi | |
| echo "webhook=${{ secrets.ETHREX_INTERNO_SLACK_WEBHOOK }}" >> "$GITHUB_OUTPUT" | |
| - name: Post failure to Slack | |
| env: | |
| REPO: ${{ github.repository }} | |
| WORKFLOW_NAME: ${{ github.event.workflow_run.name }} | |
| CONCLUSION: ${{ github.event.workflow_run.conclusion }} | |
| RUN_HTML_URL: ${{ github.event.workflow_run.html_url }} | |
| RUN_ID: ${{ github.event.workflow_run.id }} | |
| HEAD_SHA: ${{ github.event.workflow_run.head_sha }} | |
| FAILED_JOBS: ${{ steps.failed_jobs.outputs.names }} | |
| SLACK_WEBHOOK: ${{ secrets.ETHREX_INTERNO_SLACK_WEBHOOK }} | |
| run: | | |
| bash .github/scripts/notify_workflow_failure.sh "$SLACK_WEBHOOK" |
(This also avoids routing the secret through GITHUB_OUTPUT.)
Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/workflows/common_failure_alerts.yaml
Line: 36-40
Comment:
**Intermediate step now a no-op**
The `select_webhook` step no longer branches on anything — it just echoes a constant secret. Consider removing the step and passing the secret directly to `notify_workflow_failure.sh` as an env var, which simplifies the job.
```suggestion
- name: Post failure to Slack
env:
REPO: ${{ github.repository }}
WORKFLOW_NAME: ${{ github.event.workflow_run.name }}
CONCLUSION: ${{ github.event.workflow_run.conclusion }}
RUN_HTML_URL: ${{ github.event.workflow_run.html_url }}
RUN_ID: ${{ github.event.workflow_run.id }}
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
FAILED_JOBS: ${{ steps.failed_jobs.outputs.names }}
SLACK_WEBHOOK: ${{ secrets.ETHREX_INTERNO_SLACK_WEBHOOK }}
run: |
bash .github/scripts/notify_workflow_failure.sh "$SLACK_WEBHOOK"
```
(This also avoids routing the secret through `GITHUB_OUTPUT`.)
How can I resolve this? If you propose a fix, please make it concise.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
🤖 Codex Code ReviewFindings
Open Questions
No Rust/EVM/consensus code is touched here. Outside the secret-provisioning risk above, the workflow edits are straightforward. Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
Motivation
Consolidate CI failure notifications onto a single Slack webhook.
Description
Replace
ETHREX_L1_SLACK_WEBHOOKandETHREX_L2_SLACK_WEBHOOKwithETHREX_INTERNO_SLACK_WEBHOOKin:.github/workflows/common_failure_alerts.yaml— collapse the L1/L2 branching into a single webhook..github/workflows/daily_snapsync.yaml— update both jobs..github/workflows/daily_hive_report.yaml— collapse the two-webhookformat()call into a single webhook.The
ETHREX_INTERNO_SLACK_WEBHOOKrepo secret has been created.Checklist
STORE_SCHEMA_VERSION(crates/storage/lib.rs) if the PR includes breaking changes to theStorerequiring a re-sync. — N/A