Github Milestone Motivator: An innovative idea from Pulumi intriguing challenge 🏆
Long Phan

Long Phan @minhlong2605

About: Web3 Software Engineer @SkyMavis

Location:
Ho Chi Minh City, Vietnam
Joined:
Mar 16, 2025

Github Milestone Motivator: An innovative idea from Pulumi intriguing challenge 🏆

Publish Date: Apr 7
44 2

This is a submission for the Pulumi Deploy and Document Challenge: Get Creative with Pulumi and GitHub

What I Built

Managing GitHub milestones can be a tedious task, especially when it comes to tracking progress and keeping teams motivated. The "GitHub Milestone Motivator" is a creative solution built with Pulumi and the GitHub API to automate this process. It tracks milestone progress across repositories, posts encouraging comments on open issues (e.g., "Halfway there at 50%!") when progress hits key thresholds (25%, 50%, 75%, 100%), and assigns a "Milestone Star" label when a milestone is fully completed. Using Pulumi’s Automation API, this tool simplifies repository management and boosts team morale with minimal effort.

Live Demo Link

Demo link:

  1. https://github.com/demo-longphan/frontend (my tested repo before publishing this submission)
  2. https://github.com/demo-longphan/smart-contract

Project Repo

Github repository: https://github.com/longphanquangminh/creative-pulumi-github-contest (Including complete README documentation)

My Journey

Before proceeding with the implementation, I drafted a business logic diagram as follows:

Logic

Explaination: When the program is executed, it will scan all the repositories defined by the user. For each repository, it will check its milestones, and within each milestone, it will examine the related issues. There are two possible scenarios:

  • If the milestone is not completed yet, the program will check the progress percentage. Based on the percentage (25%, 50%, 75%, or 100%), it will display an encouraging message accordingly.
  • If the milestone is 100% complete, a congratulatory comment will be added by the manager to the representative issue (the last issue) to celebrate the team’s success.

This isn’t just my story — it’s an instruction manual for anyone on a similar journey. To apply these lessons effectively in a management context, follow the steps below:

👣 Step 1: Create a milestone in the repository (Go to Repo -> click Issues -> click Milestone tag to create.

Step1

👣 Step 2: Once the milestone is created, start working on the project. There will be tasks/issues — when creating them, make sure to tag them with the corresponding milestone.

Step2

👣 Step 3: After creating an issue/task, typically following the SDLC (Software Development Life Cycle), we will start coding or fixing bugs for those features. Once completed, we simply close the issue and move on to the next one.
In this demo, I will only create one issue.

Step3

👣 Step 4: Run "npm run dev" and wait for the result.

Step4

As you can see in the image, the comment has been created and a label has been assigned to highlight the issue and boost the morale of software engineers.
With this setup, managers no longer need to manually go through each step via the UI — the tool already contains the necessary logic. Just by running a single command, it will execute everything automatically.


While building the "GitHub Milestone Motivator" with Pulumi, I hit a roadblock: the GitHub Provider doesn’t support IssueComment. I wanted to post motivational messages on issues to track milestone progress, so I turned to Octokit to fill the gap. Integrating Octokit let me add comments like "Halfway there at 50%!" directly to issues, bypassing Pulumi’s limitation. The challenge was finding a clean way to weave this into my workflow, but once I got it working, I learned how powerful it is to combine Pulumi’s infrastructure management with Octokit’s flexibility for dynamic GitHub interactions.

Using Pulumi with GitHub

In the "GitHub Milestone Motivator," I used Pulumi to declaratively manage GitHub repositories and create the "Milestone Star" label when a milestone hits 100%. By leveraging Pulumi’s Automation API, I automated resource provisioning in a repeatable, code-driven way. This was beneficial because it ensured consistent setup across runs, simplified tracking of infrastructure state, and let me focus on the logic rather than manual API calls. While Pulumi couldn’t handle issue comments due to the missing IssueComment resource, its strength in managing static resources paired perfectly with Octokit for dynamic actions.

📣 Dev Community shared this on X – 3,770+ views as of April 2025: https://x.com/ThePracticalDev/status/1911621746974679521

Comments 2 total

Add comment