Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
4fca76f
Create codeql.yml
imfromfuture3000-Android Nov 12, 2025
190efc2
Bump peter-evans/create-pull-request from 6 to 7
dependabot[bot] Dec 4, 2025
7b7afe3
Bump docker/build-push-action from 5.0.0 to 6.18.0
dependabot[bot] Dec 4, 2025
f5305ce
Potential fix for code scanning alert no. 10: Workflow does not conta…
Paulpete Dec 26, 2025
798400f
Merge pull request #10 from WhiteAiBlock/alert-autofix-10
Paulpete Dec 26, 2025
fefd13d
Potential fix for code scanning alert no. 12: Clear-text logging of s…
Paulpete Jan 4, 2026
9c637fe
Add Helius verification guide for DAO controller multisig
imfromfuture3000-Android Jan 4, 2026
a09dcde
Merge pull request #12 from WhiteAiBlock/codex/scan-and-deploy-contra…
Paulpete Jan 4, 2026
eed563e
Add CryptoGene agent blueprint
imfromfuture3000-Android Jan 18, 2026
23a692d
Merge pull request #13 from WhiteAiBlock/codex/scan-and-deploy-contra…
imfromfuture3000-Android Jan 18, 2026
14e8e6e
Add GROK_API_KEY to .env.example
imfromfuture3000-Android Jan 21, 2026
bc04624
Merge branch 'imfromfuture3000-Android:main' into main
imfromfuture3000-Android Jan 25, 2026
38c656b
Potential fix for code scanning alert no. 13: Clear-text logging of s…
imfromfuture3000-Android Jan 28, 2026
a7de82f
Add dependency audit and vulnerability scan workflow
imfromfuture3000-Android Jan 28, 2026
48261b1
Merge pull request #11 from WhiteAiBlock/alert-autofix-12
imfromfuture3000-Android Jan 28, 2026
288a4e8
Potential fix for code scanning alert no. 6: Workflow does not contai…
Paulpete Feb 22, 2026
156e781
🔒 Auto-fix security vulnerabilities
sec-dummy Feb 27, 2026
89a3d0c
Bump @solana/spl-token from 0.1.8 to 0.4.14
dependabot[bot] Mar 1, 2026
7115784
Bump actions/github-script from 7 to 8
dependabot[bot] Mar 1, 2026
b611116
Bump @coral-xyz/anchor from 0.30.1 to 0.32.1
dependabot[bot] Mar 1, 2026
49e290e
Bump docker/metadata-action from 5.0.0 to 5.10.0
dependabot[bot] Mar 1, 2026
f5c60e1
Bump docker/login-action from 3.0.0 to 3.6.0
dependabot[bot] Mar 1, 2026
4af3716
Merge pull request #9 from WhiteAiBlock/dependabot/npm_and_yarn/solan…
Paulpete Mar 1, 2026
18b1f3d
🔒 Auto-fix security vulnerabilities
sec-dummy Mar 1, 2026
311a846
Merge pull request #19 from WhiteAiBlock/alert-autofix-6
Paulpete Mar 1, 2026
2ae26b5
Merge pull request #3 from WhiteAiBlock/dependabot/github_actions/doc…
Paulpete Mar 1, 2026
daf98d8
Merge pull request #1 from WhiteAiBlock/dependabot/github_actions/doc…
Paulpete Mar 1, 2026
0bec5f9
Bump reproducible-containers/buildkit-cache-dance from 2.1.4 to 3.3.0
dependabot[bot] Mar 1, 2026
aab0154
Merge pull request #7 from WhiteAiBlock/dependabot/github_actions/rep…
Paulpete Mar 1, 2026
ea4e355
Merge pull request #8 from WhiteAiBlock/dependabot/npm_and_yarn/coral…
Paulpete Mar 1, 2026
1233406
Merge pull request #6 from WhiteAiBlock/dependabot/github_actions/act…
Paulpete Mar 1, 2026
f07c002
Merge pull request #4 from WhiteAiBlock/dependabot/github_actions/pet…
Paulpete Mar 1, 2026
2a4ebaf
Merge pull request #5 from WhiteAiBlock/dependabot/github_actions/doc…
Paulpete Mar 1, 2026
8c54b5d
Bump docker/setup-buildx-action from 3.11.1 to 3.12.0
dependabot[bot] Mar 1, 2026
cdd294b
Merge pull request #26 from WhiteAiBlock/dependabot/github_actions/do…
Paulpete Mar 1, 2026
d832d2c
build(deps): bump golang from 1.25.4-alpine to 1.25.7-alpine
dependabot[bot] Mar 1, 2026
db8abff
Merge pull request #17 from WhiteAiBlock/dependabot/docker/golang-1.2…
Paulpete Mar 1, 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
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# RPC Endpoints
GROK_API_KEY=your_grok_key_here
SOLANA_RPC=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=your_helius_key_here
QUICKNODE_ENDPOINT=your_quicknode_endpoint_here
Expand Down
132 changes: 132 additions & 0 deletions .github/workflows/.github/workflows/dependency-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
name: "Dependency Audit & Vulnerability Scan"

