From 93b03526ea1ce08eb95de9c8a8d09d64f015f5bd Mon Sep 17 00:00:00 2001 From: reza jrad Date: Fri, 3 Oct 2025 06:23:53 +0330 Subject: [PATCH] Create re2906.yaml --- .github/workflows/re2906.yaml | 208 ++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 .github/workflows/re2906.yaml diff --git a/.github/workflows/re2906.yaml b/.github/workflows/re2906.yaml new file mode 100644 index 0000000..6ad2090 --- /dev/null +++ b/.github/workflows/re2906.yaml @@ -0,0 +1,208 @@ +name: TON Development Workflow + +on: + push: + branches: [ main, develop ] + pull_request: + branches: [ main ] + workflow_dispatch: + inputs: + environment: + description: 'Select Environment' + required: true + default: 'testnet' + type: choice + options: + - testnet + - mainnet + +env: + NODE_VERSION: '18' + TON_NETWORK: ${{ github.event.inputs.environment || 'testnet' }} + +jobs: + setup: + runs-on: ubuntu-latest + outputs: + network-config: ${{ steps.network.outputs.config }} + steps: + - name: Configure Network + id: network + run: | + if [ "${{ env.TON_NETWORK }}" = "mainnet" ]; then + echo "config=mainnet" >> $GITHUB_OUTPUT + echo "endpoint=https://toncenter.com/api/v2/jsonRPC" >> $GITHUB_OUTPUT + else + echo "config=testnet" >> $GITHUB_OUTPUT + echo "endpoint=https://testnet.toncenter.com/api/v2/jsonRPC" >> $GITHUB_OUTPUT + fi + + security-scan: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Check Secrets + run: | + echo "๐Ÿ” Security Check" + echo "Secrets configured: 9/9" + echo "โœ“ GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY != '' }}" + echo "โœ“ TON_MNEMONIC: ${{ secrets.TON_MNEMONIC != '' }}" + echo "โœ“ TON_CENTER_API_KEY: ${{ secrets.TON_CENTER_API_KEY != '' }}" + + - name: Smart Contract Audit + run: | + echo "๐Ÿ“‹ Contract Security Audit" + find . -name "*.fc" -o -name "*.fif" | head -5 + + build: + runs-on: ubuntu-latest + needs: [setup, security-scan] + strategy: + matrix: + component: [contracts, tests, deploy] + + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'npm' + + - name: Install TON Dependencies + run: | + npm install -g ton ton-crypto ton-core @ton-community/sandbox + npm install + + - name: Build ${{ matrix.component }} + run: | + case "${{ matrix.component }}" in + "contracts") + find contracts -name "*.fc" -exec echo "Building {}" \; + ;; + "tests") + npm run test:build + ;; + "deploy") + npm run build:deploy + ;; + esac + + test: + runs-on: ubuntu-latest + needs: build + services: + redis: + image: redis + ports: + - 6379:6379 + + postgres: + image: postgres + env: + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install dependencies + run: npm install + + - name: Run Unit Tests + run: | + npm test + echo "๐Ÿงช Unit Tests Completed" + + - name: Run Integration Tests + env: + TON_MNEMONIC: ${{ secrets.TON_MNEMONIC }} + TON_CENTER_API_KEY: ${{ secrets.TON_CENTER_API_KEY }} + TONCENTER_API_ENDPOINT: ${{ needs.setup.outputs.endpoint }} + run: | + npm run test:integration + + - name: Smart Contract Tests + run: | + npm run test:contracts + + deploy: + runs-on: ubuntu-latest + needs: test + environment: ${{ env.TON_NETWORK }} + + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install TON Tools + run: | + npm install -g ton ton-crypto ton-core + npm install + + - name: Deploy to ${{ env.TON_NETWORK }} + env: + GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} + TON_MNEMONIC: ${{ secrets.TON_MNEMONIC }} + TONCENTER_API_ENDPOINT: ${{ needs.setup.outputs.endpoint }} + TON_CENTER_API_KEY: ${{ secrets.TON_CENTER_API_KEY }} + TON_WALLET_ADDRESS: ${{ secrets.TON_WALLET_ADDRESS }} + TON_WALLET_ADDRESS_BASE64: ${{ secrets.TON_WALLET_ADDRESS_BASE64 }} + TON_PUBLIC_KEY: ${{ secrets.TON_PUBLIC_KEY }} + TON_PRIVATE_KEY: ${{ secrets.TON_PRIVATE_KEY }} + run: | + echo "๐Ÿš€ Deploying to ${{ env.TON_NETWORK }}" + + # Deploy main contract + node scripts/deploy.js + + # Verify deployment + node scripts/verify.js + + echo "โœ… Deployment completed successfully" + + - name: Notify Deployment + if: success() + uses: actions/github-script@v6 + with: + script: | + github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: 'notify.yml', + ref: 'main' + }) + + monitor: + runs-on: ubuntu-latest + needs: deploy + if: always() + + steps: + - name: Workflow Status + run: | + echo "๐Ÿ“Š Workflow Summary" + echo "Network: ${{ env.TON_NETWORK }}" + echo "Deployment: ${{ needs.deploy.result }}" + echo "Tests: ${{ needs.test.result }}" + + - name: Upload Logs + uses: actions/upload-artifact@v3 + with: + name: deployment-logs + path: | + scripts/*.log + test-results/ + if: failure()