KEMBAR78
GITHUB_ACTIONS_CICD_OVERVIEW_FOR_BEGINNERS | PPTX
GITHUB Actions?
■ It helps to automate the Software development workflows.
■ There might be multiple work flows like CI/CD is one of them.
■ One workflow will be set of jobs, and jobs contain steps or action to be performed.
Example of one common
workflow :
Public repo —> Contributor added
some code in last release —>
found minor big —> Try to
reproduce and assign it to one of
the contributor —> review Raised
MR against fix —> if not
reproducible merge with master —
> Prepare the release notes and
update the new release version.
To Track all these activity manually it would be tedious task and also tough to maintain so we can
maintain this using GitHub Actions.
If something happens in the repo that we can consider as event and create automatic actions against
those event that is nothing but known as GitHub Actions.
Note
 GITHUB Action act against GIT Events, Events might be anything like
Merge request
Create MR,
Raised Issue or any short of activity
 Now what possible actions we might have against above events?
1. we can sort the issues based on priority or date
2. We can put labels on the tickets
3. We can assign some of the unassigned tickets to the dev.
4. We can try to reproduce the issue once it logged or after fixes
 All these actions instead of performing manually we can do automatically with the
help if GitHub Actions[ ss attached in next slide]
I hope now you guys got some understanding of GIT HUB actions so let's explore the syntax and process for
one of the GIT HUB Actions named --> CI/CD
CI/CD:
It stands for Continuous Integration and Continuous Deployment.
The most common stages of CI/CD are mentioned in the diagram.
as soon as any commit happens in the code base unit test case
execution gets started. post that will create a build and push that to repo,
known as continuous delivery. Finally we pick that build and deploy to the
server that is known as Continuous Deployment.
Note:
There are multiple tools we need to integrate for each phase of CI/CD to complete work flow and
instead of installing all those manually GITHUB actions provide facility to manage all these
automatically that is the biggest advantage of the git hub actions.
How to choose the git hub actions based on the project requirement?
1. you have to clone your company project
2. Access the git hub repo and go to the actions option shown in ss
 You will get multiple suggested actions which you can configure with your project.
Since I am using java gradle project I will use java with gradle GitHub Action
 Once will click on configure we will get this kind of template
name: Java CI with Gradle
on:
push:
branches: [ "testerszone/sep2024" ]
pull_request:
branches: [ "testerszone/sep2024" ]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
Syntax Explanation:
■ name: Java CI with Gradle —> This is Optional field defines name of the workflow.
■ on: This is required field where we mention the events which triggers the workflow.
e.g.
if we want to define action for the push request against master branch then we need to create event for push
request like this
push:
branches: [ master ]
■ Note:
to explore more about the type of events you can visit this
link:
https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-wo
rkflows#about-events-that-trigger-workflows
■ jobs: it groups set of actions. We can have multiple job under jobs tag and each job will be having its name.
e.g. if there is build job then we can define like this
jobs:
build:
■ Steps: It can run commands, set up tasks or run an action
■ Uses: it selects predefine code for an action hosted under path actions/
to check the pre-defined action you can visit this link: https://github.com/actions
Syntax Explanation:
■ runs-on: we can define OS where work flow will execute, it might be window Mac or
ubuntu.
If we want to execute on more than one OS that also can be managed easily with
below snippet of code
runs-on: ${{matrix.os}}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
 How does execution look like?
Once we push the commit to the specified branch [I used master] then action will
trigger and can observe like mentioned in the ss.
After Execution?
This page will appear once you will click on the details link shown in the previous ss.
It will describe the status of steps mentioned In the jobs.
Note: If we have dependency on of running job on another job then it should be in sequence but for
that we have to mention in the code like below:
jobs:
build1:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
build2:
needs: build1
It says build 2 will execute after build 1.
Now we are able to build artifact file now we can create docker image and push it to our
private repo. Let’s see how we can do this
Pre-requisite: We can explore the docker build and push action from here :
https://github.com/mr-smithers-excellent/docker-build-push
Sample snippet of code copied from above link:
uses: mr-smithers-excellent/docker-build-push@v6
with:
image: docker-hub-repo/image-name
registry: docker.io
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
Note:
we are using docker hub as docker registry, we have multiple registry like mentioned below and we can get
specific snippet of code based on selected registry from above mentioned link:
• Docker Hub
• Google Container Registry (GCR)
• AWS Elastic Container Registry (ECR)
• GitHub Docker Registry
How to create secret in the GITHUB ?
Note:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
Secrets we can set in git hub for our credential it’s like storing values in variable and call that variable where
ever we want
you can keep your user name and password directly here that also will work.
Docker Image creation
Now you can push the commit and check the actions you will get the summary like this
Check the image in your docker hub repo:
You can validate the image name with GIT HUB action logs also as mentioned in the next ss.
That's it?
Yes, it's simple right?
we are able to complete the basic CI/CD set up for few of the git hub events Using
GITHUB action.
GITHUB_ACTIONS_CICD_OVERVIEW_FOR_BEGINNERS