# Run on push to main (or any branch), and on a daily schedule
on:
push:
branches:
- '**'
schedule:
- cron: '0 2 * * *' # daily at 02:00 UTC
workflow_dispatch:

concurrency:
group: dependency-audit
cancel-in-progress: true
Comment on lines +1 to +14
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Critical: Workflow file is in wrong directory and won't execute.

The file path .github/workflows/.github/workflows/dependency-audit.yml is nested incorrectly. GitHub Actions only recognizes workflows directly under .github/workflows/. This workflow will never run.

Move the file to .github/workflows/dependency-audit.yml.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/.github/workflows/dependency-audit.yml around lines 1 -
14, The workflow named "Dependency Audit & Vulnerability Scan" is nested
incorrectly and won't be discovered by GH Actions; move the YAML so it lives
directly in the repository's workflows directory (remove the extra nested
folder) so GitHub can run it, and verify the file still contains the same name
and concurrency group "dependency-audit" and the on:
push/schedule/workflow_dispatch triggers remain intact.


jobs:
audit-node:
name: "Node.js / npm audit"
runs-on: ubuntu-latest
if: ${{ always() }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'

- name: Install dependencies (npm)
if: ${{ hashFiles('**/package-lock.json') != '' }}
run: |
npm ci

- name: Run npm audit (JSON)
if: ${{ hashFiles('**/package-lock.json') != '' }}
run: |
set -o pipefail
npm audit --json > npm-audit.json || true
cat npm-audit.json

- name: Upload npm audit artifact
if: ${{ hashFiles('**/package-lock.json') != '' }}
uses: actions/upload-artifact@v4
with:
name: npm-audit-json
path: npm-audit.json

- name: Fail on high/critical npm findings
if: ${{ hashFiles('**/package-lock.json') != '' }}
run: |
jq -e '.advisories as $a | ($a | to_entries | map(.value) | map(select(.severity == "high" or .severity == "critical")) | length) > 0' npm-audit.json \
&& (echo "High/Critical vulnerabilities found in npm dependencies" && exit 1) || echo "No high/critical npm vulnerabilities"
Comment on lines +50 to +54
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

npm audit JSON format may have changed.

The jq command checks for .advisories, but modern npm versions (v7+) use a different JSON structure with .vulnerabilities instead of .advisories. This check may always pass (no vulnerabilities found) even when vulnerabilities exist.

#!/bin/bash
# Check if package.json exists and what npm version format is expected
cat package.json 2>/dev/null | jq '.engines.npm // "not specified"'
# Check npm audit format documentation
echo "Verify npm audit --json output format for the npm version in use"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/.github/workflows/dependency-audit.yml around lines 50 -
54, The current jq check inspects .advisories which is the old npm-audit format;
update the jq expression used in the run block (the command that parses
npm-audit.json) to handle both formats by checking for .vulnerabilities as well
as .advisories and fail if any entry has severity "high" or "critical" (or if
.vulnerabilities contains any entries with those severities), ensuring the
command that reads npm-audit.json will detect vulnerabilities produced by modern
npm (v7+) and legacy outputs.


audit-go:
name: "Go / govulncheck"
runs-on: ubuntu-latest
if: ${{ always() }}
needs: audit-node
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: '1.24'

- name: Install govulncheck
run: |
set -eux
GO111MODULE=on go install golang.org/x/vuln/cmd/govulncheck@latest
export PATH=$PATH:$(go env GOPATH)/bin

- name: Run govulncheck (JSON)
run: |
set -eux
# run in module root; govulncheck returns 0 with no vulns, >0 otherwise
$(go env GOPATH)/bin/govulncheck -json ./... > govulncheck.json || true
cat govulncheck.json

- name: Upload govulncheck artifact
uses: actions/upload-artifact@v4
with:
name: govulncheck-json
path: govulncheck.json

- name: Fail on found Go vulnerabilities (HIGH/CRITICAL)
run: |
# govulncheck JSON has "vulns" entries; search for severity levels if available
if jq -e '.vulns | length > 0' govulncheck.json >/dev/null 2>&1; then
# Try to detect severity mentions; if none, fail so maintainers can review
if jq -e '.vulns | map(.fixed|length > 0 or true) | length > 0' govulncheck.json >/dev/null 2>&1; then
echo "Go vulnerabilities detected — please review govulncheck.json artifact."
exit 1
fi
fi
echo "No Go vulnerabilities detected (or none reported by govulncheck)."
Comment on lines +89 to +99
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

govulncheck JSON output format structure 2025

💡 Result:

govulncheck -format=json emits streaming NDJSON: each line is a JSON object, and each object is a Message with exactly one top-level field set (order not guaranteed). [1], [2]

Top-level “message” shapes (one per line)

{"config":   { ... }}
{"SBOM":     { ... }}
{"progress": { ... }}
{"osv":      { ... }}      // an OSV entry object
{"finding":  { ... }}

[1]

config object

{
  "protocol_version": "v1.0.0",
  "scanner_name": "govulncheck",
  "scanner_version": "",
  "db": "vuln.go.dev",
  "db_last_modified": "…RFC3339 time…",
  "go_version": "go1.xx.x",
  "scan_level": "module|package|symbol",
  "scan_mode": "source|binary|convert|query|extract"
}

[1]

SBOM object

{
  "go_version": "go1.xx.x",
  "modules": [{"path":"","version":""}, ...],
  "roots": ["package/path/...", ...]
}

[1]

progress object

{"time":"…RFC3339 time…","message":""}

[1]

finding object (refers to an OSV by id)

{
  "osv": "GO-YYYY-NNNN",
  "fixed_version": "vX.Y.Z",
  "trace": [
    {
      "module": "", "version": "",
      "package": "",
      "function": "",
      "receiver": "",
      "position": {"filename":"","offset":0,"line":1,"column":1}
    }
  ]
}

[1]


🏁 Script executed:

cat -n .github/workflows/dependency-audit.yml | sed -n '80,110p'

Repository: imfromfuture3000-Android/github-mcp-server

Length of output: 156


🏁 Script executed:

find . -name "dependency-audit.yml" -o -name "*dependency*audit*" 2>/dev/null | head -20

Repository: imfromfuture3000-Android/github-mcp-server

Length of output: 144


🏁 Script executed:

cat -n ./.github/workflows/.github/workflows/dependency-audit.yml | sed -n '80,110p'

Repository: imfromfuture3000-Android/github-mcp-server

Length of output: 1507


The govulncheck JSON parsing logic is fundamentally broken.

govulncheck -json outputs NDJSON (streaming, newline-delimited JSON), not a single JSON object. Each line is a separate message with one top-level field: config, SBOM, progress, osv, or finding. The code incorrectly tries to access .vulns and .fixed fields that do not exist in the actual output structure. Vulnerabilities appear as individual finding objects with osv and fixed_version fields. The current jq expressions will not properly detect vulnerabilities and will always pass the checks.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/.github/workflows/dependency-audit.yml around lines 89 -
99, The current govulncheck JSON logic assumes a single JSON object with
.vulns/.fixed; govulncheck -json actually produces NDJSON lines where each
message is a top-level object like config, SBOM, progress, osv, or finding;
update the workflow step that reads govulncheck.json to parse NDJSON (one JSON
object per line) and detect any lines with a "finding" object, then inspect that
finding's fields (e.g., finding.osv, finding.fixed_version and any severity
field) to decide failure; replace the faulty jq expressions that reference
.vulns and .fixed with a line-by-line jq selection (e.g., selecting objects with
.finding) and fail if any finding indicates HIGH/CRITICAL severity or otherwise
represents an unaddressed vulnerability.


