DEV Community

Cover image for Are you an early 🐤 or a night 🦉? Let's check out in the Gist
maxam
maxam

Posted on

Are you an early 🐤 or a night 🦉? Let's check out in the Gist

Last week, I build a simple GitHub Action, called productive-box. It's my first time creating a GitHub Action so I would like to share some insight about it.

The kernel concept about this project is using commit histories to find your most productive hours and declare which type of people you are (simply an early 🐤 or a night 🦉), finally write into your Gist.

Commit history

When it comes to 'commit', we always think of GitHub. That's right. Here I using GitHub API to access commit history. It's also my first time using it. In the beginning, I check out the v3 RESTful API, but I found something new - v4 GraphQL API, so I gave it a try.

The greatest part of GitHub GraphQL API is it provides a real-time and interactive playground: GraphQL Explorer which makes a better experience with this new stuff.

https://developer.github.com/v4/explorer/

https://developer.github.com/v4/explorer/

After I completed this project, I knew that GraphQL just means POST a query and gets something you REALLY need.

Gist

reference to an amazing project - matchai/waka-box

Like him, I also use @octokit/rest, the GitHub REST API client for JavaScript.

WorkFlows

Workflows are custom automated processes that you can set up in your repository to build, test, package, release, or deploy any project on GitHub.

Easily checkout your workflows in the 'Actions' tab

Simply saying, it uses GitHub's virtual machine to execute our script and we just only need to write YAML config into .github/workflows/xxx.yml.
My Action simply listens to two events: push and schedule. It means that when we push some commits to the master branch(by default) or periodically(just a Linux cron job), it will trigger my built script.

Going Forward

I also have some other ideas about this project. Welcome to follow up or star ⭐ ️my project if you're interested in it.

GitHub logo maxam2017 / productive-box

Are you an early 🐤 or a night 🦉? Let's check out in gist

screenshot

📌productive-box

Are you an early 🐤 or a night 🦉
When are you most productive during the day
Let's check out in gist!


This project is inspired by an awesome pinned-gist project.
Find more in https://github.com/matchai/awesome-pinned-gists

Overview

This project uses GitHub graphQL API to get the commit histories and write into the gist by rest.js

Setup

Prep work

  1. Create a new public GitHub Gist (https://gist.github.com/)
  2. Create a token with the gist and repo scope and copy it. (https://github.com/settings/tokens/new)

    enable repo scope seems DANGEROUS
    but this GitHub Action only accesses your commit timestamp in repository you contributed.

Project setup

  1. Fork this repo

  2. Open the "Actions" tab of your fork and click the "enable" button

  3. Edit the environment variable in .github/workflows/schedule.yml:

    • GIST_ID: The ID portion from your gist url: https://gist.github.com/maxam2017/9842e074b8ee46aef76fd0d493bae0ed.
    • LOCALE: The locale of your country, eg. zh-TW for Taiwan, en-US for…




Feedback welcome! Thanks for reading.

Discussion (1)

Collapse
roelofjanelsinga profile image
Roelof Jan Elsinga

Such a creative way to using GitHub actions!