Last week I focused on learning about CI/CD Pipelines and Docker Containerization. First, I jumped in to learning Github Actions for use with CI/CD pipelines. I wrote a simple build and test github action that runs whenever there is a push to main or pull request. I found these resources helpful for learning about CI/CD Pipelines with Github Actions and specifically for .NET.

CI/CD Resources:

Next, I jumped in to learning about Docker and containerization. This is a bigger topic than I realized but my intention was to get enough experience to be dangerous. I learned about Containers, Images, Compose, and worked through the .NET focused tutorial on Docker with my local machine. One snag that occured is that Docker requires a good amount of space on your computer and if you are on a Mac, Docker will just stop working and you won’t know the issue. Even though I cleared up a lot of storage on my computer when I got the warning, I did not know that Docker wasn’t working due to that issue until after I restarted my computer.

Docker Resources:

To bring it together, I now have a GitHub Action that builds and tests my app within a container on GitHub!

Also, shout out to Claude AI, which I have been using to craft custom tutorials for me as an entry point in to learning a new topic.

Next Steps

This week I will focus on Deploying my app using Docker Containers and Render.com. I will also need to deploy my react front end but I will keep that simple. I don’t need to deploy a database at the moment since I am using SQLite as a file in my API but if I have time I will switch over to Postgresql. My goal is to have the app fully deployed and spend any time I have left this week polishing and working on the project. Next week, the final week, will be focused more on documentation, presentation and the final report.

I don’t have any impediments this week other than running out of time for this semester and my final project in another course.

I wish I had time to dive deep in to the topics I have learned this summer but instead I have prioritized a breadth of topics that covers the back end. This was apparent when trying to learn Docker as it takes some time to really master it. In the end I prioritized just getting something running over attempting to master the tool.

Pro Tip, if you are troubleshooting your github action, most examples run the action when there is a push to the main branch. For my first implementation I kept having to fix small things and push to main to see if it works on Github which created a lot of poorly written commits on the main branch. For the second github action I took the branch that I was using (I called it DevOps) and had it run when there was a push to DevOps. Seems obvious now but it was not obvious in the beginning.

# Name that appears in the GitHub Actions tab
name: CI - Build and Test API

on:
  push:
    branches: [ main, DevOps ]
  
  pull_request:
    branches: [ main, DevOps ]
  
  # Allow manual triggering from GitHub UI
  workflow_dispatch: