From 61468cee8c1111b4643c1039fc026330358f1886 Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Fri, 24 Jan 2025 15:26:06 +0000 Subject: [PATCH 1/5] CLOUDP-296647: Add some logging for testing --- tools/spectral/ipa/metrics/metricS3Upload.js | 3 ++- .../ipa/metrics/scripts/getShouldRunMetricsRelease.js | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/spectral/ipa/metrics/metricS3Upload.js b/tools/spectral/ipa/metrics/metricS3Upload.js index e4645aefa3..88f01dfae7 100644 --- a/tools/spectral/ipa/metrics/metricS3Upload.js +++ b/tools/spectral/ipa/metrics/metricS3Upload.js @@ -36,7 +36,8 @@ export async function uploadMetricCollectionDataToS3(filePath = config.defaultMe }); console.log('Dumping data to S3...'); - return await client.send(command); + //return await client.send(command); + return 'testing'; } catch (caught) { if (caught instanceof S3ServiceException && caught.name === 'EntityTooLarge') { console.error( diff --git a/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js b/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js index 13e3cc3083..fee07637af 100644 --- a/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js +++ b/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js @@ -18,10 +18,16 @@ export default async function getShouldRunMetricsRelease({ github, context }) { throw Error('response.data.workflow_runs is empty'); } + console.log(runs[1]); + const previousResult = runs[1].conclusion; const lastRunDate = new Date(runs[1].created_at); const today = new Date(); + console.log('Last run was', lastRunDate.toDateString(), 'with status', previousResult); + console.log('Head branch', runs[1].head_branch); + console.log('Run started at', runs[1].run_started_at); + return previousResult === 'failure' || today.toDateString() !== lastRunDate.toDateString(); } From 1fc2b2240af7e03dfc1ea8aab72d846c98e7486f Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Fri, 24 Jan 2025 15:54:03 +0000 Subject: [PATCH 2/5] CLOUDP-296647: Check specific job run instead of workflow --- .../scripts/getShouldRunMetricsRelease.js | 44 ++++++++++++++----- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js b/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js index fee07637af..df15de653b 100644 --- a/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js +++ b/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js @@ -1,6 +1,11 @@ // Used in .github/workflows/release-IPA-metrics.yml +// Checks if workflow failed or if job 'Release IPA Validation Metrics' didn't run today + +const releaseJobName = 'Release IPA Validation Metrics'; + export default async function getShouldRunMetricsRelease({ github, context }) { - const response = await github.rest.actions.listWorkflowRuns({ + // Get last workflow run + const workflowRuns = await github.rest.actions.listWorkflowRuns({ owner: context.repo.owner, repo: context.repo.repo, workflow_id: 'release-IPA-metrics.yml', @@ -8,26 +13,41 @@ export default async function getShouldRunMetricsRelease({ github, context }) { page: 1, }); - if (!response || !response.data) { + if (!workflowRuns || !workflowRuns.data) { throw Error('listWorkFlowRuns response is empty'); } - const { workflow_runs: runs } = response.data; + const { workflow_runs: runs } = workflowRuns.data; + + if (!runs || runs.length === 0) { + throw Error('workflowRuns is empty'); + } + + const previousRun = runs[1]; + + // Check if job 'Release IPA Validation Metrics' already ran today + const runJobs = await github.rest.actions.listJobsForWorkflowRun({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: runs[1].id, + per_page: 2, + page: 1, + }); - if (runs === undefined || runs.length === 0) { - throw Error('response.data.workflow_runs is empty'); + if (runJobs === undefined || runJobs.length === 0) { + throw Error('listJobsForWorkflowRun response is empty'); } - console.log(runs[1]); + const previousReleaseJob = runJobs.find((job) => job.name === releaseJobName); - const previousResult = runs[1].conclusion; + if (!previousReleaseJob) { + throw Error('Could not find previous release job with name' + releaseJobName); + } - const lastRunDate = new Date(runs[1].created_at); + const lastRunDate = new Date(previousReleaseJob.completed_at); const today = new Date(); - console.log('Last run was', lastRunDate.toDateString(), 'with status', previousResult); - console.log('Head branch', runs[1].head_branch); - console.log('Run started at', runs[1].run_started_at); + console.log('Last release job run was', lastRunDate.toDateString(), 'with status', previousReleaseJob.conclusion); - return previousResult === 'failure' || today.toDateString() !== lastRunDate.toDateString(); + return previousRun.conclusion === 'failure' || today.toDateString() !== lastRunDate.toDateString(); } From 8086ede548b10a8b530bb2c694d3e929bca4c9e4 Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Fri, 24 Jan 2025 15:58:23 +0000 Subject: [PATCH 3/5] CLOUDP-296647: Fix --- .../ipa/metrics/scripts/getShouldRunMetricsRelease.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js b/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js index df15de653b..f27fa61dc7 100644 --- a/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js +++ b/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js @@ -34,11 +34,17 @@ export default async function getShouldRunMetricsRelease({ github, context }) { page: 1, }); - if (runJobs === undefined || runJobs.length === 0) { + if (!runJobs || !runJobs.data) { throw Error('listJobsForWorkflowRun response is empty'); } - const previousReleaseJob = runJobs.find((job) => job.name === releaseJobName); + const { jobs } = runJobs.data; + + if (!jobs || jobs.length === 0) { + throw Error('Jobs for workflow is empty'); + } + + const previousReleaseJob = jobs.find((job) => job.name === releaseJobName); if (!previousReleaseJob) { throw Error('Could not find previous release job with name' + releaseJobName); From 24b9718801fb5892074052da9b98bf7f16a21753 Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Fri, 24 Jan 2025 16:00:56 +0000 Subject: [PATCH 4/5] CLOUDP-296647: Test with local oas --- .github/workflows/release-IPA-metrics.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release-IPA-metrics.yml b/.github/workflows/release-IPA-metrics.yml index babe3867a9..db41712a9f 100644 --- a/.github/workflows/release-IPA-metrics.yml +++ b/.github/workflows/release-IPA-metrics.yml @@ -61,16 +61,16 @@ jobs: - name: Install npm dependencies run: npm install - - name: Download openapi-foas - uses: actions/download-artifact@v4 - with: - name: openapi-foas-${{ inputs.env }} - github-token: ${{ secrets.api_bot_pat }} - run-id: ${{ github.run_id }} +# - name: Download openapi-foas +# uses: actions/download-artifact@v4 +# with: +# name: openapi-foas-${{ inputs.env }} +# github-token: ${{ secrets.api_bot_pat }} +# run-id: ${{ github.run_id }} - name: Run Metric Collection Job working-directory: ./tools/spectral/ipa/metrics/scripts - run: node runMetricCollection.js ../../../../../openapi-foas.json + run: node runMetricCollection.js ../../../../../openapi/v2.json - name: Dump Metric Collection Job Data to S3 env: From 708a7ff825adf2ca1049b18fd59d99780d948fc3 Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Fri, 24 Jan 2025 16:10:36 +0000 Subject: [PATCH 5/5] CLOUDP-296647: Test with extra logging --- .github/workflows/release-IPA-metrics.yml | 3 +++ .../ipa/metrics/scripts/getShouldRunMetricsRelease.js | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-IPA-metrics.yml b/.github/workflows/release-IPA-metrics.yml index db41712a9f..e7fc2da172 100644 --- a/.github/workflows/release-IPA-metrics.yml +++ b/.github/workflows/release-IPA-metrics.yml @@ -41,6 +41,9 @@ jobs: console.error(error.message); process.exit(1) }) + if (!shouldRunRelease) { + console.log('Skipping release') + } return shouldRunRelease release-IPA-metrics: diff --git a/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js b/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js index f27fa61dc7..0c0dca585a 100644 --- a/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js +++ b/tools/spectral/ipa/metrics/scripts/getShouldRunMetricsRelease.js @@ -23,7 +23,7 @@ export default async function getShouldRunMetricsRelease({ github, context }) { throw Error('workflowRuns is empty'); } - const previousRun = runs[1]; + const previousWorkflowRun = runs[1]; // Check if job 'Release IPA Validation Metrics' already ran today const runJobs = await github.rest.actions.listJobsForWorkflowRun({ @@ -53,7 +53,13 @@ export default async function getShouldRunMetricsRelease({ github, context }) { const lastRunDate = new Date(previousReleaseJob.completed_at); const today = new Date(); + //Remove + console.log('Previous workflow run created at', new Date(previousWorkflowRun.created_at)); + console.log('Previous workflow run updated', new Date(previousWorkflowRun.updated_at)); + console.log('Previous workflow run started at', new Date(previousWorkflowRun.run_started_at)); + + console.log('Last workflow run status was', previousWorkflowRun.conclusion); console.log('Last release job run was', lastRunDate.toDateString(), 'with status', previousReleaseJob.conclusion); - return previousRun.conclusion === 'failure' || today.toDateString() !== lastRunDate.toDateString(); + return previousWorkflowRun.conclusion === 'failure' || today.toDateString() !== lastRunDate.toDateString(); }