results-notify:
name: "Publish summary"
runs-on: ubuntu-latest
needs: [audit-node, audit-go]
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: artifacts

- name: Create short summary comment (if run from PR)
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const path = 'artifacts';
let summary = `🔎 Dependency audit artifacts available:\\n\\n`;
const files = fs.readdirSync(path);
files.forEach(f => summary += `- ${f}\\n`);
github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number || github.context.payload.pull_request.number,
body: summary
});

- name: Finish
run: echo "Artifacts uploaded: $(ls -la artifacts || true)"
Comment on lines +131 to +132
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

YAML syntax error on line 132.

Static analysis indicates a YAML syntax error. The echo command with colons may be causing parsing issues.

🐛 Suggested fix
      - name: Finish
-        run: echo "Artifacts uploaded: $(ls -la artifacts || true)"
+        run: |
+          echo "Artifacts uploaded:"
+          ls -la artifacts || true
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Finish
run: echo "Artifacts uploaded: $(ls -la artifacts || true)"
- name: Finish
run: |
echo "Artifacts uploaded:"
ls -la artifacts || true
🧰 Tools
🪛 actionlint (1.7.11)

[error] 132-132: could not parse as YAML: mapping values are not allowed in this context

(syntax-check)

🪛 YAMLlint (1.38.0)

