From 8ab21c6986e4af558ca3a260c065099ae4b5fe9b Mon Sep 17 00:00:00 2001 From: Dimitrije Dragasevic Date: Fri, 6 Dec 2024 09:55:58 +0100 Subject: [PATCH] Changes to CI (#701) --- .github/workflows/deploy.yml | 163 +++++++++++++++++++---------------- 1 file changed, 88 insertions(+), 75 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f0d2dd63b..ca47e3f44 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -40,7 +40,6 @@ jobs: path: ./artifacts/ if-no-files-found: error - build_schemas: if: contains('["crnbarr93", "SlayerAnsh", "joemonem", "DimitrijeDragasevic", "cowboy0015"]', github.actor) runs-on: ubuntu-latest @@ -111,75 +110,88 @@ jobs: ./andromeda-deploy trigger-schema-parser: - needs: [deploy] - runs-on: ubuntu-latest - steps: - - name: Set Branch Based on Kernel - id: check-kernel - run: | - KERNEL_ADDRESS="${{ inputs.kernel_address }}" - TESTNET_KERNELS="${{ vars.TESTNET_KERNELS }}" - TESTNET_STAGING_KERNELS="${{ vars.TESTNET_STAGING_KERNELS }}" - - if [[ "${KERNEL_ADDRESS}" == "${TESTNET_KERNELS}" ]]; then + needs: [deploy] + runs-on: ubuntu-latest + outputs: + should_continue: ${{ steps.check-kernel.outputs.should_continue }} + steps: + - name: Set Branch Based on Kernel + id: check-kernel + run: | + KERNEL_ADDRESS="${{ inputs.kernel_address }}" + IFS=',' read -ra TESTNET_KERNELS_ARR <<< "${{ vars.TESTNET_KERNELS }}" + IFS=',' read -ra TESTNET_STAGING_KERNELS_ARR <<< "${{ vars.TESTNET_STAGING_KERNELS }}" + + for kernel in "${TESTNET_KERNELS_ARR[@]}"; do + if [[ "${KERNEL_ADDRESS}" == "${kernel}" ]]; then echo "branch=develop" >> $GITHUB_OUTPUT - elif [[ "${KERNEL_ADDRESS}" == "${TESTNET_STAGING_KERNELS}" ]]; then - echo "branch=testnet-staging" >> $GITHUB_OUTPUT - else - echo "Error: Kernel not found in known configurations" - exit 1 + echo "should_continue=true" >> $GITHUB_OUTPUT + exit 0 fi + done - - name: Checkout Schema Parser - uses: actions/checkout@v4 - with: - repository: andromedaprotocol/schema-parser - ref: ${{ steps.check-kernel.outputs.branch }} - token: ${{ secrets.CI_PAT }} - - - name: Download Schemas - uses: actions/download-artifact@v4 - with: - name: temp-schemas - path: "packages/schema-parser/schema" - - - uses: pnpm/action-setup@v4 - with: - version: 8 - - - uses: actions/setup-node@v4 - with: - node-version: '18' - cache: 'pnpm' - - - name: Process Schema - working-directory: packages/schema-parser - run: | - set -eo pipefail - echo "Installing dependencies..." - pnpm install - echo "Processing schema..." - npm run start - echo "Flattening schema..." - npm run flatten - echo "Exporting schema..." - npm run export - - - name: Commit and Push Changes - run: | - git config --global user.name 'github-actions[bot]' - git config --global user.email 'github-actions[bot]@users.noreply.github.com' - - if [[ -n $(git status --porcelain) ]]; then - git add . - git commit -m "chore: Update schema for kernel: ${{ inputs.kernel_address }}" - git push - else - echo "No changes to commit" + for kernel in "${TESTNET_STAGING_KERNELS_ARR[@]}"; do + if [[ "${KERNEL_ADDRESS}" == "${kernel}" ]]; then + echo "branch=testnet-staging" >> $GITHUB_OUTPUT + echo "should_continue=true" >> $GITHUB_OUTPUT + exit 0 fi + done + + echo "Skip: Kernel not found in known configurations" + echo "should_continue=false" >> $GITHUB_OUTPUT + + - name: Checkout Schema Parser + uses: actions/checkout@v4 + with: + repository: andromedaprotocol/schema-parser + ref: ${{ steps.check-kernel.outputs.branch }} + token: ${{ secrets.CI_PAT }} + + - name: Download Schemas + uses: actions/download-artifact@v4 + with: + name: temp-schemas + path: "packages/schema-parser/schema" - trigger-armour-workflow: + - uses: pnpm/action-setup@v4 + with: + version: 8 + + - uses: actions/setup-node@v4 + with: + node-version: "18" + cache: "pnpm" + + - name: Process Schema + working-directory: packages/schema-parser + run: | + set -eo pipefail + echo "Installing dependencies..." + pnpm install + echo "Processing schema..." + npm run start + echo "Flattening schema..." + npm run flatten + echo "Exporting schema..." + npm run export + + - name: Commit and Push Changes + run: | + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + + if [[ -n $(git status --porcelain) ]]; then + git add . + git commit -m "chore: Update schema for kernel: ${{ inputs.kernel_address }}" + git push + else + echo "No changes to commit" + fi + + trigger-armour-workflow: needs: [trigger-schema-parser] + if: needs.trigger-schema-parser.outputs.should_continue == 'true' runs-on: ubuntu-latest steps: - name: Wait for schema updates @@ -187,7 +199,7 @@ jobs: echo "Waiting 6 minutes for schema updates to propagate..." sleep 360 echo "Wait complete, proceeding with Armor workflow trigger" - + - name: Download version-map uses: actions/download-artifact@v4 with: @@ -198,7 +210,7 @@ jobs: run: | cd artifacts cat version_map.json - cp version_map.json ../version_map.json + cp version_map.json ../version_map.json - name: Trigger Armor Workflow uses: actions/github-script@v7 @@ -206,23 +218,23 @@ jobs: github-token: ${{ secrets.CI_PAT }} script: | const kernelAddress = '${{ inputs.kernel_address }}'; - const testnetKernels = '${{ vars.TESTNET_KERNELS }}'; - const testnetStagingKernels = '${{ vars.TESTNET_STAGING_KERNELS }}'; - + const testnetKernelsList = '${{ vars.TESTNET_KERNELS }}'.split(','); + const testnetStagingKernelsList = '${{ vars.TESTNET_STAGING_KERNELS }}'.split(','); + // Read the version map const fs = require('fs'); const versionMap = fs.readFileSync('version_map.json', 'utf8'); - + let workflowFile; - if (kernelAddress === testnetKernels) { + if (testnetKernelsList.includes(kernelAddress)) { workflowFile = 'develop.yml'; - } else if (kernelAddress === testnetStagingKernels) { + } else if (testnetStagingKernelsList.includes(kernelAddress)) { workflowFile = 'staging.yml'; } else { core.setFailed('Error: Kernel not found in known configurations'); return; } - + try { await github.rest.actions.createWorkflowDispatch({ owner: 'andromedaprotocol', @@ -230,9 +242,10 @@ jobs: workflow_id: workflowFile, ref: 'main', inputs: { - version_map: versionMap + version_map: versionMap, + grep: '@smoke_test' } }); } catch (error) { core.setFailed(`Failed to trigger Armor workflow: ${error.message}`); - } \ No newline at end of file + }