I recently wrote a Github Action that makes one commit to its parent repo once a day, and I'll attach the code at the end of this article. It was a neat learning exercise, and a satisfying, although there's not much here technically.
I became interested in this idea from two angles:
- I was once asked to write a cron job that accessed a legacy API once per day. This was a pretty simple task - all I needed to do was send one API request per day, and I didn't need to handle the response, or do anything in the way of error handling.
The end result of this assignment was a process written in Go and deployed on Google Cloud Platform. It worked, but the level of time and effort felt disproportionate to what I felt was a trivial task.
As such, I started looking into more expedient alternatives for automating certain tasks, and that's how Github actions came to my attention.
- At the same time, I've always been looking for ways to maintain my Github contribution count. It's generally recommended that you keep up a steady stream of commits, but it can be challenging to do so. A lot of what I work on does not attach to my personal Github account, or I might forget to push changes on a personal project. As such, there's a lot of work that is 'lost.'
As promised. The result of this process is below:
name: Commit date to master on: schedule: # Runs "every day at 12:00" (see https://crontab.guru) - cron: '0 12 * * *' jobs: date: runs-on: ubuntu-latest steps: # Checkout the branch - name: checkout uses: actions/checkout@v3 - name: save current date run: | # do some operation that changes a file in the git repo date > time.txt - name: setup git config run: | # setup the username and email. git config user.name "Your Name" git config user.email "email@example.com" - name: commit run: | # Stage the file, commit and push git add time.txt git commit -m "new date commit" git push origin main
I can't say this was any great technical innovation, beyond learning Github actions. For me, the great reward is achieving something that makes life more convenient, solving a problem, even if the means is less than impressive.