The Complete GitHub Actions & Workflows Guide
- 8 hours on-demand video
- 4 articles
- Full lifetime access
- Access on mobile and TV
- Certificate of Completion
Get your team access to 4,000+ top Udemy courses anytime, anywhere.Try Udemy for Business
- Learn about writing serialized data in the YAML format
- Discover conceptually what workflows and GitHub actions are
- Learn what terms like action, step, job, event, workflow, etc.. mean
- Discover everything you can do in a github workflow (events, schedules, filtering, environment variables, context, encryption, matrix and more)
- Learn how docker can be used in a github workflow
- Create a real-life CI/CD workflow for code testing, formatting, versioning and more
- Learn how to use semantic versioning to automatically version your code in your workflow
- Upload code testing coverage reports in your workflows using codecov
- Use caching in workflows for faster performace
- Learn about uploading artifacts in workflows
- Create an action for sending slack messages using PHP
- Learn how to publish GitHub actions in the GitHub marketplace.
Let's before writing any code take a look at some theoretical information. We will learn about what events, workflows, jobs, steps, actions, virtual environments and runners in github actions are.
Let's finally create our first workflow and do the simplest thing which can be done in a workflow which is running shell commands. We will also take a look at the actions tab user interface on github which is used to view the worfklow result. This tab will contain all workflows, jobs, steps and logs and it can be very useful when debugging errors that made a job fail.
Running shell commands in our jobs can be very useful. But on the other hand using actions can do a lot more stuff in very few lines of code. Let's see what actions are and use our first simple action in this lecture.
A very common thing that you might need to do when running a workflow on a virtual machine; is using the files in your repository to do something. These can be things like running tests or deploying an application. By default your repository won't get cloned on the virtual machine when you run a workflow. However you can easily do that using the checkout action.
In this lecture we will take a look at the final way which can trigger workflow runs. Using this way we can manually trigger workflows outside of github normal events like push, pull_request, etc... And in order to do that we will use an event called repository_dispatch that can be triggered manually using a POST request.
Now it's time to make sure we correctly understand filtering and patterns. Take a look at this cheat sheet before/while solving this quiz: https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
In Github actions we can write expressions, these expressions can be literals, functions, operations or contexts. In this lecture we will focus on contexts which are objects that contain valuable information about our workflow run.
Now we need to create a release whenever we push to master. And this release will need to have a version number that we need to automatically generate. Let's discuss how can we achieve this using semantic versioning and conventional commits.
Let's have a quick overview on github actions, what they can do, their types and discuss the actions that we are going to create next.
Before creating our slack action using PHP. Let's first create a PHP script that sends a post request to send a slack message.
- You should have basic GitHub knowledge
- Some lectures will require some basic docker knowledge (it's not necessary if you want to skip it)
- for some sections some stuff must be installed on your machine including: nodejs, npm, docker, composer, php.
GitHub recently released "GitHub Actions" , a CI service competitor to services like TravisCI and CircleCI. GitHub Actions however has the edge of being natively integrated with your GitHub repository. In addition to that, thanks to GitHub's popularity; GitHub Actions has the advantage of having large ecosystem and community. Using GitHub Actions you will find a lot of official and community pre-made workflows and also the actions marketplace. In the actions marketplace you can find tons of actions which are reusable pieces of code that you can use in your workflows to perform certain tasks like deploying code, interacting with API's, sending SMS's, etc...
Learn everything you need to know in order to create GitHub workflows & Actions.
In this course we will comprehensively explore GitHub's CI service. We will learn what GitHub workflows & actions are. And we will discover everything we can do in a GitHub workflow including how to run commands, use actions, trigger workflows, build matrices, filter by branch and more. Then we will use what we learned to create a real-world example of a CI/CD workflow where we will test, build, deploy our code and more. And finally we will learn how to write custom actions and publish them on the marketplace so that other people can use it.
Let's take a look at what will be discussed in each section in more detail:
In section 1 we will have a quick conceptual introduction to what workflows, actions, jobs, steps and other terms that we will see are. We will also learn about YAML which is the format used to write workflows in GitHub. Then we will start writing our workflow and take a look at basic things like writing commands, using different shells and using actions including the most common action which is the checkout action.
In section 2 we will get a bit deeper and learn different ways that we can use in order to trigger a workflow to run. This includes GitHub events like push and pull_request, cron schedules and also external events. We will also see how to make a workflow only run for certain branches, tags and directory paths.
In this section we will see how can we use default environment variables and also how to add custom environment variables. We will also see how to encrypt environment variables that are sensitive and also how to encrypt and decrypt sensitive files that we don't won't to push to our repository. Moreover, we will see the GITHUB_TOKEN environment variable and how to use it for authentication. Also we will take a look at the context information that we can access in our workflows which contains a lot of information about our current workflow and virtual machine and more. Finally we will take a look at different functions that are available to use in our workflows.
In section 4 we will see how can we setup matrices, a matrix is a way to run a job multiple times but using different environments. We will also learn how to use docker in our jobs and steps and how to run multiple docker services in our job.
In section 5 we will finally use our knowledge to create a more real-world CI/CD example. We will set-up a repository where we have a web app and we need to have a flow for production and development deployment. So we will have 2 branches, 1 for production and another for development and we will write a workflow for each one of these branches to do certain things. These things will differ depending whether we are pushing on production or development branch. We will also have a workflow that will run if someone opened a pull request. The tasks we will perform includes: installing dependencies, caching, testing, checking code format, uploading artifacts, automatically generating a semantic version, deploying to production/staging, creating releases, opening issues, sending slack notifications and more.
- Developers/Software engineers who need to learn everything about GitHub Workflows & Actions.
- Developers/Software engineers who want to create a CI/CD workflow using GitHub
- Developers/Software engineers who would like to learn how to create and publish GitHub Actions.