Sunday, February 28, 2021

Git log - commit history

Here is the GitOps story! we started learning more depth of every GIT commit history using git CLI. In this post, we have touched some rea-time scenario-based question and answers with practical examples which are useful for other DevOps team members. 

The best question to help release management - who worked on the critical program/script which is in the release process? This can be found using the git log command. 

git log



The most interesting story if someone left the company and need to know what he did in his last commit. Tracking changes all of them done by that particular user. 

The git log having many options:
  1. sorting
  2. filtering
  3. output formatting

Let's see in detail by with experimenting each with an example.

How to get the git log in a "Sorting order"?

Here we have a couple of sorted commit history commands. 

Using the --pretty value with Oneline to going to give you the log output in simplify format.
git log --pretty=oneline
  
The output combination of COMMIT_ID COMMIT_MESSAGE | Branch level changes

How to do Filtering while getting the git-log output?

To filter out we can use different options
  1. author - User name of the commit made by
  2. date ranges - We have date options with --before and --after where date can be given in "YYYY-MM-DD" format
  3. regular-expressions - Linux grep like option --grep that takes any text patter to filter 
  4. path - file or directory path can be used to narrow down your log filtering


Find the commit history of a user

Here we have an option to get all changes made by a person/author. If you want to see all commits made by yourself then you can replace the "AUTHOR NAME" with your git user. name what you have configured. 
git log --author="AUTHOR NAME"

For example: Find all code changes done by user "Rajasekhar"

Find History in range of dates

You have a choice of selecting range of date before and after dates.
git log --before="date1" --after="date2"

For example: Find all commits between 19th Feb to 26th Feb 2021

Date range logs



Commit History with a regular expression

Git commit history can be extracted with the regular expression that matches to the word or pattern that matches the existing commit messages.
git log --grep="PATTERN"
For example, find all the 'commit's having an "adding" pattern.

git log with grep



 

Commit history of a given path

We can use the current work-tree contained in any one of the folders as the path to check the history of that particular directory.
git log -- [PATH]
Example for finding the git log history of file of folder as shown below:

git log -- . # current folder
git log -- WebLogic/samples # specific directory history
git log -- README.md # specific file history  
git commit history of givven path
what is happening in this directory?


Knowing about a particular code file we can use -- then the filename.
For example; 

git history of a file
Commit History of a file

What happened since the date?


Changes from a particular "date" onwards we can get using --since option.


git log --since="YEAR-MM-DD"

For example, find all change that happen since 22-Feb-2021

git commit changes from date
Since date onwards commit changes

In most of the real scenarios we need to know the files which are changed recently. This git-log command with the oneline option and abbreviated commit id helps us to have a simple view

git log --pretty=oneline --abbrev-commit  

git log command with --abbrev-commit to short commit-id output


You can use this for more combinations as per your project requirements To get all oneliner logs with short commit id and filtered with specific author changes:
git log --pretty=oneline --abbrev-commit --author "Bhavani" 
To get all oneline logs with short commit id for all changes made for "WebLogic" pattern matched in the commit messages.
git log --pretty=oneline --abbrev-commit --grep "WebLogic" 
Further learning post:

Please write your comments we will workout accordingly and respond to each message within 3 days.


Saturday, February 20, 2021

Git install latest version on Oracle Linux

 Hey! In this post I would like to discuss about git installation on Oracle Linux. By default git from the yum repo version is older 1.8.2. To get used of the latest features of git needs to install the latest version of git. Currently, the git version is 2.30.1. But this experiment will be same further as well.



Step 1: Navigate to a path where the git installer needs to download.

cd /opt
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.30.1.tar.gz

#remove the default git version from yum repo
yum remove git -y

# extract the git tarball
tar -zxf git-2.30.1.tar.gz
cd git-2.30.1

Step 2: The prerequisites for git installation is as:

# prerequisites
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y
yum install gcc perl-ExtUtils-MakeMaker -y
Step 3: Install the git version
# installing latest version of git 
make prefix=/usr/local/git all
make prefix=/usr/local/git install
Step 4: Now all set, we need to have the latest git installed directory in the PATH. setting up the PATH for all users on the Machine
# set the global path
echo "export PATH=/usr/local/git/bin:$PATH" >> /etc/bashrc
source /etc/bashrc

git --version
Step 5: After confirmation of the latest version in the PATH. Clean up the installer and extracted folder from /opt directory.
# clean up
cd /opt; rm -rf git-2.30.1 git-2.30.1.tar.gz

Noq id you mix all the above snippets to form an automation script, the name of the script would be "gitinstlal.sh" and the content goes here:
#!/bin/bash
# Install Git latest version on RHEL flavours
# Download this script or use git clone then run regular shell script execution
# ./gitinstall.sh
# Created: 20-Feb-2021
# 

VER=2.30.1
# prerequisites
echo "Install dependencies"
yum install -y wget \
curl-devel expat-devel gettext-devel openssl-devel zlib-devel \
gcc perl-ExtUtils-MakeMaker
cd /opt
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-${VER}.tar.gz

echo "Check git installed version after dependencies installed..."
git --version
if [ $? -eq 0 ]; 
then
    #remove the default git version from yum repo
    echo "Removal of old version of git"
    yum remove git -y
fi

