-
Notifications
You must be signed in to change notification settings - Fork 46
Copilot/build social wallet platform #399
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 16 commits
71a9fdf
48a128c
d46bb85
e738b5b
1d99fe3
0f27c48
295c095
4bda5b9
face0a1
6404845
39ec976
e593769
b97fd25
ad5412c
cee570f
6ff9019
0f88efe
bab0a58
83f0bb0
6612d37
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1,34 @@ | ||
| # Contributions | ||
| # Contributing Guidelines | ||
|
|
||
| Thank you for your interest in contributing to the Ethereum Follow Protocol App! | ||
|
|
||
| For detailed contributing guidelines, please see our comprehensive documentation: | ||
|
|
||
| **[Complete Contributing Guide](../docs/CONTRIBUTING.md)** | ||
|
|
||
| ## Quick Start | ||
|
|
||
| 1. **Fork the repository** and clone it locally | ||
| 2. **Install dependencies**: `bun install` | ||
| 3. **Create a branch**: `git checkout -b feature/your-feature` | ||
| 4. **Make your changes** following our code style | ||
| 5. **Test your changes**: `bun lint && bun typecheck && bun run build` | ||
| 6. **Commit**: Use conventional commit format | ||
| 7. **Push** and create a pull request | ||
|
|
||
| ## Resources | ||
|
|
||
| - [Documentation](../docs/README.md) | ||
| - [Architecture Guide](../docs/ARCHITECTURE.md) | ||
| - [Development Guidelines](../docs/CONTRIBUTING.md) | ||
| - [API Documentation](../docs/API.md) | ||
|
|
||
| ## Code of Conduct | ||
|
|
||
| Be respectful, inclusive, and constructive in all interactions. | ||
|
|
||
| ## Questions? | ||
|
|
||
| - **Discord**: [Discord](https://discord.efp.app) | ||
| - **Discussions**: [GitHub Discussions](https://github.com/SMSDAO/app/discussions) | ||
| - **Email**: [encrypted@ethfollow.xyz](mailto:encrypted@ethfollow.xyz) | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,117 @@ | ||||||||||||||||||||||||||||||||||||||||||||
| # Auto Merge Workflow | ||||||||||||||||||||||||||||||||||||||||||||
| # Automatically merges pull requests that meet all requirements | ||||||||||||||||||||||||||||||||||||||||||||
| # Only runs for PRs with 'auto-merge' label or from dependabot | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| name: Auto Merge | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| on: | ||||||||||||||||||||||||||||||||||||||||||||
| pull_request: | ||||||||||||||||||||||||||||||||||||||||||||
| types: [opened, synchronize, reopened, labeled] | ||||||||||||||||||||||||||||||||||||||||||||
| pull_request_review: | ||||||||||||||||||||||||||||||||||||||||||||
| types: [submitted] | ||||||||||||||||||||||||||||||||||||||||||||
| check_suite: | ||||||||||||||||||||||||||||||||||||||||||||
| types: [completed] | ||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+12
to
+13
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The This means auto-merge will never trigger when checks complete—only on PR events or review submissions. Consider one of these approaches:
Also applies to: 20-22 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| jobs: | ||||||||||||||||||||||||||||||||||||||||||||
| auto-merge: | ||||||||||||||||||||||||||||||||||||||||||||
| runs-on: ubuntu-latest | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # Only run for PRs with 'auto-merge' label or from dependabot | ||||||||||||||||||||||||||||||||||||||||||||
| if: | | ||||||||||||||||||||||||||||||||||||||||||||
| github.event.pull_request.user.login == 'dependabot[bot]' || | ||||||||||||||||||||||||||||||||||||||||||||
| contains(github.event.pull_request.labels.*.name, 'auto-merge') | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # Permissions required for merging PRs | ||||||||||||||||||||||||||||||||||||||||||||
| permissions: | ||||||||||||||||||||||||||||||||||||||||||||
| contents: write # Write to merge commits | ||||||||||||||||||||||||||||||||||||||||||||
| pull-requests: write # Update PR status | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| steps: | ||||||||||||||||||||||||||||||||||||||||||||
| # Step 1: Checkout repository code | ||||||||||||||||||||||||||||||||||||||||||||
| - name: 🔑 Checkout | ||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/checkout@v4 | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # Step 2: Display auto-merge configuration | ||||||||||||||||||||||||||||||||||||||||||||
| - name: 🤖 Auto Merge Configuration | ||||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||||
| echo "Auto-merge workflow triggered" | ||||||||||||||||||||||||||||||||||||||||||||
| echo "PR #${{ github.event.pull_request.number }}" | ||||||||||||||||||||||||||||||||||||||||||||
| echo "Author: ${{ github.event.pull_request.user.login }}" | ||||||||||||||||||||||||||||||||||||||||||||
| echo "" | ||||||||||||||||||||||||||||||||||||||||||||
| echo "Requirements for auto-merge:" | ||||||||||||||||||||||||||||||||||||||||||||
| echo "- All required checks must pass" | ||||||||||||||||||||||||||||||||||||||||||||
| echo "- PR must be approved by maintainer" | ||||||||||||||||||||||||||||||||||||||||||||
| echo "- No merge conflicts" | ||||||||||||||||||||||||||||||||||||||||||||
| echo "- Branch is up to date with base" | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # Step 3: Check conditions and attempt to merge | ||||||||||||||||||||||||||||||||||||||||||||
| - name: ✅ Enable Auto-Merge | ||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/github-script@v7 | ||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||
| github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||||||||||||||||||||||||||||||||||||||||
| script: | | ||||||||||||||||||||||||||||||||||||||||||||
| const pr = context.payload.pull_request; | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| // Verify this is a pull request event | ||||||||||||||||||||||||||||||||||||||||||||
| if (!pr) { | ||||||||||||||||||||||||||||||||||||||||||||
| console.log('Not a pull request event'); | ||||||||||||||||||||||||||||||||||||||||||||
| return; | ||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| // Check if PR qualifies for auto-merge | ||||||||||||||||||||||||||||||||||||||||||||
| const shouldAutoMerge = | ||||||||||||||||||||||||||||||||||||||||||||
| pr.user.login === 'dependabot[bot]' || | ||||||||||||||||||||||||||||||||||||||||||||
| pr.labels.some(label => label.name === 'auto-merge'); | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| if (!shouldAutoMerge) { | ||||||||||||||||||||||||||||||||||||||||||||
| console.log('PR does not qualify for auto-merge'); | ||||||||||||||||||||||||||||||||||||||||||||
| return; | ||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| console.log('PR qualifies for auto-merge'); | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| // Verify all required checks have passed | ||||||||||||||||||||||||||||||||||||||||||||
| const { data: checks } = await github.rest.checks.listForRef({ | ||||||||||||||||||||||||||||||||||||||||||||
| owner: context.repo.owner, | ||||||||||||||||||||||||||||||||||||||||||||
| repo: context.repo.repo, | ||||||||||||||||||||||||||||||||||||||||||||
| ref: pr.head.sha | ||||||||||||||||||||||||||||||||||||||||||||
| }); | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| const allChecksPassed = checks.check_runs.every(check => | ||||||||||||||||||||||||||||||||||||||||||||
| check.conclusion === 'success' || check.status === 'completed' | ||||||||||||||||||||||||||||||||||||||||||||
SMSDAO marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||
| ); | ||||||||||||||||||||||||||||||||||||||||||||
coderabbitai[bot] marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| if (!allChecksPassed) { | ||||||||||||||||||||||||||||||||||||||||||||
| console.log('Not all checks have passed yet, waiting...'); | ||||||||||||||||||||||||||||||||||||||||||||
| return; | ||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+80
to
+87
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Empty
🐛 Proposed fix const allChecksPassed = checks.check_runs.every(check =>
check.conclusion === 'success'
);
- if (!allChecksPassed) {
+ if (checks.check_runs.length === 0) {
+ console.log('No check runs found, waiting for checks to register...');
+ return;
+ }
+
+ if (!allChecksPassed) {
console.log('Not all checks have passed yet, waiting...');
return;
}📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| // Verify PR has been approved (skip for dependabot) | ||||||||||||||||||||||||||||||||||||||||||||
| const { data: reviews } = await github.rest.pulls.listReviews({ | ||||||||||||||||||||||||||||||||||||||||||||
| owner: context.repo.owner, | ||||||||||||||||||||||||||||||||||||||||||||
| repo: context.repo.repo, | ||||||||||||||||||||||||||||||||||||||||||||
| pull_number: pr.number | ||||||||||||||||||||||||||||||||||||||||||||
| }); | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| const isApproved = reviews.some(review => review.state === 'APPROVED'); | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| if (!isApproved && pr.user.login !== 'dependabot[bot]') { | ||||||||||||||||||||||||||||||||||||||||||||
| console.log('PR not approved yet, waiting for review...'); | ||||||||||||||||||||||||||||||||||||||||||||
| return; | ||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+96
to
+101
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider blocking merge when changes are requested. The current logic only checks for 💡 Suggested improvement const isApproved = reviews.some(review => review.state === 'APPROVED');
+ const hasChangesRequested = reviews.some(review => review.state === 'CHANGES_REQUESTED');
- if (!isApproved && pr.user.login !== 'dependabot[bot]') {
+ if (hasChangesRequested) {
+ console.log('Changes requested, cannot auto-merge');
+ return;
+ }
+
+ if (!isApproved && pr.user.login !== 'dependabot[bot]') {
console.log('PR not approved yet, waiting for review...');
return;
}📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| console.log('All conditions met, attempting to merge...'); | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| // Attempt to merge the PR | ||||||||||||||||||||||||||||||||||||||||||||
| try { | ||||||||||||||||||||||||||||||||||||||||||||
| await github.rest.pulls.merge({ | ||||||||||||||||||||||||||||||||||||||||||||
| owner: context.repo.owner, | ||||||||||||||||||||||||||||||||||||||||||||
| repo: context.repo.repo, | ||||||||||||||||||||||||||||||||||||||||||||
| pull_number: pr.number, | ||||||||||||||||||||||||||||||||||||||||||||
| merge_method: 'squash' | ||||||||||||||||||||||||||||||||||||||||||||
| }); | ||||||||||||||||||||||||||||||||||||||||||||
| console.log('✅ PR merged successfully'); | ||||||||||||||||||||||||||||||||||||||||||||
| } catch (error) { | ||||||||||||||||||||||||||||||||||||||||||||
| console.log('Could not merge PR:', error.message); | ||||||||||||||||||||||||||||||||||||||||||||
| console.log('This may be due to merge conflicts or other restrictions'); | ||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,115 @@ | ||
| # Build Documentation Workflow | ||
| # Validates documentation files on changes to docs/ directory | ||
| # Checks for broken links and ensures all required documentation exists | ||
|
|
||
| name: Build Documentation | ||
|
|
||
| on: | ||
| pull_request: | ||
| paths: | ||
| - 'docs/**' | ||
| - '.github/workflows/build-docs.yml' | ||
| push: | ||
| branches: [main] | ||
| paths: | ||
| - 'docs/**' | ||
| workflow_dispatch: | ||
|
|
||
| jobs: | ||
| build-docs: | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 5 | ||
|
|
||
| # Minimal permissions - only needs to read repository content | ||
| permissions: | ||
| contents: read | ||
|
|
||
| steps: | ||
| # Step 1: Checkout repository code | ||
| - name: 🔑 Checkout | ||
| uses: actions/checkout@v4 | ||
|
|
||
| # Step 2: Setup Node.js for markdown tools | ||
| - name: 📦 Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: '20' | ||
| cache: 'npm' | ||
|
|
||
| # Step 3: Install markdown link checker tool | ||
| - name: 📥 Install markdown-link-check | ||
| run: npm install -g markdown-link-check | ||
|
|
||
| # Step 4: Check all markdown files for broken links | ||
| - name: 🔗 Check Markdown Links | ||
| run: | | ||
| # Create config file for markdown-link-check | ||
| cat > .markdown-link-check.json << 'EOF' | ||
| { | ||
| "ignorePatterns": [ | ||
| { | ||
| "pattern": "^http://localhost" | ||
| }, | ||
| { | ||
| "pattern": "^https://efp.app" | ||
| } | ||
| ], | ||
| "timeout": "20s", | ||
| "retryOn429": true, | ||
| "retryCount": 3, | ||
| "fallbackRetryDelay": "30s" | ||
| } | ||
| EOF | ||
|
|
||
| # Check all markdown files | ||
| for file in docs/*.md; do | ||
| if [ -f "$file" ]; then | ||
| echo "Checking $file..." | ||
| markdown-link-check "$file" --config .markdown-link-check.json || true | ||
| fi | ||
| done | ||
|
|
||
| # Step 5: Validate that all required documentation files exist | ||
| - name: 📝 Validate Documentation Structure | ||
| run: | | ||
| required_files=( | ||
| "docs/README.md" | ||
| "docs/ARCHITECTURE.md" | ||
| "docs/API.md" | ||
| "docs/FEATURES.md" | ||
| "docs/DEPLOYMENT.md" | ||
| "docs/WORKFLOWS.md" | ||
| "docs/MONITORING.md" | ||
| "docs/SEO.md" | ||
| "docs/CONTRIBUTING.md" | ||
| ) | ||
|
|
||
| missing_files=() | ||
| for file in "${required_files[@]}"; do | ||
| if [ ! -f "$file" ]; then | ||
| missing_files+=("$file") | ||
| fi | ||
| done | ||
|
|
||
| if [ ${#missing_files[@]} -gt 0 ]; then | ||
| echo "❌ Missing required documentation files:" | ||
| printf '%s\n' "${missing_files[@]}" | ||
| exit 1 | ||
| fi | ||
|
|
||
| echo "✅ All required documentation files are present" | ||
|
|
||
| # Step 6: Display documentation statistics | ||
| - name: 📊 Documentation Statistics | ||
| run: | | ||
| echo "📊 Documentation Statistics:" | ||
| echo "Total markdown files: $(find docs -name '*.md' | wc -l)" | ||
| echo "Total lines: $(find docs -name '*.md' -exec wc -l {} + | tail -1)" | ||
| echo "" | ||
| echo "Files by size:" | ||
| find docs -name '*.md' -exec wc -l {} + | sort -rn | head -10 | ||
|
|
||
| # Step 7: Success message | ||
| - name: ✅ Documentation Build Complete | ||
| if: success() | ||
| run: echo "Documentation validation passed successfully!" |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,88 @@ | ||||||||||||||||||||||||||||||||||||||||||
| # Deploy Workflow | ||||||||||||||||||||||||||||||||||||||||||
| # Deploys the application to production on merge to main branch | ||||||||||||||||||||||||||||||||||||||||||
| # Runs full test suite before deployment to ensure quality | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| name: Deploy | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| on: | ||||||||||||||||||||||||||||||||||||||||||
| push: | ||||||||||||||||||||||||||||||||||||||||||
| branches: [main] | ||||||||||||||||||||||||||||||||||||||||||
| workflow_dispatch: | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| # Prevent concurrent deployments | ||||||||||||||||||||||||||||||||||||||||||
| concurrency: | ||||||||||||||||||||||||||||||||||||||||||
| group: ${{ github.workflow }}-${{ github.ref }} | ||||||||||||||||||||||||||||||||||||||||||
| cancel-in-progress: false | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| # Environment variables for deployment | ||||||||||||||||||||||||||||||||||||||||||
| env: | ||||||||||||||||||||||||||||||||||||||||||
| NODE_OPTIONS: '--no-warnings' | ||||||||||||||||||||||||||||||||||||||||||
| NEXT_TELEMETRY_DISABLED: '1' | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| jobs: | ||||||||||||||||||||||||||||||||||||||||||
| deploy: | ||||||||||||||||||||||||||||||||||||||||||
| runs-on: ubuntu-latest | ||||||||||||||||||||||||||||||||||||||||||
| timeout-minutes: 20 | ||||||||||||||||||||||||||||||||||||||||||
| environment: production | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| # Minimal permissions for deployment | ||||||||||||||||||||||||||||||||||||||||||
| permissions: | ||||||||||||||||||||||||||||||||||||||||||
| contents: read | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| steps: | ||||||||||||||||||||||||||||||||||||||||||
| # Step 1: Checkout the repository code | ||||||||||||||||||||||||||||||||||||||||||
| - name: 🔑 Checkout | ||||||||||||||||||||||||||||||||||||||||||
| uses: actions/checkout@v4 | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| # Step 2: Setup Bun runtime | ||||||||||||||||||||||||||||||||||||||||||
| - name: 📦 Setup Bun | ||||||||||||||||||||||||||||||||||||||||||
| uses: oven-sh/setup-bun@v1 | ||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||
| bun-version: latest | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| # Step 3: Cache dependencies for faster builds | ||||||||||||||||||||||||||||||||||||||||||
| - name: 📥 Cache Dependencies | ||||||||||||||||||||||||||||||||||||||||||
| uses: actions/cache@v4 | ||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||
| path: | | ||||||||||||||||||||||||||||||||||||||||||
| ~/.bun/install/cache | ||||||||||||||||||||||||||||||||||||||||||
| node_modules | ||||||||||||||||||||||||||||||||||||||||||
| .next/cache | ||||||||||||||||||||||||||||||||||||||||||
| key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} | ||||||||||||||||||||||||||||||||||||||||||
| restore-keys: | | ||||||||||||||||||||||||||||||||||||||||||
| ${{ runner.os }}-bun- | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| # Step 4: Install project dependencies | ||||||||||||||||||||||||||||||||||||||||||
| - name: 🔧 Install Dependencies | ||||||||||||||||||||||||||||||||||||||||||
| run: bun install --frozen-lockfile | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| # Step 5: Run tests to verify code quality before deployment | ||||||||||||||||||||||||||||||||||||||||||
| - name: 🔍 Run Tests | ||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||
| bun lint | ||||||||||||||||||||||||||||||||||||||||||
| bun typecheck | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| # Step 6: Build the production application | ||||||||||||||||||||||||||||||||||||||||||
| - name: 🏗️ Build Application | ||||||||||||||||||||||||||||||||||||||||||
| run: bun run build | ||||||||||||||||||||||||||||||||||||||||||
| env: | ||||||||||||||||||||||||||||||||||||||||||
| NODE_ENV: production | ||||||||||||||||||||||||||||||||||||||||||
| NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID: ${{ secrets.NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID }} | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| # Step 7: Deploy to Vercel (configured via Vercel GitHub integration) | ||||||||||||||||||||||||||||||||||||||||||
| - name: 🚀 Deploy to Vercel | ||||||||||||||||||||||||||||||||||||||||||
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' | ||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||
| echo "Deployment to Vercel is configured via Vercel GitHub integration" | ||||||||||||||||||||||||||||||||||||||||||
| echo "Visit https://vercel.com/dashboard to configure automatic deployments" | ||||||||||||||||||||||||||||||||||||||||||
| echo "Commit SHA: ${{ github.sha }}" | ||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||
| # Step 8: Display deployment summary | ||||||||||||||||||||||||||||||||||||||||||
| - name: 📊 Deployment Summary | ||||||||||||||||||||||||||||||||||||||||||
| if: success() | ||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||
| echo "✅ Deployment completed successfully!" | ||||||||||||||||||||||||||||||||||||||||||
| echo "Commit: ${{ github.sha }}" | ||||||||||||||||||||||||||||||||||||||||||
| echo "Branch: ${{ github.ref_name }}" | ||||||||||||||||||||||||||||||||||||||||||
| echo "Author: ${{ github.actor }}" | ||||||||||||||||||||||||||||||||||||||||||
| echo "Message: ${{ github.event.head_commit.message }}" | ||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+80
to
+88
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Script injection vulnerability via commit message.
Recommended fix # Step 8: Display deployment summary
- name: 📊 Deployment Summary
if: success()
+ env:
+ COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
run: |
echo "✅ Deployment completed successfully!"
echo "Commit: ${{ github.sha }}"
echo "Branch: ${{ github.ref_name }}"
echo "Author: ${{ github.actor }}"
- echo "Message: ${{ github.event.head_commit.message }}"
+ echo "Message: $COMMIT_MESSAGE"📝 Committable suggestion
Suggested change
🧰 Tools🪛 actionlint (1.7.10)[error] 83-83: "github.event.head_commit.message" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks for more details (expression) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent repository URL.
The discussions link points to
SMSDAO/appbut the PR is forethereumfollowprotocol/app. Verify and align with the correct repository.Suggested fix
📝 Committable suggestion
🤖 Prompt for AI Agents