GITHUB_ACTIONS_CICD_OVERVIEW_FOR_BEGINNERS

  • 2.
    GITHUB Actions? ■ Ithelps to automate the Software development workflows. ■ There might be multiple work flows like CI/CD is one of them. ■ One workflow will be set of jobs, and jobs contain steps or action to be performed.
  • 3.
    Example of onecommon workflow : Public repo —> Contributor added some code in last release —> found minor big —> Try to reproduce and assign it to one of the contributor —> review Raised MR against fix —> if not reproducible merge with master — > Prepare the release notes and update the new release version. To Track all these activity manually it would be tedious task and also tough to maintain so we can maintain this using GitHub Actions. If something happens in the repo that we can consider as event and create automatic actions against those event that is nothing but known as GitHub Actions.
  • 4.
    Note  GITHUB Actionact against GIT Events, Events might be anything like Merge request Create MR, Raised Issue or any short of activity  Now what possible actions we might have against above events? 1. we can sort the issues based on priority or date 2. We can put labels on the tickets 3. We can assign some of the unassigned tickets to the dev. 4. We can try to reproduce the issue once it logged or after fixes  All these actions instead of performing manually we can do automatically with the help if GitHub Actions[ ss attached in next slide]
  • 6.
    I hope nowyou guys got some understanding of GIT HUB actions so let's explore the syntax and process for one of the GIT HUB Actions named --> CI/CD
  • 7.
    CI/CD: It stands forContinuous Integration and Continuous Deployment. The most common stages of CI/CD are mentioned in the diagram. as soon as any commit happens in the code base unit test case execution gets started. post that will create a build and push that to repo, known as continuous delivery. Finally we pick that build and deploy to the server that is known as Continuous Deployment.
  • 8.
    Note: There are multipletools we need to integrate for each phase of CI/CD to complete work flow and instead of installing all those manually GITHUB actions provide facility to manage all these automatically that is the biggest advantage of the git hub actions.
  • 9.
    How to choosethe git hub actions based on the project requirement? 1. you have to clone your company project 2. Access the git hub repo and go to the actions option shown in ss
  • 10.
     You willget multiple suggested actions which you can configure with your project. Since I am using java gradle project I will use java with gradle GitHub Action
  • 11.
     Once willclick on configure we will get this kind of template name: Java CI with Gradle on: push: branches: [ "testerszone/sep2024" ] pull_request: branches: [ "testerszone/sep2024" ] jobs: build: runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin'
  • 12.
    Syntax Explanation: ■ name:Java CI with Gradle —> This is Optional field defines name of the workflow. ■ on: This is required field where we mention the events which triggers the workflow. e.g. if we want to define action for the push request against master branch then we need to create event for push request like this push: branches: [ master ] ■ Note: to explore more about the type of events you can visit this link: https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-wo rkflows#about-events-that-trigger-workflows ■ jobs: it groups set of actions. We can have multiple job under jobs tag and each job will be having its name. e.g. if there is build job then we can define like this jobs: build: ■ Steps: It can run commands, set up tasks or run an action ■ Uses: it selects predefine code for an action hosted under path actions/ to check the pre-defined action you can visit this link: https://github.com/actions
  • 13.
    Syntax Explanation: ■ runs-on:we can define OS where work flow will execute, it might be window Mac or ubuntu. If we want to execute on more than one OS that also can be managed easily with below snippet of code runs-on: ${{matrix.os}} strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest]
  • 14.
     How doesexecution look like? Once we push the commit to the specified branch [I used master] then action will trigger and can observe like mentioned in the ss.
  • 15.
    After Execution? This pagewill appear once you will click on the details link shown in the previous ss. It will describe the status of steps mentioned In the jobs.
  • 16.
    Note: If wehave dependency on of running job on another job then it should be in sequence but for that we have to mention in the code like below: jobs: build1: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' build2: needs: build1 It says build 2 will execute after build 1.
  • 17.
    Now we areable to build artifact file now we can create docker image and push it to our private repo. Let’s see how we can do this
  • 18.
    Pre-requisite: We canexplore the docker build and push action from here : https://github.com/mr-smithers-excellent/docker-build-push Sample snippet of code copied from above link: uses: mr-smithers-excellent/docker-build-push@v6 with: image: docker-hub-repo/image-name registry: docker.io username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} Note: we are using docker hub as docker registry, we have multiple registry like mentioned below and we can get specific snippet of code based on selected registry from above mentioned link: • Docker Hub • Google Container Registry (GCR) • AWS Elastic Container Registry (ECR) • GitHub Docker Registry
  • 19.
    How to createsecret in the GITHUB ? Note: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} Secrets we can set in git hub for our credential it’s like storing values in variable and call that variable where ever we want you can keep your user name and password directly here that also will work.
  • 20.
    Docker Image creation Nowyou can push the commit and check the actions you will get the summary like this
  • 21.
    Check the imagein your docker hub repo: You can validate the image name with GIT HUB action logs also as mentioned in the next ss.
  • 23.
    That's it? Yes, it'ssimple right? we are able to complete the basic CI/CD set up for few of the git hub events Using GITHUB action.