[error] 132-132: syntax error: mapping values are not allowed here

(syntax)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/.github/workflows/dependency-audit.yml around lines 131 -
132, The "Finish" job step has a YAML parsing error because the run value
contains unescaped characters and a colon; update the step with a properly
quoted or block-style run value so YAML parses correctly — e.g., change the step
identified by name: "Finish" and its run key to use either a
single/double-quoted string or a block scalar (|) for the command so the inner
echo "Artifacts uploaded: $(ls -la artifacts || true)" is treated as a string by
YAML.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dependabot fix this

2 changes: 1 addition & 1 deletion .github/workflows/auto-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
curl -s "https://api.github.com/search/repositories?q=solana+security+best+practices&sort=stars" | jq -r '.items[0:3] | .[] | .html_url'

- name: Create PR with Updates
uses: peter-evans/create-pull-request@v6
uses: peter-evans/create-pull-request@v7
with:
commit-message: "⬆️ Update dependencies and apply best practices"
title: "Automated Dependency Updates"
Expand Down
103 changes: 103 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Advanced"

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: '15 15 * * 0'

jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required for all workflows
security-events: write

# required to fetch internal or private CodeQL packs
packages: read

# only required for workflows in private repositories
actions: read
contents: read

strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
- language: go
build-mode: autobuild
- language: javascript-typescript
build-mode: none
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v4

# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.

# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality

# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- name: Run manual build steps
if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{matrix.language}}"
8 changes: 4 additions & 4 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,13 @@ jobs:
# multi-platform images and export cache
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0

# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
Expand All @@ -70,7 +70,7 @@ jobs:
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
Expand All @@ -93,7 +93,7 @@ jobs:
key: ${{ runner.os }}-go-build-cache-${{ hashFiles('**/go.sum') }}

- name: Inject go-build-cache
uses: reproducible-containers/buildkit-cache-dance@4b2444fec0c0fb9dbf175a96c094720a692ef810 # v2.1.4
uses: reproducible-containers/buildkit-cache-dance@1b8ab18fbda5ad3646e3fcc9ed9dd41ce2f297b4 # v3.3.2
with:
cache-source: go-build-cache

Expand Down
39 changes: 34 additions & 5 deletions .github/workflows/full-deployment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ on:
env:
SOLANA_CLI_VERSION: '1.18.26'
NODE_VERSION: '20'
permissions:
contents: write
packages: read
actions: read

jobs:
deploy:
Expand All @@ -31,11 +35,13 @@ jobs:
with:
submodules: recursive
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Install Solana CLI
run: |
Expand All @@ -47,11 +53,13 @@ jobs:
solana config set --url ${{ github.event.inputs.environment == 'devnet' && 'https://api.devnet.solana.com' || 'https://api.mainnet-beta.solana.com' }}
echo "${{ secrets.SOLANA_DEPLOYER_KEY }}" > deployer-key.json
solana config set --keypair deployer-key.json
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Install Dependencies
run: |
npm install -g @solana/web3.js @coral-xyz/anchor-cli
npm install --save-dev
npm install -g @coral-xyz/anchor-cli
npm ci

- name: Deploy Contracts
id: deploy
Expand Down Expand Up @@ -95,7 +103,7 @@ jobs:
run: |
sleep 5
solana program show GENEtH5amGSi8kHAtQoezp1XEXwZJ8vcuePYnXdKrMYz
solana transaction-history ${{ steps.deploy.outputs.tx_hash }}
solana confirm ${{ steps.deploy.outputs.tx_hash }}

- name: Update Controller
if: success()
Expand Down Expand Up @@ -131,14 +139,35 @@ jobs:

[View on Solscan](https://solscan.io/tx/${{ steps.deploy.outputs.tx_hash }})

notify:
contract-scan:
needs: deploy
runs-on: ubuntu-latest
if: needs.deploy.result == 'success'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Run contract scan
run: node scripts/scan-contracts.js
- name: Upload contract scan artifact
uses: actions/upload-artifact@v4
with:
name: contract-scan-results
path: contract_scan_results.json

notify:
needs: [deploy, contract-scan]
runs-on: ubuntu-latest
if: always()
steps:
- name: Deployment Status
run: |
if [ "${{ needs.deploy.result }}" == "success" ]; then
if [ "${{ needs.deploy.result }}" == "success" ] && [ "${{ needs.contract-scan.result }}" == "success" ]; then
echo "✅ Deployment successful!"
echo "TX: ${{ needs.deploy.outputs.tx_hash }}"
echo "Program: ${{ needs.deploy.outputs.program_id }}"
Expand Down
Loading