generated from layer5io/layer5-repo-template
-
Notifications
You must be signed in to change notification settings - Fork 83
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Ankita Sahu <[email protected]>
- Loading branch information
Showing
3 changed files
with
158 additions
and
57 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
name: Feature List | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
spreadsheet_uri: | ||
description: 'Link of the spreadsheet containing subscription details.' | ||
type: string | ||
required: true | ||
|
||
jobs: | ||
update-feature-data: | ||
runs-on: ubuntu-latest | ||
env: | ||
FEATURES_FILE: 'data/features.json' | ||
|
||
steps: | ||
- name: Trigger Feature List workflow and wait for completion | ||
uses: actions/github-script@v6 | ||
with: | ||
github-token: ${{secrets.GH_ACCESS_TOKEN}} | ||
script: | | ||
const result = await github.rest.actions.createWorkflowDispatch({ | ||
owner: 'layer5labs', | ||
repo: 'meshery-extensions-packages', | ||
workflow_id: 'generate-feature-list.yml', | ||
ref: 'master', | ||
inputs: { | ||
spreadsheet_uri: '${{ secrets.INPUT_SPREADSHEET_URI }}' | ||
} | ||
}); | ||
console.log("Triggered workflow, waiting for completion..."); | ||
while (true) { | ||
const runs = await github.rest.actions.listWorkflowRuns({ | ||
owner: 'layer5labs', | ||
repo: 'meshery-extensions-packages', | ||
workflow_id: 'generate-feature-list.yml' | ||
}); | ||
if (runs.data.workflow_runs[0].status === 'completed') { | ||
console.log("Workflow completed"); | ||
break; | ||
} | ||
console.log("Waiting for workflow to complete..."); | ||
await new Promise(resolve => setTimeout(resolve, 30000)); | ||
} | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Create data directory if it doesn't exist | ||
run: mkdir -p data | ||
|
||
- name: Download new feature data | ||
uses: actions/github-script@v6 | ||
with: | ||
github-token: ${{secrets.GH_ACCESS_TOKEN}} | ||
script: | | ||
const fs = require('fs'); | ||
const path = require('path'); | ||
const { data } = await github.rest.repos.getContent({ | ||
owner: 'layer5labs', | ||
repo: 'meshery-extensions-packages', | ||
path: 'feature-data.json' | ||
}); | ||
const newContent = Buffer.from(data.content, 'base64').toString('utf-8'); | ||
fs.writeFileSync('${{ env.FEATURES_FILE }}', newContent); | ||
- name: Update or create features.json | ||
run: | | ||
if [ -f "${{ env.FEATURES_FILE }}" ]; then | ||
echo "Updating existing features.json" | ||
else | ||
echo "Creating new features.json" | ||
cp "${{ env.FEATURES_FILE }}" data/features.json | ||
fi | ||
- name: Commit changes | ||
uses: stefanzweifel/git-auto-commit-action@v5 | ||
with: | ||
commit_message: Updated feature data | ||
file_pattern: ${{ env.FEATURES_FILE }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
name: Nightly Google Sheet Check | ||
|
||
on: | ||
schedule: | ||
- cron: '0 0 * * *' # Run every day at midnight UTC | ||
|
||
jobs: | ||
check-for-updates: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Check for Google Sheet updates | ||
id: sheet-check | ||
uses: actions/github-script@v6 | ||
with: | ||
github-token: ${{secrets.GH_ACCESS_TOKEN}} | ||
script: | | ||
const { GoogleSpreadsheet } = require('google-spreadsheet'); | ||
async function checkForUpdates() { | ||
const doc = new GoogleSpreadsheet('${{ secrets.INPUT_SPREADSHEET_URI }}'); | ||
await doc.useServiceAccountAuth({ | ||
client_email: process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL, | ||
private_key: process.env.GOOGLE_PRIVATE_KEY, | ||
}); | ||
await doc.loadInfo(); | ||
const sheet = doc.sheetsByIndex[0]; | ||
const lastModified = sheet.lastModified; | ||
const cache = await github.rest.actions.getActionsCacheList({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
}); | ||
let lastKnownModified = null; | ||
if (cache.data.actions_caches.length > 0) { | ||
lastKnownModified = new Date(cache.data.actions_caches[0].last_accessed_at); | ||
} | ||
if (!lastKnownModified || lastModified > lastKnownModified) { | ||
await github.rest.actions.createActionsCacheEntry({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
key: 'last-modified-time', | ||
ref: context.ref, | ||
cache_data: lastModified.toISOString(), | ||
}); | ||
return true; | ||
} | ||
return false; | ||
} | ||
const hasUpdates = await checkForUpdates(); | ||
core.setOutput('has-updates', hasUpdates); | ||
- name: Trigger Subscriptions Plan workflow | ||
if: steps.sheet-check.outputs.has-updates == 'true' | ||
uses: actions/github-script@v6 | ||
with: | ||
github-token: ${{secrets.GH_ACCESS_TOKEN}} | ||
script: | | ||
github.rest.actions.createWorkflowDispatch({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
workflow_id: 'feature-list.yml', | ||
ref: 'main', | ||
inputs: { | ||
spreadsheet_uri: '${{ secrets.INPUT_SPREADSHEET_URI }}' | ||
} | ||
}); |
This file was deleted.
Oops, something went wrong.