Skip to content

Commit

Permalink
Workflow updated
Browse files Browse the repository at this point in the history
Signed-off-by: Ankita Sahu <[email protected]>
  • Loading branch information
SAHU-01 committed Oct 21, 2024
1 parent 6c4aa68 commit 199a1c5
Show file tree
Hide file tree
Showing 3 changed files with 158 additions and 57 deletions.
87 changes: 87 additions & 0 deletions .github/workflows/feature-list.yml
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 }}
71 changes: 71 additions & 0 deletions .github/workflows/new-feature-check.yml
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 }}'
}
});
57 changes: 0 additions & 57 deletions .github/workflows/pricing-list.yml

This file was deleted.

0 comments on commit 199a1c5

Please sign in to comment.