diff --git a/.github/bun-workflow.yaml b/.github/bun-workflow.yaml new file mode 100644 index 0000000..3fc5846 --- /dev/null +++ b/.github/bun-workflow.yaml @@ -0,0 +1,37 @@ +# Not supported due to compatibility issues with Bun Http2 stdlib +name: Bun Main Workflow + +on: + push: + branches: + - main + workflow_dispatch: + inputs: + version: + description: 'Version' + required: true + +jobs: + run-bun-script: + runs-on: ubuntu-latest + defaults: + run: + working-directory: CI + steps: + - uses: actions/checkout@v3 + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + version: '1.1.18' + + - name: Install Dependencies + run: bun install + + - name: Run Bun Script - Update + if: github.event_name == 'workflow_dispatch' + run: bun run index.ts '${{ toJSON(secrets) }}' '${{ toJSON(github.event) }}' update + + - name: Run Bun Script - Push + if: github.event_name == 'push' + run: bun run index.ts '${{ toJSON(secrets) }}' '${{ toJSON(github.event) }}' push diff --git a/.github/node-workflow.yaml b/.github/node-workflow.yaml new file mode 100644 index 0000000..655d558 --- /dev/null +++ b/.github/node-workflow.yaml @@ -0,0 +1,38 @@ +# Not supported due to compatibility issues with Bun Http2 stdlib +name: Node Main Workflow + +on: + push: + branches: + - main + workflow_dispatch: + inputs: + version: + description: 'Version' + required: true + +jobs: + run-node-script: + runs-on: ubuntu-latest + defaults: + run: + working-directory: CI + steps: + - name: Checkout Action + uses: actions/checkout@v4 + + - name: Setup Node Action + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install Dependencies + run: yarn install + + - name: Run Node Script - Update + if: github.event_name == 'workflow_dispatch' + run: yarn tsx index.ts '${{ toJSON(secrets) }}' '${{ toJSON(github.event) }}' update + + - name: Run Node Script - Push + if: github.event_name == 'push' + run: yarn tsx index.ts '${{ toJSON(secrets) }}' '${{ toJSON(github.event) }}' push diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b0f1175..3fc5846 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -1,32 +1,37 @@ -name: Bun Script Execution +# Not supported due to compatibility issues with Bun Http2 stdlib +name: Bun Main Workflow on: - #push: # Trigger on push events to master branch (you can adjust this trigger) - workflow_dispatch: # Trigger on manual workflow dispatch - + push: + branches: + - main + workflow_dispatch: + inputs: + version: + description: 'Version' + required: true + jobs: run-bun-script: runs-on: ubuntu-latest + defaults: + run: + working-directory: CI steps: - uses: actions/checkout@v3 - name: Setup Bun uses: oven-sh/setup-bun@v2 + with: + version: '1.1.18' - - name: Get Parameters (for push event) - if: github.event_name == 'push' - run: | - # No parameters are automatically provided on push events - echo "No parameters provided on push event." - - - name: Get Parameters (for manual trigger) + - name: Install Dependencies + run: bun install + + - name: Run Bun Script - Update if: github.event_name == 'workflow_dispatch' - run: | - PARAM_VALUE_1=${{ github.event.inputs.param1 }} - PARAM_VALUE_2=${{ github.event.inputs.param2 }} - # ... add more parameter retrieval as needed - # Use empty strings if parameters are not provided + run: bun run index.ts '${{ toJSON(secrets) }}' '${{ toJSON(github.event) }}' update - - name: Run Bun Script - run: bun run index.ts --param1 $PARAM_VALUE_1 --param2 $PARAM_VALUE_2 - # Adjust the command based on your parameter names and flags \ No newline at end of file + - name: Run Bun Script - Push + if: github.event_name == 'push' + run: bun run index.ts '${{ toJSON(secrets) }}' '${{ toJSON(github.event) }}' push diff --git a/CI/README.md b/CI/README.md index 957cf82..9153c8d 100644 --- a/CI/README.md +++ b/CI/README.md @@ -1,15 +1,3 @@ -# ci +# CI -To install dependencies: - -```bash -bun install -``` - -To run: - -```bash -bun run index.ts -``` - -This project was created using `bun init` in bun v1.1.7. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime. +Pacakge to run CI/CD pipelines for the project. diff --git a/CI/bun.lockb b/CI/bun.lockb index da8a37c..a257cc8 100644 Binary files a/CI/bun.lockb and b/CI/bun.lockb differ diff --git a/CI/index.ts b/CI/index.ts index ced3f58..21ad9fa 100644 --- a/CI/index.ts +++ b/CI/index.ts @@ -1,23 +1,105 @@ import { YupAPI } from 'yup-api-interact' +import { FCHubUtils } from 'farcaster-hub-utils' +const args = Bun.argv.slice(2); -const args = Bun.argv.slice(3); - -const secrets = JSON.parse(args[0]); -const githubEvvent = JSON.parse(args[1]); +const secrets = args[0] +const event = args[1] const action = args[2] +type TGithubEvent = { + inputs: { + version: string + }, + forced: boolean, + repository: { + name: string, + full_name: string, + html_url: string, + description: string + }, + head_commit: { + id: string, + message: string, + timestamp: string, + url: string, + author: { + name: string, + email: string, + username: string + }, + committer: { + name: string, + email: string, + username: string + } + } +} const main = async () => { - const YUP_PK = secrets.YUP_PK; + const ENABLED = true; + let YUP_PK = ''; + let FC_SIGNER = '' + let GithubEvent: TGithubEvent = {} as TGithubEvent; + const USER_FID = 709233; - const api = new YupAPI({ PK: YUP_PK, token: '' }); + console.log('Anouncement enabled status: ', '[ ', ENABLED, ' ]'); - if(action === 'commit') { - console.log('Announcing commit') - console.log(secrets, githubEvvent) + try { + const parsedSecrets = JSON.parse(secrets); + YUP_PK = parsedSecrets.YUP_PK; + FC_SIGNER = parsedSecrets.FC_SIGNER; + GithubEvent = JSON.parse(event); + } catch (e) { + console.error('Error parsing data', e) } + const yupAPI = new YupAPI({ PK: YUP_PK}); + const fchubUtils = new FCHubUtils(FC_SIGNER, USER_FID); + + if(action === 'update') { + const VERSION = GithubEvent.inputs.version; + const message = `Github ClearWallet new version ${VERSION} has been released!\n + ChromeStore: https://bit.ly/clw-evm \n + Github: https://github.com/andrei0x309/clear-wallet + `; + + if(ENABLED) { + await yupAPI.sendPost({ + content: message, + platforms: ['twitter', 'threads', 'bsky', 'lens'] + }) + await fchubUtils.createFarcasterPost({ + content: message, + }) + } else { + console.log('No action required') + } + + } else if(action === 'push') { + if(ENABLED && !GithubEvent.forced && GithubEvent?.head_commit?.message.includes('chore:')) { + const commiter = GithubEvent?.head_commit?.author.username || GithubEvent?.head_commit?.committer?.username || '' + const message = `Github ClearWallet new repo commit!\n + ChromeStore: https://bit.ly/clw-evm \n + Commit: ${GithubEvent.head_commit.url} + ${ commiter ? `By: ${commiter}` : ''} + `; + + await yupAPI.sendPost({ + content: message, + platforms: ['twitter', 'threads', 'bsky', 'lens'] + }) + + await fchubUtils.createFarcasterPost({ + content: message, + }) + } else { + console.log('No action required') + } + } + + console.log('Workflow executed successfully'); + } main().catch(console.error); diff --git a/CI/package.json b/CI/package.json index 8ee1623..077da12 100644 --- a/CI/package.json +++ b/CI/package.json @@ -9,7 +9,8 @@ "typescript": "^5.0.0" }, "dependencies": { - "yup-api-interact": "^0.1.4", - "farcaster-hub-utils": "https://github.com/andrei0x309/farcaster-hub-utils#main" - } + "farcaster-hub-utils": "^0.1.7", + "yup-api-interact": "^0.1.6" + }, + "license": "MIT" } \ No newline at end of file