Coding Blocks
Well, this is awkward. Coding Blocks is signing out for now, in this episode we’ll talk about what’s happening and why. We have had an amazing run, far better than we ever expected. Also, Joe recommends 50 games, Allen goes for the gold, and Outlaw is totally normal. (And we’re not crying you’re crying!) Thank you for the support over the last 11 (!!!) years. It's been a wild ride, and the last thing we ever expected when starting a tech podcast was getting to meet so many fantastic people. View the full show notes here: Tip of the Week UFO 50 is an odd collection of 50...
info_outlineCoding Blocks
For the full show notes head over to:
info_outlineCoding Blocks
Grab your headphones because it's water cooler time! In this episode we're catching up on feedback, putting our skills to the test, and wondering what we're missing. Plus, Allen's telling it how it is, Outlaw is putting it all together and Joe is minding the gaps! View the full show notes here: Reviews Thank you again for taking the time to share your review with us! iTunes: Yesso95 Spotify: Auxk0rd, artonus News Atlanta Dev Con September 7th, 2024 DevFest Central Florida September 28th, 2024 Two water coolers walk into a bar... Several folks share their origin...
info_outlineCoding Blocks
For the full show notes please visit: https://www.codingblocks.net/episode239
info_outlineCoding Blocks
It's Water Cooler Time! We've got a variety of topics today, and also Outlaw's lawyering up, Allen can read QR codes now, and Joe is looking at second careers. View the full show notes here: News As always, thank you for leaving us a review – we really appreciate them! Almazkun, vassilbakalov, DzikijSver Atlanta Dev Con September 7th, 2024 DevFest Central Florida on September 28th, 2024 Interested? Submit your talk proposal here: Water Cooler How many programmers are there now? () Are we still growing? What will it be like when we stop growing? What will people be...
info_outlineCoding Blocks
View the show notes on the web: In the past couple of episodes, we'd gone over what Apache Kafka is and along the way we mentioned some of the pains of managing and running Kafka clusters on your own. In this episode, we discuss some of the ways you can offload those responsibilities and focus on writing streaming applications. Along the way, Joe does a mighty fine fill-in for proper noun pronunciation and Allen does a southern auctioneer-style speed talk. Reviews As always, thank you for leaving us a review - we really do appreciate them! From iTunes: Abucr7 Upcoming Events Atlanta Dev...
info_outlineCoding Blocks
Topics, Partitions, and APIs oh my! This episode we're getting further into how Apache Kafka works and its use cases. Also, Allen is staying dry, Joe goes for broke, and Michael (eventually) gets on the right page. The full show notes are available on the website at News Thanks for the reviews! angingjellies and Nick Brooker Please leave us a review! () Atlanta Dev Con is coming up, on September 7th, 2024 () Kafka Topics They are partitioned - this means they are distributed (or can be) across multiple Kafka brokers into "buckets" New events written to Kafka are...
info_outlineCoding Blocks
We finally start talking about Apache Kafka! Also, Allen is getting acquainted with Aesop, Outlaw is killing clusters, and Joe is paying attention in drama class. The full show notes are available on the website at News Atlanta Dev Con is coming up, on September 7th, 2024 () Intro to Apache Kafka What is it? Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. Core capabilities High throughput - Deliver messages at...
info_outlineCoding Blocks
Reviews iTunes: ivan.kuchin News Atlanta Dev Con September 7th, 2024 Topics People trying to remove their answers from StackOverflow to not allow OpenAI to use their answers without permission/recognition? Obfuscate data dumps with PostgreSQL Kotlin Coroutines Reminded Outlaw of the Cloudflare Workers we mentioned a while back Please leave us a review! You can control if YouTube keeps track of your history (at least that you can see) 100 Things You Didn't Know About Kubernetes Do the IDE AI's really make you more...
info_outlineCoding Blocks
Full episode show notes can be found at:
info_outlineIn this episode, we are talking all about GitHub Actions. What are they, and why should you consider learning more about them? Also, Allen terminates the terminators, Outlaw remembers the good ol' days, and Joe tries his hand at sales.
See the full show notes at https://www.codingblocks.net/episode218
News
- Thanks for the reviews! iTunes: nononeveragain, JoeRecursionjoe, Viv-or-vyv, theoriginalniklas
- Leave us a review if you have a chance! (/reviews)
- Allen did some work on his computer:
What are GitHub Actions?
- GitHub Actions is a CI/CD platform launched in 2018 that lets you define and automate workflows
- It's well integrated into Github.com and fits nicely with git paradigms - repository, branches, tags, pull requests, hashes, immutability (episode 195)
- The workflows can run on GitHub-hosted virtual machines, or on your own servers
- GitHub Actions are free for standard Github runners in public repositories and self-hosted runners, private repositories get a certain amount of "free" minutes and any overages are controlled by your spending limits
- 2000 minutes and 500MB for free, 3000 minutes and 1Gb for Pro, etc (docs.github.com)
- Examples of things you can do
- Automate builds and releases whenever a branch is changed
- Run tests or linters automatically on pull requests
- Automatically create or assign Issues, or labels to issues
- Publish changes to your gh-pages, wiki, releases,
- Check out the "Actions" tab on any github repository to check if a repository has anything setup (github.com)
- The "Actions" in GitHub Actions refers to the most atomic action that takes place - and we'll get there, but let us start from the top
Workflows
- Workflow is the highest level concept, you see any workflows that a repository has set up (learn.microsoft.com)
- A workflow is triggered by an event: push, pull request, issue being opened, manual action, api call, scheduled event, etc (learn.microsoft.com)
- TypeScript examples:
- CI - Runs linting, checking, builds, and publishes changes for all supported versions of Node on pull request or push to main or release-* branches
- Close Issues - Looks for stale issues and closes them with a message (using gh!)
- Code Scanning - Runs CodeQL checks on pull request, push, and on a weekly schedule
- Publish Nightly - Publishes the last set of successful builds every night
- Workflows can call other workflows in your repository, or in a repository you have access to
- Special note about calling other workflows - when embedding other workflows you can specify a specific version with either a tag or a commit # to make sure you're running exactly what you expect
- In the UI you'll see a filterable history of workflow runs on the right
- The workflow is associated with a yaml file located in ./github/workflows
- Clicking on a workflow in the left will show you a history of that workflow and a link to that file (cli.github.com)
Jobs
- Workflows are made up of jobs, which are associated with a "runner" (machine) (cli.github.com)
- Jobs are mainly just a container for "Steps" which are up next, but the important bit is that they are associated with a machine (virtual or you can provide your own either via network or container)
- Jobs can also be dependent on other jobs in the workflow - Github will figure out how to run things in the required order and parallelize anything it can
- You're minutes are counted by machine time, so if you have 2 jobs that run in parallel that each take 5 minutes…you're getting "charged" for 10 minutes
Steps
- Jobs are a group of steps that are executed in order on the same runner
- Data can easily be shared between steps by echoing output, setting environment variables or mutating files
- Each step runs an action
Actions GitHub Enterprise Onboarding Guide - GitHub Resources
- An action is a custom application written for the GitHub Actions platform
- GitHub provides a lot of actions and other 3p (verified or not) providers do as well in the "Marketplace", you can use other people's actions (as long as they don't delete it!), and you can write your own
- Marketplace Examples (github.com)
- Github Checkout - provides options for things like repository, fetch-depth, lfs (github.com)
- Setup .NET Core SDK - Sets up a .NET CLI environment for doing dotnet builds (github.com)
- Upload Artifact - Uploads data for sharing between jobs (90-day retention by default) (github.com)
- Docker Build Push - Has support for building a Docker container and pushing it to a repository (Note: ghrc is a valid repository and even free tiers have some free storage) (github.com)
- Custom Examples
- "run" command lets you run shell commands (docker builds, curl, echo, etc)
- Totally Custom (docs.github.com)
Other things to mention
- We glossed over a lot of the details about how things work - such as various contexts where data is available and how it's shared, how inputs and outputs are handled…just know that it's there! (docs.github.com)
- You grant job permissions, default is content-read-only but you must give fine-grained permissions to the jobs you run - write content, gh-pages, repository, issues, packages, etc
- There is a section under settings for setting secrets (unretrievable and masked in output) and variables for your jobs. You have to explicitly share secrets with other jobs you call
- There is support for "expressions" which are common programming constructions such as conditionals and string helper functions you can run to save you some scripting (docs.github.com)
Verdict
- Pros:
- GitHub Actions is amazing because it's built around git!
- Great features comparable (or much better) than other CI/CD providers
- Great integration with a popular tool you might already be using (docs.github.com)
- Works well w/ the concepts of Git By default, workflows cannot use actions from GitHub.com and GitHub Marketplace. You can restrict your developers to using actions that are stored on your GitHub Enterprise Server instance, which includes most official GitHub-authored actions, as well as any actions your developers create. Alternatively, to allow your developers to benefit from the full ecosystem of actions built by industry leaders and the open-source community, you can configure access to other actions from GitHub.com.
- Great free tier
- Great documentation https://docs.github.com/en/actions/using-containerized-services/creating-postgresql-service-containers
- Hosted/Enterprise version
- Cons:
- Working via commits can get ugly…make your changes in a branch and rebase when you're done!
Next Steps
- If you are interested in getting started with DevOps, or just learning a bit more about it, then this is a great way to go! It's a great investment in your skillset as a developer in any case.
- Examples:
- Build your project on every pull request or push to trunk
- Run your tests, output the results from a test coverage tool
- Run a linter or static analysis tool
- Post to X, Update LinkedIn whenever you create a new release
- Auto-tag issues that you haven't triaged yet
Resources We Like
- GitHub Actions (github.com)
- GitHub Actions Documentation (github.com)
- Learn GitHub Actions (github.com)
- Actions on the GitHub marketplace (github.com)
Tip of the Week
- There is a GitHub Actions plugin for VSCode that provides a similar UI to the website. This is much easier than trying to make all your changes in Github.com or bouncing between VSCode and the website to see how your changes worked. It also offers some integrated documentation and code completion! It's definitely my preferred way of working with actions. (marketplace.visualstudio.com)
- Did you know that you can cancel terminating a terminating persistent volume in Kubernetes? Hopefully you never need to, but you can do it! (github.com)
- How are the Framework Wars going? Check out Google trends for one point of view. (trends.google.com)
- Rebasing is great, don't be afraid of it! A nice way to get started is to rebase while you are pulling to keep your commits on top.
git pull origin main --rebase=i
- There's a Dockerfile Linter written in Haskell that will help you keep your Docker files in great shape. (docker.com)