Skip to content

Conversation

@xnealcarson
Copy link
Member

@xnealcarson xnealcarson commented Oct 13, 2025

Fixes #8316

What changes did you make?

  • added most recent skillsIssueNums.csv to the github-actions/utils/_data folder, and converted the directory to JSON format (skills-directory.json).
  • Created a new module in utils that looks up in the directory and return the information (skills-directory.js).
  • added import module to post-to-skills.js for the skills directory
  • Refactored code in post-to-skills-issue.js to search the newly added skills directory before deferring to the querySkillsIssue() GitHub API, if necessary, upon which new info found using querySkillsIssue() will be saved to the skills directory
  • Tested changes by creating fake skills issue on my repo's project board (Skills Issue: Developer: Xavier Neal-Carson (Test) xnealcarson/website#17) and then creating subsequent test issue to ensure proper function of Skills Activity tracking (Test Issue for Refactored Skills Activity GHA xnealcarson/website#18)

Why did you make the changes (we will use this info to test)?

  • We needed to reduce the number of unnecessary GitHub API calls that the "Member Activity Trigger" workflow makes when posting to a user's Skills Issue by providing a user directory. New info found

CodeQL Alerts

After the PR has been submitted and the resulting GitHub actions/checks have been completed, developers should check the PR for CodeQL alert annotations.

Check the PR's comments. If present on your PR, the CodeQL alert looks similar as shown

Screenshot 2024-10-28 154514

Please let us know that you have checked for CodeQL alerts. Please do not dismiss alerts.

  • I have checked this PR for CodeQL alerts and none were found.
  • I found CodeQL alert(s), and (select one):
    • I have resolved the CodeQL alert(s) as noted
    • I believe the CodeQL alert(s) is a false positive (Merge Team will evaluate)
    • I have followed the Instructions below, but I am still stuck (Merge Team will evaluate)
Instructions for resolving CodeQL alerts

If CodeQL alert/annotations appear, refer to How to Resolve CodeQL alerts.

In general, CodeQL alerts should be resolved prior to PR reviews and merging

Screenshots of Proposed Changes To The Website (if any, please do not include screenshots of code changes)

No visual changes to the website

NOTE TO REVIEWERS

If you would like to test these changes for yourself:

  • Make sure your HACKFORLA_GRAPHQL_TOKEN is active
    • Change the default branch of your repo to a test branch
    • Change line in activity.trigger.yml to refer to your own repo.
    • Add a Skills Issue in your name to your project and assign it to yourself. Take note of the issue number and add it below.
    • The automation uses GraphQL queries to locate each user's Skills Issue and the bot comment. HfLA's project, status, and field ids are hard-coded in the file github-actions/utils/_data/status-field-ids.js, so you will need to tell the bot the number of your repo's Skills Issue by making the following edits:
      • In post-to-skills-issue.js, change:
                const isActiveMember = await checkTeamMembership(github, context, eventActor, TEAM);
        
        to:
                // const isActiveMember = await checkTeamMembership(github, context, eventActor, TEAM);
                const isActiveMember = true;
        
      • Change lines 39-44 in post-to-skills-issue.js to:
          // Get eventActor's Skills Issue number, nodeId, current statusId (all null if no Skills Issue found)
          // const skillsInfo = await querySkillsIssue(github, context, username, SKILLS_LABEL);
         const skillsIssueNum = _the number of the skills issue you created_ ;  
         const skillsIssueNodeId = null;
         const skillsStatusId = null;
         const isArchived = false;
        

@github-actions
Copy link

Want to review this pull request? Take a look at this documentation for a step by step guide!


From your project repository, check out a new branch and test the changes.

git checkout -b xnealcarson-enhance-gha-skillsactivity-8316 gh-pages
git pull https://github.com/xnealcarson/website.git enhance-gha-skillsactivity-8316

@github-actions github-actions bot added role: back end/devOps Tasks for back-end developers Complexity: Large Feature: Refactor GHA Refactoring GitHub actions to fit latest architectural norms size: 8pt Can be done in 31-48 hours Lang: GHA GitHub Actions Skill: enhance labels Oct 13, 2025
@ryanfkeller ryanfkeller self-requested a review October 14, 2025 21:00
@ryanfkeller
Copy link
Member

Hi @xnealcarson, I'll give this a review as well! ETA 10/17, generally able to be available 1-5p weekdays.

@ryanfkeller
Copy link
Member

ryanfkeller commented Oct 15, 2025

Hey @xnealcarson, thanks for taking this issue! It looks like you're on the right track, and also great job on the PR description -- it made it easy to understand what you've done here.

I noticed a couple things in my review:

  • In post-to-skills.js, I think you have some old code on line 55 that creates a syntax error on trying to re-define skillsInfo (and if it ran would result in an unneeded re-query for the skills issue). That line can probably just be deleted. Nitpick but the extra indentation on the following lines could probably also be removed.
  • In post-to-skills.js, I can see that we are using a query to search for the "activity comment" even when we got the issue number from the local JSON. Since I believe the JSON includes the comment ID under the "id" category, you should be able to just read/patch that comment directly and skip the search if there is a JSON entry. The query/search you have should definitely still be a fallback for when you don't have the issue info saved locally.
  • Since we do save the "activity comment" id in the skills-directory.json, we'll want to make sure to update that JSON with the ID when we have to create a new "activity comment".
  • We may not want to save the skillsIssueNums-*.csv in the _data directory, since it isn't used directly and with this flow in action, I expect the .json should be the source of truth.
  • (Edited, I missed some things in your description in my original comment, sorry!) Instead of changing the post-to-skills-issue.js to bypass isActiveMember and skillsInfo collection, would it be possible to instead modify our local copy of the _data sources so the full script flow is tested? We probably also want the test case of the skills issue not existing in _data as well so the query is executed. If you have examples of that, could you share the workflow run link?

Again, really nice work! Looking forward to seeing the next rev 🚀

Copy link
Member

@ryanfkeller ryanfkeller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good, but a few things I think need attention! See my comment above.

@github-project-automation github-project-automation bot moved this from PR Needs review to PRs being reviewed in P: HfLA Website: Project Board Oct 15, 2025
@t-will-gillis
Copy link
Member

Hey @xnealcarson Great work on this so far!!! Thanks for being patient.

I am still looking through things but have a couple comments:

  • I uploaded a new file skillsIssueNums-10-19.csv that might be easier to work with than the previous one. It has what should be the correct nodeId for each issue number, and the commentId is clearer now.
  • I was looking at the update-directory.js file- I don't think it is pulling up the info correctly, maybe use .filter sim to this:
    const result = directory.filter(entry => entry.username === eventActor); and return result ?
  • Since the .csv won't provide the skillsStatusId or isArchived info, and since the querySkillsIssue() won't find a comment id, adding in some default values like this will be helpful later on:
    const skillsIssueNum = skillsInfo.issueNum;
     const skillsIssueNodeId = skillsInfo.issueId;
     const skillsStatusId = skillsInfo?.statusId || 'unknown';
     const isArchived = skillsInfo?.isArchived || false;
     const commentFoundId = skillsInfo?.commentId || null;   // not used currently
    
     console.log(`skillsIssueNum: ${skillsIssueNum}, skillsIssueNodeId: ${skillsIssueNodeId}, skillsStatusId: ${skillsStatusId}, isArchived: ${isArchived}`);  // only for debugging  
    
    This should (I believe) let the code run after line 116 +/-
  • This code above defines the commentFoundId - which is the comment_id where the bot is adding it's comments.
  • A warning however: when I was first looking at this ER I assumed that the comment id was all we needed to know to update the comment, but I am thinking now that this does not help us a lot because even though we have the comment_id we need to retrieve the body of the comment before we can PATCH it. That is not at all helpful to you I know. If you and/or Ryan have ideas..?

Otherwise, I'm still looking at this but hopefully these comments and @ryanfkeller 's are helpful! Great job again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Complexity: Large Feature: Refactor GHA Refactoring GitHub actions to fit latest architectural norms Lang: GHA GitHub Actions role: back end/devOps Tasks for back-end developers size: 8pt Can be done in 31-48 hours Skill: enhance

Projects

Status: PRs being reviewed

Development

Successfully merging this pull request may close these issues.

Enhance GHA: "Skills Activity" use Skills Issue directory

3 participants