Make a TODO robot with Github Actions

Create a todolist robot with daily email notification

SMJ

⚠️ This post was last updated on January 3, 2020 and the content may be OUTDATED!

If you encounter any issues, please feel free to reachout to me!

What’s Github Actions

Github Actions is a CI(continuous integration) and CD(continuous deployment) service that help you automate your software development workflows in the same place you store code and collaborate on pull requests and issues. It was launched in October 2018 and was officially available to all users in November 2019. With Github Actions you can write individual tasks, called actions, and combine them to create a custom workflow. Workflows are custom automated processes that you can set up in your repository to build, test, package, release, or deploy any code project on GitHub.

You can create workflows using actions defined in your repository, open source actions in a public repository on GitHub, or a published Docker container image. But workflows in forked repositories don’t run by default. If you don’t want to create your actions by yourself, you can discover actions in the GitHub Marketplace, also you can share your actions with the Marketplace.

Ok, now let’s go.

Getting started

We can get this Send Mail Actions from here or source. It help us send email to our inbox.

Configuring Github Actions

We should create a directory named .github/workflows to store our workflow files at the root of our repository. In .github/workflows, add a .yml or .yaml file for our workflow. For example, .github/workflows/auto.yml.

First we set a trigger

name: GitHub Actions Email Bot

on:
schedule:
  - cron: '0 22 * * *'

In the above code, name is actions description, on is the trigger condition. We use the POSIX cron syntax to schedule the workflow. It is triggered at 6:00am(UTC+8) everyday.

Next writing a TODO list and converting it from markdown to html

runs-on: ubuntu-latest
steps:
  - name: Checkout
    uses: actions/checkout@v2.0.0
  - name: Get pandoc
    run: sudo apt-get install pandoc
  - name: Convert My TODO List
    run: pandoc ./TODO.md > todo.html

Last configuring the send email actions

- name: Send email
  uses: dawidd6/action-send-mail@v1.3.0
  with:
    server_address: smtp.gmail.com
    server_port: 465
    username: ${{ secrets.MAIL_USERNAME }}
    password: ${{ secrets.MAIL_PASSWORD }}
    subject: My TODO List
    body: file://todo.html
    to: test@example.com
    from: TODO List Notification
    content_type: text/html

For security, we should set our email username and password in the settings/secrets menu of the project. I set my email username like MAIL_USERNAME, password like MAIL_PASSWORD.

Now we can receive a TODO list email every morning.


This is my full todo.yaml:

name: GitHub Actions Email Bot

on:
  schedule:
    - cron: '0 22 * * *'

jobs:
  Todo_bot:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2.0.0
      - name: Get pandoc
        run: sudo apt-get install pandoc
      - name: Get My TODO List
        run: pandoc ./TODO.md > result.html
      - name: Send email
        uses: dawidd6/action-send-mail@v1.3.0
        with:
          server_address: smtp.gmail.com
          server_port: 465
          username: ${{ secrets.MAIL_USERNAME }}
          password: ${{ secrets.MAIL_PASSWORD }}
          subject: TODO List
          body: file://result.html
          to: test@example.com
          from: TODO List Notification
          content_type: text/html

Sooner or later, everything ends.