ci: update issues-stable workflow

This commit is contained in:
2025-05-02 04:01:19 -07:00
parent 189d913567
commit 77bb68e3a9

View File

@@ -3,14 +3,13 @@
# @author Aetherinox # @author Aetherinox
# @url https://github.com/Aetherinox # @url https://github.com/Aetherinox
# @usage creates repository labels if they are not yet installed # @usage creates repository labels if they are not yet installed
# issues marked as stale after 30 days, given tag Status 𐄂 Stale # issues marked as stale after 30 days, given tag Status Stale
# inactive issues closed after 180 days, given tag Status 𐄂 Locked # inactive issues closed after 180 days, given tag Status Locked
# inactive pr closed after 365 days, given tag Status 𐄂 Locked # inactive pr closed after 365 days, given tag Status Locked
# issues marked stale after 30 days, given tag Status 𐄂 Stale # issues marked stale after 30 days, given tag Status Stale
# issues marked closed 7 days after being marked stale, given tag Status 𐄂 Autoclosed # issues marked closed 7 days after being marked stale, given tag Status Autoclosed
# #
# @notes This Github action must be activated manually. This workflow script will do the following: # @notes This Github action must be activated manually. This workflow script will do the following:
#
# - Scan issues / pull requests and make sure they have properly assigned labels: # - Scan issues / pull requests and make sure they have properly assigned labels:
# - `Bug` # - `Bug`
# - `Feature` # - `Feature`
@@ -28,15 +27,15 @@
# secrets.PYPI_API_TOKEN self Pypi API token (production site) - https://pypi.org/ # secrets.PYPI_API_TOKEN self Pypi API token (production site) - https://pypi.org/
# secrets.PYPI_API_TEST_TOKEN self Pypi API token (test site) - https://test.pypi.org/ # secrets.PYPI_API_TEST_TOKEN self Pypi API token (test site) - https://test.pypi.org/
# secrets.SELF_DOCKERHUB_TOKEN self Dockerhub token # secrets.SELF_DOCKERHUB_TOKEN self Dockerhub token
# secrets.ORG_BINARYNINJA_TOKEN org github personal access token (fine-grained) # secrets.ORG_TOKEN org github personal access token (fine-grained)
# secrets.ORG_BINARYNINJA_TOKEN_CL org github personal access token (classic) # secrets.ORG_TOKEN_CL org github personal access token (classic)
# secrets.ORG_BINARYNINJA_DOCKERHUB_TOKEN org dockerhub secret # secrets.ORG_DOCKERHUB_TOKEN org dockerhub secret
# secrets.ORG_BINARYNINJA_GITEA_TOKEN org gitea personal access token (classic) with package:write permission # secrets.ORG_GITEA_TOKEN org gitea personal access token (classic) with package:write permission
# secrets.BINARYSERV_GPG_KEY_ASC bot gpg private key (armored) | BEGIN PGP PRIVATE KEY BLOCK # secrets.BOT_GPG_KEY_ASC bot gpg private key (armored) | BEGIN PGP PRIVATE KEY BLOCK
# secrets.BINARYSERV_GPG_PASSPHRASE bot gpg private key passphrase # secrets.BOT_GPG_PASSPHRASE bot gpg private key passphrase
# secrets.DISCORD_WEBHOOK_CHAN_GITHUB_TVAPP2_RELEASES discord webhook to report release notifications from github to discord # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_RELEASES discord webhook to report release notifications from github to discord
# secrets.DISCORD_WEBHOOK_CHAN_GITHUB_TVAPP2_WORKFLOWS discord webhook to report workflow notifications from github to discord # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_WORKFLOWS discord webhook to report workflow notifications from github to discord
# secrets.DISCORD_WEBHOOK_CHAN_GITHUB_TVAPP2_UPDATES discord webhook to report activity notifications from github to discord # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_UPDATES discord webhook to report activity notifications from github to discord
# #
# @local these workflows can be tested locally through the use of `act` # @local these workflows can be tested locally through the use of `act`
# https://github.com/nektos/act # https://github.com/nektos/act
@@ -48,8 +47,8 @@
# act -W .github/workflows/issues-stale.yml -s TOKEN_CL=XXXXXXXXXX --pull=false # act -W .github/workflows/issues-stale.yml -s TOKEN_CL=XXXXXXXXXX --pull=false
# # # #
name: "🎫 Issues Stale" name: '🎫 Issues Stale'
run-name: "🎫 Issues Stale" run-name: '🎫 Issues Stale'
# # # #
# triggers # triggers
@@ -75,14 +74,21 @@ env:
PREFIX_INTERNAL: "Internal" PREFIX_INTERNAL: "Internal"
PREFIX_URGENT: "⚠ Urgent" PREFIX_URGENT: "⚠ Urgent"
LABEL_BUG: "Type Bug" LABEL_BUG: "Type Bug"
LABEL_DEPENDENCY: "Type Dependency" LABEL_DEPENDENCY: "Type Dependency"
LABEL_DOCS: "Type Docs" LABEL_DOCS: "Type Docs"
LABEL_FEATURE: "Type Feature" LABEL_FEATURE: "Type Feature"
LABEL_GIT: "Type Git Action" LABEL_GIT: "Type Git Action"
LABEL_PR: "Type Pull Request" LABEL_PR: "Type Pull Request"
LABEL_ROADMAP: "Type Roadmap" LABEL_ROADMAP: "Type Roadmap"
LABEL_INTERNAL: "Type Internal" LABEL_INTERNAL: "Type Internal"
LABEL_LOCKED: "Status Locked"
LABEL_STALE: "Status Stale"
LABEL_AUTOCLOSE: "Status Autoclosed"
LABEL_ACCEPTED: "Status Accepted"
LABEL_REVIEW: "Status Review"
LABEL_PENDING: "Status Pending"
LABEL_AC_REVIEW: "AC Review Required"
LABEL_URGENT: "⚠ Urgent" LABEL_URGENT: "⚠ Urgent"
ASSIGN_USER: Aetherinox ASSIGN_USER: Aetherinox
@@ -101,32 +107,32 @@ env:
{ "name": "AC Review Required", "color": "8F1784", "description": "PR needs to be reviewed by another person, after the requested changes have been made" }, { "name": "AC Review Required", "color": "8F1784", "description": "PR needs to be reviewed by another person, after the requested changes have been made" },
{ "name": "AC Security Warning", "color": "761620", "description": "Does not conform to developer policies, or includes potentially dangerous code" }, { "name": "AC Security Warning", "color": "761620", "description": "Does not conform to developer policies, or includes potentially dangerous code" },
{ "name": "AC Skipped Scan", "color": "8F1784", "description": "Author has skipped code scan" }, { "name": "AC Skipped Scan", "color": "8F1784", "description": "Author has skipped code scan" },
{ "name": "Status 𐄂 Duplicate", "color": "75536b", "description": "Issue or pull request already exists" }, { "name": "Status Duplicate", "color": "75536b", "description": "Issue or pull request already exists" },
{ "name": "Status 𐄂 Accepted", "color": "2e7539", "description": "This pull request has been accepted" }, { "name": "Status Accepted", "color": "2e7539", "description": "This pull request has been accepted" },
{ "name": "Status 𐄂 Autoclosed", "color": "3E0915", "description": "Originally stale and was autoclosed for no activity" }, { "name": "Status Autoclosed", "color": "3E0915", "description": "Originally stale and was autoclosed for no activity" },
{ "name": "Status 𐄂 Denied", "color": "ba4058", "description": "Pull request has been denied" }, { "name": "Status Denied", "color": "ba4058", "description": "Pull request has been denied" },
{ "name": "Status 𐄂 Locked", "color": "550F45", "description": "Automatically locked by AdminServ for a prolonged period of inactivity" }, { "name": "Status Locked", "color": "550F45", "description": "Automatically locked by AdminServ for a prolonged period of inactivity" },
{ "name": "Status 𐄂 Need Info", "color": "2E3C4C", "description": "Not enough information to resolve" }, { "name": "Status Need Info", "color": "2E3C4C", "description": "Not enough information to resolve" },
{ "name": "Status 𐄂 No Action", "color": "030406", "description": "Closed without any action being taken" }, { "name": "Status No Action", "color": "030406", "description": "Closed without any action being taken" },
{ "name": "Status 𐄂 Pending", "color": "984b12", "description": "Pending pull request" }, { "name": "Status Pending", "color": "984b12", "description": "Pending pull request" },
{ "name": "Status 𐄂 Released", "color": "1b6626", "description": "Issues or PR has been implemented and is now live" }, { "name": "Status Released", "color": "1b6626", "description": "Issues or PR has been implemented and is now live" },
{ "name": "Status 𐄂 Reopened", "color": "8a6f14", "description": "A previously closed PR which has been re-opened" }, { "name": "Status Reopened", "color": "8a6f14", "description": "A previously closed PR which has been re-opened" },
{ "name": "Status 𐄂 Review", "color": "9e1451", "description": "Currently pending review" }, { "name": "Status Review", "color": "9e1451", "description": "Currently pending review" },
{ "name": "Status 𐄂 Stale", "color": "928282", "description": "Has not had any activity in over 30 days" }, { "name": "Status Stale", "color": "928282", "description": "Has not had any activity in over 30 days" },
{ "name": "Type Bug", "color": "9a2c2c", "description": "Something isn't working" }, { "name": "Type Bug", "color": "9a2c2c", "description": "Something isn't working" },
{ "name": "Type Dependency", "color": "243759", "description": "Item is associated to dependency" }, { "name": "Type Dependency", "color": "243759", "description": "Item is associated to dependency" },
{ "name": "Type Docs", "color": "0e588d", "description": "Improvements or modifications to docs" }, { "name": "Type Docs", "color": "0e588d", "description": "Improvements or modifications to docs" },
{ "name": "Type Feature", "color": "3c4e93", "description": "Feature request" }, { "name": "Type Feature", "color": "3c4e93", "description": "Feature request" },
{ "name": "Type Git Action", "color": "030406", "description": "GitHub Action / workflow" }, { "name": "Type Git Action", "color": "030406", "description": "GitHub Action / workflow" },
{ "name": "Type Pull Request", "color": "8F1784", "description": "Normal pull request" }, { "name": "Type Pull Request", "color": "8F1784", "description": "Normal pull request" },
{ "name": "Type Roadmap", "color": "8F1784", "description": "Feature or bug currently planned for implementation" }, { "name": "Type Roadmap", "color": "8F1784", "description": "Feature or bug currently planned for implementation" },
{ "name": "Type Internal", "color": "A51994", "description": "Assigned items are for internal developer use" }, { "name": "Type Internal", "color": "A51994", "description": "Assigned items are for internal developer use" },
{ "name": "Build Desktop", "color": "c7ca4a", "description": "Specific to desktop" }, { "name": "Build Desktop", "color": "c7ca4a", "description": "Specific to desktop" },
{ "name": "Build Linux", "color": "c7ca4a", "description": "Specific to Linux" }, { "name": "Build Linux", "color": "c7ca4a", "description": "Specific to Linux" },
{ "name": "Build MacOS", "color": "c7ca4a", "description": "Specific to MacOS" }, { "name": "Build MacOS", "color": "c7ca4a", "description": "Specific to MacOS" },
{ "name": "Build Mobile", "color": "c7ca4a", "description": "Specific to mobile" }, { "name": "Build Mobile", "color": "c7ca4a", "description": "Specific to mobile" },
{ "name": "Build Web", "color": "c7ca4a", "description": "Specific to web" }, { "name": "Build Web", "color": "c7ca4a", "description": "Specific to web" },
{ "name": "Build Windows", "color": "c7ca4a", "description": "Specific to Windows" }, { "name": "Build Windows", "color": "c7ca4a", "description": "Specific to Windows" },
{ "name": " API", "color": "F99B50", "description": "Plugin API, CLI, browser JS API" }, { "name": " API", "color": "F99B50", "description": "Plugin API, CLI, browser JS API" },
{ "name": " Auto-type", "color": "9141E0", "description": "Auto-type functionality in desktop apps" }, { "name": " Auto-type", "color": "9141E0", "description": "Auto-type functionality in desktop apps" },
{ "name": " Browser", "color": "9141E0", "description": "Browser plugins and passing data to <=> from app" }, { "name": " Browser", "color": "9141E0", "description": "Browser plugins and passing data to <=> from app" },
@@ -169,41 +175,62 @@ jobs:
job-labels-create: job-labels-create:
name: >- name: >-
🎫 Labels Verify Existing 🎫 Labels Verify Existing
runs-on: ubuntu-latest # runs-on: ubuntu-latest
timeout-minutes: 4 runs-on: apollo-x64
timeout-minutes: 5
steps: steps:
# # # #
# [ Create Labels ] Start # Issues (Stale) Labels Create Start
# # # #
- name: >- - name: >-
✅ Start ✅ Start
id: task_label_create_start id: task_labels_create_start
run: | run: |
echo "Assigning labels and assignees" echo "Assigning labels and assignees"
# # # #
# [ Create Labels ] Checkout # Issues (Stale) Labels Create Set Env Variables
# #
- name: >-
🕛 Get Timestamp
id: task_labels_create_set_timestamp
run: |
echo "YEAR=$(date +'%Y')" >> $GITHUB_ENV
echo "NOW=$(date +'%m-%d-%Y %H:%M:%S')" >> $GITHUB_ENV
echo "NOW_SHORT=$(date +'%m-%d-%Y')" >> $GITHUB_ENV
echo "NOW_LONG=$(date +'%m-%d-%Y %H:%M')" >> $GITHUB_ENV
echo "NOW_DOCKER_LABEL=$(date +'%Y%m%d')" >> $GITHUB_ENV
# #
# Issues (Stale) Labels Create Checkout
# # # #
- name: >- - name: >-
☑️ Checkout ☑️ Checkout
id: task_label_create_checkout id: task_labels_create_checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
# # # #
# [ Create Labels ] Verify Existing Labels # Issues (Stale) Labels Create Verify Existing
#
# check if repo has all of the needed issue / pr labels; create label if not exists
#
# action needed if using 'pull_request' and 'issue_comment'
# to get the pull request, you would normally use ${{ github.event.number }}
# however this isnt available for 'issue_comment'
# # # #
- name: >- - name: >-
🏷️ Verify Existing Labels 🎫 Labels Verify Existing
id: task_label_create_verify id: task_labels_create_verify
uses: actions/github-script@v7 uses: actions/github-script@v7
with: with:
github-token: ${{ secrets.ADMINSERV_TOKEN_CL }} github-token: ${{ secrets.ADMINSERV_TOKEN_CL || github.token }}
script: | script: |
const labels = JSON.parse( process.env.LABELS_JSON ); const labels = JSON.parse( process.env.LABELS_JSON );
for ( const label of labels ) for ( const label of labels )
@@ -215,7 +242,7 @@ jobs:
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
name: label.name, name: label.name,
description: label.description || '', description: label.description || 'No Description',
color: label.color color: label.color
}); });
} }
@@ -233,7 +260,7 @@ jobs:
} }
# # # #
# Job [ Check Labels ] # Issues (Stale) Labels Assign Missing
# #
# Runs through all submissions to check for ones that have not been properly labeled # Runs through all submissions to check for ones that have not been properly labeled
# - Bug # - Bug
@@ -245,31 +272,36 @@ jobs:
job-issues-nolabel: job-issues-nolabel:
name: >- name: >-
🎫 Labels Assign Missing 🎫 Labels Assign Missing
runs-on: ubuntu-latest # runs-on: ubuntu-latest
timeout-minutes: 4 runs-on: apollo-x64
timeout-minutes: 5
needs: job-labels-create needs: job-labels-create
steps: steps:
# # # #
# [ Check Labels ] Checkout # Issues (Stale) Labels Assign Missing Checkout
# # # #
- name: "☑️ Prepare"
- name: >-
☑️ Checkout
id: task_issues_nolabel_prepare id: task_issues_nolabel_prepare
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
# # # #
# [ Check Labels ] Check # Issues (Stale) Labels Assign Missing Check
# Check if repo has labels currently added to issues #
# Check if repo has labels to use
# # # #
- name: 🏷️ Checking Issues - name: >-
🎫 Labels Check
id: task_issues_nolabel_run id: task_issues_nolabel_run
uses: actions/github-script@v7 uses: actions/github-script@v7
with: with:
github-token: ${{ secrets.ADMINSERV_TOKEN_CL }} github-token: ${{ secrets.ADMINSERV_TOKEN_CL || github.token }}
script: | script: |
/* /*
@@ -289,7 +321,6 @@ jobs:
hours = hours % 12; hours = hours % 12;
hours = hours ? hours : 12; hours = hours ? hours : 12;
minutes = minutes.toString( ).padStart( 2, '0' ); minutes = minutes.toString( ).padStart( 2, '0' );
let mergeTime = month + '.' + day + '.' + year + ' ' + hours + ':' + minutes + ' ' + x; let mergeTime = month + '.' + day + '.' + year + ' ' + hours + ':' + minutes + ' ' + x;
return mergeTime; return mergeTime;
@@ -336,8 +367,8 @@ jobs:
let iss_body = `${ issue.body }`; let iss_body = `${ issue.body }`;
const iss_body_lc = iss_body.toLowerCase( ); const iss_body_lc = iss_body.toLowerCase( );
console.log( ` └── 📁 ` + iss_title ); console.log( ` └── 📁 ` + iss_title + ` #${ issue.number }`);
console.log( ` └── 📄 Issue #${ issue.number } last updated on ${ date_UpdateHuman }` ); console.log( ` └── 📄 last updated on ${ date_UpdateHuman }` );
console.log( ` └── 📄 ${add_labels}` ); console.log( ` └── 📄 ${add_labels}` );
console.log( `\n\n` ) console.log( `\n\n` )
@@ -345,8 +376,8 @@ jobs:
Keywords Keywords
*/ */
const bug_words = [ "bug", "broke", "issue", "fail" ]; const bug_words = [ "bug", "broke", "issue", "fail", "wont work" ];
const feat_words = [ "feature", "request", "add support" ]; const feat_words = [ "feature", "request", "add", "addition", "enhance", "create" ];
const urgn_words = [ "urgent", "urgency", "emergency", "important", "critical" ]; const urgn_words = [ "urgent", "urgency", "emergency", "important", "critical" ];
const road_words = [ "roadmap", "road map", "planned" ]; const road_words = [ "roadmap", "road map", "planned" ];
@@ -365,17 +396,14 @@ jobs:
/* /*
Label > Bugs Label > Bugs
*/
const bug_bIncWordT = bug_words.some( s => s.includes( iss_title_lc ) || iss_title_lc.includes( s ) );
/*
Find regex based phrases Find regex based phrases
Regex: Regex:
https://regex101.com/r/Z99Gnq/2 https://regex101.com/r/Z99Gnq/2
*/ */
const bug_bIncWordT = bug_words.some( s => s.includes( iss_title_lc ) || iss_title_lc.includes( s ) );
const bug_findWordList = /^\b(?:I?\s*have\s*(?:a|an)\s*(?:issue|problem|bug))|(?:will\s*not\s*work)|(?:it\s*is\s*(?:broken|broke|stuck))|(?:found\s*(?:an?|the)\s*(?:bug|issue))|(?:can\s*I\s*fix\s*the\s*(?:bug|issue))|(?:(?:does not|doesn'?t|don'?t|won'?t|can'?t|can\s?not|will\s*not)\s*(?:work|load|function))|(?:it\s*(?:will\s?not|won'?t|can\s?not|can'?t))\s*(?:get|find)\s*the\s*(?:website|site|webpage|page)|(?:the\s*(?:window|frame)\s*is\s*(?:blank|white|empty|missing))\b$/igm; const bug_findWordList = /^\b(?:I?\s*have\s*(?:a|an)\s*(?:issue|problem|bug))|(?:will\s*not\s*work)|(?:it\s*is\s*(?:broken|broke|stuck))|(?:found\s*(?:an?|the)\s*(?:bug|issue))|(?:can\s*I\s*fix\s*the\s*(?:bug|issue))|(?:(?:does not|doesn'?t|don'?t|won'?t|can'?t|can\s?not|will\s*not)\s*(?:work|load|function))|(?:it\s*(?:will\s?not|won'?t|can\s?not|can'?t))\s*(?:get|find)\s*the\s*(?:website|site|webpage|page)|(?:the\s*(?:window|frame)\s*is\s*(?:blank|white|empty|missing))\b$/igm;
const bug_bFoundMatchTitle = Boolean( bug_findWordList.test( iss_title ) ); const bug_bFoundMatchTitle = Boolean( bug_findWordList.test( iss_title ) );
const bug_bFoundMatchBody = Boolean( bug_findWordList.test( iss_body ) ); const bug_bFoundMatchBody = Boolean( bug_findWordList.test( iss_body ) );
@@ -403,6 +431,9 @@ jobs:
if ( author === `${{ env.BOT_NAME_DEPENDABOT }}` ) if ( author === `${{ env.BOT_NAME_DEPENDABOT }}` )
core.info( `Skipping: Detected ${ author }` ) core.info( `Skipping: Detected ${ author }` )
if ( author === `${{ env.BOT_NAME_RENOVATE }}` )
core.info( `Skipping: Detected ${ author }` )
// Rename title to contain Bug: // Rename title to contain Bug:
if ( author !== `${{ env.BOT_NAME_DEPENDABOT }}` && !bug_bFoundPRTitle && !iss_title_lc.startsWith( bug_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( feat_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( urgn_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( road_tag.toLowerCase( ) ) ) if ( author !== `${{ env.BOT_NAME_DEPENDABOT }}` && !bug_bFoundPRTitle && !iss_title_lc.startsWith( bug_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( feat_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( urgn_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( road_tag.toLowerCase( ) ) )
{ {
@@ -433,7 +464,7 @@ jobs:
https://regex101.com/r/fR1Hm6/1 https://regex101.com/r/fR1Hm6/1
*/ */
const feat_findWordList = /^(?:(?:request|include|see)\s*(?:an?|the?)\s*(?:feature|addon|addition|plugin))|(?:(?:add|see|get)\s*support\s*(?:for|with|of))|(?:can\s*we\s*get\s*(?:the|a)\s*(?:ability|feature))|(?:💡 Feature:)$/igm; const feat_findWordList = /(?:(?:add|enjoy|would|like|can|request|include|see|could|have)\s*?(?:the|liked?|i|we|an?|the|you?)\s*?(?:to|have|an|get|ability|request|add|feature|functionality|addon|addition|plugin|create))|(?:(?:add|see|get)\s*?support\s*?(?:for|with|of))|(?:can\s*we\s*get\s*?(?:the|a)\s*?(?:ability|feature))|(?:💡 Feature:)$/igm;
const feat_bFoundMatchTitle = Boolean( feat_findWordList.test( iss_title ) ); const feat_bFoundMatchTitle = Boolean( feat_findWordList.test( iss_title ) );
const feat_bFoundMatchBody = Boolean( feat_findWordList.test( iss_body ) ); const feat_bFoundMatchBody = Boolean( feat_findWordList.test( iss_body ) );
@@ -460,6 +491,9 @@ jobs:
if ( author === `${{ env.BOT_NAME_DEPENDABOT }}` ) if ( author === `${{ env.BOT_NAME_DEPENDABOT }}` )
core.info( `Skipping: Detected ${ author }` ) core.info( `Skipping: Detected ${ author }` )
if ( author === `${{ env.BOT_NAME_RENOVATE }}` )
core.info( `Skipping: Detected ${ author }` )
// Rename title to contain Feature: // Rename title to contain Feature:
if ( author !== `${{ env.BOT_NAME_DEPENDABOT }}` && !feat_bFoundPRTitle && !iss_title_lc.startsWith( bug_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( feat_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( urgn_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( road_tag.toLowerCase( ) ) ) if ( author !== `${{ env.BOT_NAME_DEPENDABOT }}` && !feat_bFoundPRTitle && !iss_title_lc.startsWith( bug_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( feat_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( urgn_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( road_tag.toLowerCase( ) ) )
{ {
@@ -471,6 +505,8 @@ jobs:
iss_title = `${ feat_tag } ${ title_new }`; iss_title = `${ feat_tag } ${ title_new }`;
} }
console.log( `New Title: ...................... ${ iss_title }` )
await github.rest.issues.update( await github.rest.issues.update(
{ {
owner: context.repo.owner, repo: context.repo.repo, issue_number: issue.number, owner: context.repo.owner, repo: context.repo.repo, issue_number: issue.number,
@@ -518,6 +554,9 @@ jobs:
if ( author === `${{ env.BOT_NAME_DEPENDABOT }}` ) if ( author === `${{ env.BOT_NAME_DEPENDABOT }}` )
core.info( `Skipping: Detected ${ author }` ) core.info( `Skipping: Detected ${ author }` )
if ( author === `${{ env.BOT_NAME_RENOVATE }}` )
core.info( `Skipping: Detected ${ author }` )
// Rename title to contain Urgent: // Rename title to contain Urgent:
if ( author !== `${{ env.BOT_NAME_DEPENDABOT }}` && !urgn_bFoundPRTitle && !iss_title_lc.startsWith( bug_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( feat_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( urgn_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( road_tag.toLowerCase( ) ) ) if ( author !== `${{ env.BOT_NAME_DEPENDABOT }}` && !urgn_bFoundPRTitle && !iss_title_lc.startsWith( bug_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( feat_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( urgn_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( road_tag.toLowerCase( ) ) )
{ {
@@ -578,6 +617,9 @@ jobs:
if ( author === `${{ env.BOT_NAME_DEPENDABOT }}` ) if ( author === `${{ env.BOT_NAME_DEPENDABOT }}` )
core.info( `Skipping: Detected ${ author }` ) core.info( `Skipping: Detected ${ author }` )
if ( author === `${{ env.BOT_NAME_RENOVATE }}` )
core.info( `Skipping: Detected ${ author }` )
// Rename title to contain Roadmap: // Rename title to contain Roadmap:
if ( author !== `${{ env.BOT_NAME_DEPENDABOT }}` && !road_bFoundPRTitle && !iss_title_lc.startsWith( bug_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( feat_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( urgn_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( road_tag.toLowerCase( ) ) ) if ( author !== `${{ env.BOT_NAME_DEPENDABOT }}` && !road_bFoundPRTitle && !iss_title_lc.startsWith( bug_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( feat_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( urgn_tag.toLowerCase( ) ) && !iss_title_lc.startsWith( road_tag.toLowerCase( ) ) )
{ {
@@ -607,14 +649,15 @@ jobs:
} }
# # # #
# Job [ Stale Issues ] # Issues (Stale) Stale
# # # #
job-issues-stale: job-issues-stale:
name: >- name: >-
💤 Check Stale 💤 Scan Check Stale
runs-on: ubuntu-latest # runs-on: ubuntu-latest
timeout-minutes: 4 runs-on: apollo-x64
timeout-minutes: 5
needs: needs:
- job-labels-create - job-labels-create
- job-issues-nolabel - job-issues-nolabel
@@ -625,14 +668,15 @@ jobs:
steps: steps:
# # # #
# [ Stale Issues ] Check Condition # Stale Check Condition
# # # #
- name: "💤 Stale Check Condition" - name: >-
💤 Stale Check Condition
id: task_issues_inactive_stale
uses: actions/stale@v9 uses: actions/stale@v9
id: task_issues_stale_run
with: with:
repo-token: ${{ secrets.ADMINSERV_TOKEN_CL }} repo-token: ${{ secrets.ADMINSERV_TOKEN_CL || github.token }}
stale-issue-message: | stale-issue-message: |
⚠️ It looks like there hasn't been any recent updates on this issue. If you created this issue and no longer consider it open, then please login to github and close the issue. ⚠️ It looks like there hasn't been any recent updates on this issue. If you created this issue and no longer consider it open, then please login to github and close the issue.
@@ -641,40 +685,42 @@ jobs:
--- ---
<sub>I am a bot reaching out to you with an automated response.</sub> <sub>I am a bot reaching out to you with an automated response.</sub>
stale-issue-label: 'Status 𐄂 Stale' stale-issue-label: '${{ env.LABEL_STALE }}'
close-issue-label: 'Status 𐄂 Autoclosed' close-issue-label: '${{ env.LABEL_AUTOCLOSE }}'
exempt-issue-labels: 'Status 𐄂 Accepted,Status 𐄂 Review,Status 𐄂 Pending,Type ◦ Bug,Type ◦ Dependency,Type ◦ Docs,Type ◦ Feature,Type ◦ Git Action,Type ◦ Pull Request,Type ◦ Roadmap' exempt-issue-labels: '${{ env.LABEL_ACCEPTED }},${{ env.LABEL_REVIEW }},${{ env.LABEL_PENDING }},${{ env.LABEL_BUG }},${{ env.LABEL_DEPENDENCY }},${{ env.LABEL_DOCS }},${{ env.LABEL_FEATURE }},${{ env.LABEL_GIT }},${{ env.LABEL_PR }},${{ env.LABEL_ROADMAP }}'
days-before-stale: 60 days-before-stale: 120
days-before-close: 7 days-before-close: 7
days-before-pr-stale: -1 days-before-pr-stale: -1
days-before-pr-close: -1 days-before-pr-close: -1
# # # #
# Job [ Lock Issues ] # Issues (Stale) Lock
# # # #
job-issues-lock: job-issues-lock:
name: >- name: >-
🔒 Check Inactive 🔒 Scan Lock Inactive
runs-on: ubuntu-latest # runs-on: ubuntu-latest
timeout-minutes: 4 runs-on: apollo-x64
timeout-minutes: 5
needs: needs:
- job-labels-create - job-labels-create
- job-issues-nolabel - job-issues-nolabel
steps: steps:
# # # #
# [ Lock Issues ] Look for inactives # Inactive Lock
# # # #
- name: "🔒 Lock Inactives" - name: >-
🔒 Inactive Lock
id: task_issues_inactive_lock
uses: dessant/lock-threads@v5 uses: dessant/lock-threads@v5
id: task_issues_lock_run
with: with:
github-token: ${{ secrets.ADMINSERV_TOKEN_CL }} github-token: ${{ secrets.ADMINSERV_TOKEN_CL || github.token }}
exclude-any-issue-labels: 'AC Review Required,Status 𐄂 Accepted,Status 𐄂 Review,Status 𐄂 Pending,Type ◦ Bug,Type ◦ Dependency,Type ◦ Docs,Type ◦ Feature,Type ◦ Git Action,Type ◦ Roadmap,Type ◦ Internal' exclude-any-issue-labels: '${{ env.LABEL_AC_REVIEW }},${{ env.LABEL_ACCEPTED }},${{ env.LABEL_REVIEW }},${{ env.LABEL_PENDING }},${{ env.LABEL_BUG }},${{ env.LABEL_DEPENDENCY }},${{ env.LABEL_DOCS }},${{ env.LABEL_FEATURE }},${{ env.LABEL_GIT }},${{ env.LABEL_ROADMAP }},${{ env.LABEL_INTERNAL }}'
add-issue-labels: 'Status 𐄂 Locked' add-issue-labels: '${{ env.LABEL_LOCKED }}'
issue-inactive-days: '60' issue-inactive-days: '120'
issue-lock-reason: 'resolved' issue-lock-reason: 'resolved'
issue-comment: > issue-comment: >
⚠️ This **issue** has been automatically locked since there has not been any recent activity after it was closed. ⚠️ This **issue** has been automatically locked since there has not been any recent activity after it was closed.
@@ -684,8 +730,8 @@ jobs:
--- ---
<sub>I am a bot reaching out to you with an automated response.</sub> <sub>I am a bot reaching out to you with an automated response.</sub>
exclude-any-pr-labels: 'AC Review Required,Status 𐄂 Accepted,Status 𐄂 Review,Status 𐄂 Pending,Type ◦ Bug,Type ◦ Dependency,Type ◦ Docs,Type ◦ Feature,Type ◦ Git Action,Type ◦ Roadmap,Type ◦ Internal' exclude-any-pr-labels: '${{ env.LABEL_AC_REVIEW }},${{ env.LABEL_ACCEPTED }},${{ env.LABEL_REVIEW }},${{ env.LABEL_PENDING }},${{ env.LABEL_BUG }},${{ env.LABEL_DEPENDENCY }},${{ env.LABEL_DOCS }},${{ env.LABEL_FEATURE }},${{ env.LABEL_GIT }},${{ env.LABEL_ROADMAP }},${{ env.LABEL_INTERNAL }}'
add-pr-labels: 'Status 𐄂 Locked' add-pr-labels: '${{ env.LABEL_LOCKED }}'
pr-inactive-days: '365' pr-inactive-days: '365'
pr-lock-reason: 'resolved' pr-lock-reason: 'resolved'
pr-comment: > pr-comment: >