-
Notifications
You must be signed in to change notification settings - Fork 523
Description
Describe the bug
When running actions/github-script v8 with Fine Grained PAT token , I get an HTTP 500 Error. However when I switch to a classic PAT token, I do not get an error.
Furthermore, when I was working with actions/github-script v7.0.1, the my yml code worked with a Fine Grained PAT token. In the documentation, it says that they v8 supports Fine Grained PAT token. My runner version is 2.329.0, could the issue be with Octokit ?
My yml code :
name: Trigger_system_pipeline
on:
schedule:
- cron: '0 15 * * 1' # Runs every Monday at 15:00 UTC (8:00 AM MT)
workflow_dispatch:
permissions:
actions: write
contents: read
jobs:
check-second-monday:
runs-on: ubuntu-latest
outputs:
run: ${{ steps.check.outputs.run }}
steps:
- name: Check if today is the second Monday of the month
id: check
run: |
TODAY=$(date -u +"%Y-%m-%d")
YEAR=$(date -u +%Y)
MONTH=$(date -u +%m)
FIRST_DAY="$YEAR-$MONTH-01"
FIRST_DAY_WEEKDAY=$(date -u -d "$FIRST_DAY" +%u)
if [ "$FIRST_DAY_WEEKDAY" -eq 1 ]; then
FIRST_MONDAY="$FIRST_DAY"
else
DAYS_TO_ADD=$(( (8 - FIRST_DAY_WEEKDAY) % 7 ))
FIRST_MONDAY=$(date -u -d "$FIRST_DAY +$DAYS_TO_ADD days" +%Y-%m-%d)
fi
SECOND_MONDAY=$(date -u -d "$FIRST_MONDAY +7 days" +%Y-%m-%d)
echo "Today: $TODAY"
echo "Second Monday: $SECOND_MONDAY"
if [[ "$TODAY" == "$SECOND_MONDAY" ]]; then
echo "run=true" >> $GITHUB_OUTPUT
else
echo "run=false" >> $GITHUB_OUTPUT
fi
trigger-ingestion-workflow:
needs: check-second-monday
if: needs.check-second-monday.outputs.run == 'true' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- name: Trigger ML system dynamically with retry
uses: actions/github-script@v8
with:
github-token: ${{ secrets.FINE_GRAINED_PAT_TOKEN}}
script: |
const { data: workflows } = await github.rest.actions.listRepoWorkflows({
owner: '##',
repo: '###'
});
const targetWorkflow = workflows.workflows.find(wf =>
wf.name === 'Update_data_pipeline_ci_cd.yml' ||
wf.path.endsWith('Update_data_pipeline_ci_cd.yml')
);
if (!targetWorkflow) {
core.setFailed('Workflow not found');
return;
}
// Log workflow state
console.log(`Workflow state: ${targetWorkflow.state}`);
if (targetWorkflow.state !== 'active') {
core.setFailed(`Workflow ${targetWorkflow.name} is not active`);
return;
}
console.log(`Found workflow: ${targetWorkflow.name} (ID: ${targetWorkflow.id})`);
const maxRetries = 3;
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
await github.rest.actions.createWorkflowDispatch({
owner: '##',
repo: '###',
workflow_id: targetWorkflow.id,
ref: 'main'
});
console.log('Workflow dispatch triggered successfully.');
break;
} catch (error) {
console.error(`Attempt ${attempt} failed: ${error.message}`);
console.error(`Full error: ${JSON.stringify(error)}`);
if (attempt === maxRetries) {
core.setFailed('Failed to trigger workflow after multiple attempts.');
} else {
console.log('Retrying in 5 seconds...');
await new Promise(r => setTimeout(r, 5000));
}
}
}
The return error :
Run actions/github-script@v8
Workflow state: active
Found workflow: Update_data_pipeline (ID: 196328636)
Attempt 1 failed: fetch failed
Retrying in 5 seconds...
Full error: {"name":"HttpError","status":500,"request":{"method":"POST","url":"https://api.github.com/repos/##/###/actions/workflows/196328636/dispatches","headers":{"accept":"application/vnd.github.v3+json","user-agent":"actions/github-script octokit-core.js/5.0.1 Node.js/24","authorization":"token [REDACTED]","content-type":"application/json; charset=utf-8"},"body":"{"ref":"main"}","request":{"agent":{"_events":{},"_eventsCount":2,"options":{"keepAlive":true,"scheduling":"lifo","timeout":5000,"defaultPort":443,"protocol":"https:","noDelay":true,"path":null},"defaultPort":443,"protocol":"https:","requests":{},"sockets":{},"freeSockets":{},"keepAliveMsecs":1000,"keepAlive":true,"maxSockets":null,"maxFreeSockets":256,"scheduling":"lifo","maxTotalSockets":null,"totalSocketCount":0,"agentKeepAliveTimeoutBuffer":1000,"maxCachedSessions":100,"_sessionCache":{"map":{},"list":[]}}}}}
Attempt 2 failed: fetch failed
Full error: {"name":"HttpError","status":500,"request":{"method":"POST","url":"https://api.github.com/repos##/###/actions/workflows/196328636/dispatches","headers":{"accept":"application/vnd.github.v3+json","user-agent":"actions/github-script octokit-core.js/5.0.1 Node.js/24","authorization":"token [REDACTED]","content-type":"application/json; charset=utf-8"},"body":"{"ref":"main"}","request":{"agent":{"_events":{},"_eventsCount":2,"options":{"keepAlive":true,"scheduling":"lifo","timeout":5000,"defaultPort":443,"protocol":"https:","noDelay":true,"path":null},"defaultPort":443,"protocol":"https:","requests":{},"sockets":{},"freeSockets":{},"keepAliveMsecs":1000,"keepAlive":true,"maxSockets":null,"maxFreeSockets":256,"scheduling":"lifo","maxTotalSockets":null,"totalSocketCount":0,"agentKeepAliveTimeoutBuffer":1000,"maxCachedSessions":100,"_sessionCache":{"map":{},"list":[]}}}}}
Retrying in 5 seconds...
Attempt 3 failed: fetch failed
Full error: {"name":"HttpError","status":500,"request":{"method":"POST","url":"https://api.github.com/repos/##/###/actions/workflows/196328636/dispatches","headers":{"accept":"application/vnd.github.v3+json","user-agent":"actions/github-script octokit-core.js/5.0.1 Node.js/24","authorization":"token [REDACTED]","content-type":"application/json; charset=utf-8"},"body":"{"ref":"main"}","request":{"agent":{"_events":{},"_eventsCount":2,"options":{"keepAlive":true,"scheduling":"lifo","timeout":5000,"defaultPort":443,"protocol":"https:","noDelay":true,"path":null},"defaultPort":443,"protocol":"https:","requests":{},"sockets":{},"freeSockets":{},"keepAliveMsecs":1000,"keepAlive":true,"maxSockets":null,"maxFreeSockets":256,"scheduling":"lifo","maxTotalSockets":null,"totalSocketCount":0,"agentKeepAliveTimeoutBuffer":1000,"maxCachedSessions":100,"_sessionCache":{"map":{},"list":[]}}}}}
Error: Failed to trigger workflow after multiple attempts.
However, when I change one line from the yml code to the following(which switches from the Fine grained PAT token to the Classic PAT token ), it works :
github-token: ${{ secrets.CLASSIC_PAT_TOKEN }}
Any help would be appreciated it !
Thank you