# extract the git tarball
echo "Extracting git installer"
tar -zxf git-${VER}.tar.gz
cd git-${VER}

# installing latest version of git 
echo "Compile and install git latest version"
make prefix=/usr/local/git all
make prefix=/usr/local/git install

# set the global path
echo "Adding to PATH"
echo "export PATH=/usr/local/git/bin:$PATH" >> /etc/bashrc
source /etc/bashrc
 
git --version | grep ${VER}
[ $? -eq 0 ] && echo "Git installed latest version successfully"

# clean up
echo "Clean up the git installer stuff"
cd /opt; rm -rf git-${VER} git-${VER}.tar.gz

Friday, February 12, 2021

Publishing to Docker hub your own Docker Images

 Hey DevOps Engineer, In this post I would like to share my experiment on Docker image creation and pushing to the public repository. Docker Hub is the world's easiest way to create, manage, and deliver your images with the teams who are working for microservices applications that runs on containers.

Docker Hub allows you to pull docker images that are built by other community members, organizations on the Hub. 

Docker Hub is a cloud-based registry service that allows you to link to code repositories, build your images and test them, store manually pushed images, and links to Docker Cloud so you can deploy images to your docker hosts.

Publishing to Docker Hub
Publishing custom Image to Docker Hub


Steps to publish the image

Please use the following steps:

  1. Register with Docker Hub
  2. Login to docker hub from your Docker Host 
  3. Commit and Pushing to Docker Hub registry
  4. Docker tag
Create an account/ Docker ID. If you have already then signed into it.

Login into the docker hub from the docker host 
 
  docker login 

docker login



Create your customization inside the container and commit as an image using else use Dockerfile create a fresh image.

 docker pull oraclelinux:8-slim
docker run -dit --name c1 oraclelinux:8-slim
docker exec -it c1 bash
mkdir custom-dir
 echo "echo Welcome to BhavaniShekhar Oracle Linux Image" >~/.bashrc
exit
docker ps

Customizae your container




Push the image to hub



 docker commit -a BhavaniShekhar -m "Custom OL 8-slim" c1 bhavanishekhar07/myol:8-slim
 docker images
docker push



Docker Hub repository showing your custom image 

Docker Hub published image
Docker Hub published Image


Test the published image



Conclusion

Docker custom image created from the container, pushed to your docker repository as public and can be pulled from any Docker Host 

Please write your commants/Suggstions on the above post!

Categories

Kubernetes (24) Docker (20) git (13) Jenkins (12) AWS (7) Jenkins CI (5) Vagrant (5) K8s (4) VirtualBox (4) CentOS7 (3) docker registry (3) docker-ee (3) ucp (3) Jenkins Automation (2) Jenkins Master Slave (2) Jenkins Project (2) containers (2) create deployment (2) docker EE (2) docker private registry (2) dockers (2) dtr (2) kubeadm (2) kubectl (2) kubelet (2) openssl (2) Alert Manager CLI (1) AlertManager (1) Apache Maven (1) Best DevOps interview questions (1) CentOS (1) Container as a Service (1) DevOps Interview Questions (1) Docker 19 CE on Ubuntu 19.04 (1) Docker Tutorial (1) Docker UCP (1) Docker installation on Ubunutu (1) Docker interview questions (1) Docker on PowerShell (1) Docker on Windows (1) Docker version (1) Docker-ee installation on CentOS (1) DockerHub (1) Features of DTR (1) Fedora (1) Freestyle Project (1) Git Install on CentOS (1) Git Install on Oracle Linux (1) Git Install on RHEL (1) Git Source based installation (1) Git line ending setup (1) Git migration (1) Grafana on Windows (1) Install DTR (1) Install Docker on Windows Server (1) Install Maven on CentOS (1) Issues (1) Jenkins CI server on AWS instance (1) Jenkins First Job (1) Jenkins Installation on CentOS7 (1) Jenkins Master (1) Jenkins automatic build (1) Jenkins installation on Ubuntu 18.04 (1) Jenkins integration with GitHub server (1) Jenkins on AWS Ubuntu (1) Kubernetes Cluster provisioning (1) Kubernetes interview questions (1) Kuberntes Installation (1) Maven (1) Maven installation on Unix (1) Operations interview Questions (1) Oracle Linux (1) Personal access tokens on GitHub (1) Problem in Docker (1) Prometheus (1) Prometheus CLI (1) RHEL (1) SCM (1) SCM Poll (1) SRE interview questions (1) Troubleshooting (1) Uninstall Git (1) Uninstall Git on CentOS7 (1) Universal Control Plane (1) Vagrantfile (1) amtool (1) aws IAM Role (1) aws policy (1) caas (1) chef installation (1) create organization on UCP (1) create team on UCP (1) docker CE (1) docker UCP console (1) docker command line (1) docker commands (1) docker community edition (1) docker container (1) docker editions (1) docker enterprise edition (1) docker enterprise edition deep dive (1) docker for windows (1) docker hub (1) docker installation (1) docker node (1) docker releases (1) docker secure registry (1) docker service (1) docker swarm init (1) docker swarm join (1) docker trusted registry (1) elasticBeanStalk (1) global configurations (1) helm installation issue (1) mvn (1) namespaces (1) promtool (1) service creation (1) slack (1)