chore: add CI workflow pkg

This commit is contained in:
Andrei O 2024-07-10 11:36:50 +03:00
parent 86bdfd136b
commit 7eab21188b
No known key found for this signature in database
GPG Key ID: B961E5B68389457E
7 changed files with 196 additions and 45 deletions

37
.github/bun-workflow.yaml vendored Normal file
View File

@ -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

38
.github/node-workflow.yaml vendored Normal file
View File

@ -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

View File

@ -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
- name: Run Bun Script - Push
if: github.event_name == 'push'
run: bun run index.ts '${{ toJSON(secrets) }}' '${{ toJSON(github.event) }}' push

View File

@ -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.

Binary file not shown.

View File

@ -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);

View File

@ -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"
}