Let’s Try GitHub Actions

January 18

denotypescriptGitHub

What Are GitHub Actions?

GitHub provides a way to automate CI/CD processes via GitHub Actions. When these were first announced I was excited for what the could do for my team when we had a PR or commit.

This week I stumbled across a blog post by Swyx. He wrote about Data Scraping with GitHub Actions. I was inspired to give it a try with the Deno Disney Scraper.

Do You YAML?

Once the scraper script was created, implementing an action was pretty straight forward.

on:
  # schedule will use cron notation, there are other options to use on events
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron: "*/5 * * * *"
  # everytime the main branch is pushed it runs the script as well
  push:
    branches:
      - main

# name for the action
name: Scrape Disney Times
jobs:
  build:
    name: Scrape-Times
    runs-on: ubuntu-latest
    steps:
      # checkout the code
      - uses: actions/checkout@main

      # get a library to run deno
      - name: Setup Deno Module
        uses: denolib/setup-deno@master

      # run the deno script
      - name: Scrape
        run: deno run --unstable --allow-net --allow-write --allow-read get_data.ts

      # check in the results
      - name: Publish
        uses: mikeal/publish-to-github-action@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          BRANCH_NAME: "main"

The setup took a while. on: push: works flawlessly. Every time I pushed the branch it would run without issue. I did run into an issue with on: schedule. It seems that the cron job set to every 5 minutes doesn't always run!. I've reached out to a few people who are more familiar than I am with actions and it seems that everything is set up correctly.

Over all I really like it and can't complain for a completely free service. If I was using a paid tier I would be much more concerned about actions not always firing.

If you run into any issues or questions hit me up on Twitter