How to show recent GitHub activities on your profile readme
Tags: github, git, webdev, opensource
Published: 2022-01-13 17:17:50

We all know Github is a great platform to collaborate with people and contribute to open source projects.   daily, we do perform some activities on GitHub like creating an issue, creating a pull request, code review and all other things.

These are the activities that get added to our contributions and we get a green square for each day with our contributions counts.

For Example, contribution count graph like this,

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1642088656573/WeTNEMO3f.png)

When we click on any box we will get activities of that day something like this.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1642088945299/-GcVzoR6N.png)

Here you can see my activities of date `10th October 2021`, I created some commits and opened some issues.

Have you ever thought of showing your GitHub activities on your Profile Readme?

You will be thinking like is that even possible? yes, it is possible and today in this article, we will be discussing how to show our recent GitHub activities on our profile readme.

Let's get started.

We will be going to use Github Actions that will help us to create a workflow to show our recent activities on Profile readme.

before jumping into the setup let's first discuss what are GitHub actions and what they are used for.

## What are GitHub actions?

GitHub actions are a set of events and workflow, whenever specified events happen to your GitHub repository it will run the associated workflow for it.

want to learn more about Github actions, you can get started from [here](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions) 

{% youtube cP0I9w2coGU %}

## GitHub - Activity - Readme

**GitHub - Activity - Readme** is a Github action that will update your profile readme with recent GitHub activity.

It is created by **James George** you can check his profile [here](https://github.com/jamesgeorge007)

to work with this action we will need to set up a workflow that will be running automatically to update the profile readme with recent activities.

### Setting up workflow

we can easily set up this workflow in our profile repository to capture and update profile readme with recent activities.

#### Create the `.github` folder in your profile repository if it does not exist.

```
> mkdir .github
```
#### Create the `workflows` folder inside the `.github`folder if it does not exist.

```
>mkdir .github/workflows
```
#### Create the `{workflowname}.yml` file inside `workflows` folder.

 where you can replace  **workflow name** with your workflow name. I will give the name `update-readme.yml`.

```
> update-readme.yml
```
after creating a workflow file add this content to it.

```yml
name: Update README

on:
  schedule:
    - cron: "*/5 * * * *" # Runs every 5 minutes.

jobs:
  build:
    runs-on: ubuntu-latest
    name: Update this repo's README with recent activity

    steps:
      - uses: actions/checkout@v2
      - uses: jamesgeorge007/github-activity-readme@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          COMMIT_MSG: "Updated README with recent activity"
          MAX_LINES: 10
```
#### Here we have three main components of the workflow

1. name
2. on
3. jobs

Let's discuss them one by one

- **name** is the name of the workflow after workflow run If you see the actions tab in your repository you will get workflow runs like this.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1642090901545/UQ3bn-6LK.png)

- **on** is used for defining what action you want to run this workflow.

here we are running this workflow on `schedule` using a cron job to run this workflow every 5 minutes automatically.

If you don't know much about cron syntax this may be helpful for you
[The quick and simple editor for cron schedule expressions](https://crontab.guru)

- **jobs** is used for defining what to do when an event happens on our repository.

here we are defining only one job that is **build** which will commit on our repository with the message **Update this repo's README with recent activity**.

for jobs, we will need to define what environment it will be running and we are running this job on `ubuntu`. 

also, we will need to define what steps to use, something like this

```
      - uses: actions/checkout@v2
      - uses: jamesgeorge007/github-activity-readme@master
```

`env` is used for automatic token authentication.
you don't need to worry about `secrets.GITHUB_TOKEN` will automatically get referred from your GitHub account.

```
env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```

if you notice we are using the `with` attribute for 2nd action that is `jamesgeorge007/github-activity-readme@master`

here we are providing 2 options `COMMIT_MSG` and `MAX_LINES`.

- COMMIT_MSG - Commit message used while committing to the repository.
- MAX_LINES - The most number of lines should populate in your readme file

Now, I hope we are clear with all the components of a workflow.

#### The Last step is to add this content to your profile `README.md` file.

```
# Recent Activity :zap:
<!--START_SECTION:activity-->
<!--END_SECTION:activity-->
```
Think of it like a block that will get replaced by your recent activities.

For Example :

```
# Recent Activity :zap:

<!--START_SECTION:activity-->
1. 🎉 Merged PR [#2197](https://github.com/open-metadata/OpenMetadata/pull/2197) in [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
2. ❗️ Closed issue [#2040](https://github.com/open-metadata/OpenMetadata/issues/2040) in [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
3. ❗️ Closed issue [#2028](https://github.com/open-metadata/OpenMetadata/issues/2028) in [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
4. ❗️ Closed issue [#2156](https://github.com/open-metadata/OpenMetadata/issues/2156) in [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
5. 🗣 Commented on [#2156](https://github.com/open-metadata/OpenMetadata/issues/2156) in [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
6. 🎉 Merged PR [#2154](https://github.com/open-metadata/OpenMetadata/pull/2154) in [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
7. ❗️ Closed issue [#2087](https://github.com/open-metadata/OpenMetadata/issues/2087) in [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
8. ❗️ Opened issue [#2156](https://github.com/open-metadata/OpenMetadata/issues/2156) in [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
9. ❗️ Opened issue [#2147](https://github.com/open-metadata/OpenMetadata/issues/2147) in [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
10. ❗️ Closed issue [#1876](https://github.com/open-metadata/OpenMetadata/issues/1876) in [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
<!--END_SECTION:activity-->
```
Example of my profile readme with recent activities

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1642092043619/6FPB6gSY4.png)

## Summary 
- we discussed what are github actions and why they are used for.
- we did set up the workflow to update our profile readme with recent activities.

## Links

- [GitHub - Activity - Readme](https://github.com/marketplace/actions/github-activity-readme)
- [Sachin Chaurasiya Github Profile](https://github.com/Sachin-chaurasiya)

And that’s it for this topic. Thank you for reading.

## Connect with me
[LinkedIn](https://www.linkedin.com/in/sachin-chaurasiya) | [Twitter](https://twitter.com/sachindotcom)

<a href="https://www.buymeacoffee.com/sachin87" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-blue.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>