Simplest Enterprise Continuous Integration Solutions

Saturday, December 13, 2014

Docker: Practice with Jenkins, Salt

Automate generate Dockerfile within Jenkins pipeline job


# generate Dockerfile
/bin/rm -rf ${WORKSPACE}/docker
/bin/mkdir -p ${WORKSPACE}/docker

cd ${WORKSPACE}/docker
touch Dockerfile

cat <<EOF > Dockerfile
# set the base image to Centos
FROM centos:6.7

# File Author / Maintainer
MAINTAINER buildmaster <buildmaster@qxc.com>

RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

RUN yum install -y salt salt-minion

# udpate salt file_roots, and pillar_roots
RUN echo 'file_roots:' >> /etc/salt/minion
RUN echo '  base:' >> /etc/salt/minion
RUN echo '    - /srv/salt' >> /etc/salt/minion
RUN echo '    - /srv/formulas' >> /etc/salt/minion
RUN echo '  dev:' >> /etc/salt/minion
RUN echo '    - /srv/salt' >> /etc/salt/minion
RUN echo '    - /srv/formulas' >> /etc/salt/minion
RUN echo 'pillar_roots:' >> /etc/salt/minion
RUN echo '  base:' >> /etc/salt/minion
RUN echo '    - /srv/pillar' >> /etc/salt/minion
RUN echo '  dev:' >> /etc/salt/minion
RUN echo '    - /srv/pillar/qa' >> /etc/salt/minion

# use local file_client
RUN echo 'file_client: local' >> /etc/salt/minion

# define Salt role
RUN salt-call grains.setval roles "[${MY_ROLE}]"
EOF

Build docker image, consume with docker container

# build a docker image from Dockerfile
cd ${WORKSPACE}/docker

docker build -t ${DOCKER_IMAGE}.v${PIPELINE_VERSION} .

# add host directory as a data volume (which only works with at least centos6.7)
# invoke salt-call with docker container 
docker run –v salt_scripts:/srv/rw -t ${DOCKER_IMAGE}.v${PIPELINE_VERSION} salt-call --local pillar.items | /usr/bin/tee ${OUTPUT}

# handle return code and clean up successful docker container
CHECK_SH=${WORKSPACE}/${PIPELINE_VERSION}.`date "+%Y%m%d%M%S"`.sh
/bin/echo "#!/bin.sh" > ${CHECK_SH}
/bin/echo "RET_CODE=0" >> ${CHECK_SH}
/bin/echo "/bin/grep -n -i error ${OUTPUT} > ${OUTPUT}.tmp" >> ${CHECK_SH}
/bin/echo "if [ ! -s ${OUTPUT}.tmp ]; then" >> ${CHECK_SH}
/bin/echo "   docker rmi -f ${DOCKER_IMAGE}.v${PIPELINE_VERSION}" >> ${CHECK_SH}
/bin/echo "else" >> ${CHECK_SH}
/bin/echo "   RET_CODE=1" >> ${CHECK_SH}
/bin/echo "fi" >> ${CHECK_SH}
/bin/echo "exit ${RET_CODE}" >> ${CHECK_SH}

/bin/sh ${CHECK_SH}

Saturday, October 11, 2014

JIRA REST API: query JIRA issue summary

Enable JIRA to accept remote API calls:

Enable Accept remote API calls (Administrator > General Configuration > Set Accept remote API calls to On)

Examples for http and https with summary field display

curl -s -u <jira-user>:<jira-password> -X GET -H "Content-Type: application/json" http://<jira-server>:9090/rest/api/2/search?jql=key=<jira-key>&fields=summary


curl -sk -u <jira-user>:<jira-password> -X GET -H "Content-Type: application/json" http://<jira-server>:8443/rest/api/2/search?jql=key=<jira-key>&fields=summary

Saturday, September 13, 2014

Docker: image, repository and registry

Docker Registry (version 1.0)

# OS version, docker engine version

[root@docker-registry-server ~]# uname -a
Linux docker-registry-server 2.6.32-504.16.2.el6.x86_64 #1 SMP Tue Apr 21 08:37:59 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@docker-registry-server ~]# docker -v
Docker version 1.6.2, build 7c8fca2
[root@docker-registry-server ~]# service docker status
docker (pid  1410) is running...


# docker registry IP address

[root@docker-registry-server ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:56:92:6F:78
          inet addr:10.3.22.191  Bcast:10.3.23.255  Mask:255.255.252.0


# docker daemon process with argument

[root@docker-registry-server ~]# ps -ef | grep docker
root      3862     1  0 13:01 pts/2    00:00:00 /usr/bin/docker -d --insecure-registry 10.3.22.191:5000
root      3918  2963  0 13:01 pts/0    00:00:00 docker run -p 5000:5000 registry
root      3956  3862  0 13:01 pts/2    00:00:00 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5000 -container-ip 172.17.0.1 -container-port 5000
root      3968  3862  0 13:01 ?        00:00:00 /usr/bin/python /usr/local/bin/gunicorn --access-logfile - --error-logfile - --max-requests 100 -k gevent --graceful-timeout 3600 -t 3600 -w 4 -b 0.0.0.0:5000 --reload docker_registry.wsgi:application
root      4029  3968  1 13:01 ?        00:00:00 /usr/bin/python /usr/local/bin/gunicorn --access-logfile - --error-logfile - --max-requests 100 -k gevent --graceful-timeout 3600 -t 3600 -w 4 -b 0.0.0.0:5000 --reload docker_registry.wsgi:application
root      4030  3968  1 13:01 ?        00:00:00 /usr/bin/python /usr/local/bin/gunicorn --access-logfile - --error-logfile - --max-requests 100 -k gevent --graceful-timeout 3600 -t 3600 -w 4 -b 0.0.0.0:5000 --reload docker_registry.wsgi:application
root      4031  3968  1 13:01 ?        00:00:00 /usr/bin/python /usr/local/bin/gunicorn --access-logfile - --error-logfile - --max-requests 100 -k gevent --graceful-timeout 3600 -t 3600 -w 4 -b 0.0.0.0:5000 --reload docker_registry.wsgi:application
root      4032  3968  1 13:01 ?        00:00:00 /usr/bin/python /usr/local/bin/gunicorn --access-logfile - --error-logfile - --max-requests 100 -k gevent --graceful-timeout 3600 -t 3600 -w 4 -b 0.0.0.0:5000 --reload docker_registry.wsgi:application
root      4050  2899  0 13:03 pts/2    00:00:00 grep docker


[root@docker-registry-server ~]# curl 10.3.22.191:5000
"\"docker-registry server\""[root@docker-registry-server ~]#

# docker build image myimage-app:v1 from Dockerfile

[root@docker-registry-server ~]# cd /tmp/myimage-app
[root@docker-registry-server myimage-app]# cat Dockerfile
# Set the base image to Centos
FROM centos

# File Author / Maintainer
MAINTAINER BuildMaster <buildmaster@qxc.com>

# install RPM package
RUN rpm -Uvh myiamge-app-package-1.0.0-20140524.noarch.rpm
[root@docker-registry-server myimage-app]# docker build -t myimage-app:v1 .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM centos
---> fd44297e2ddb
Step 1 : MAINTAINER BuildMaster <buildmaster@qxc.com>
---> Using cache
---> 4eb21a2527e9
Step 2 : RUN rpm -Uvh myimage-app-package-1.0.0-20140524.noarch.rpm
---> Running in 701420d2d28a
Retrieving myimage-app-package-1.0.0-20140524.noarch.rpm
Preparing...                          ########################################
Updating / installing...
myimage-app-package-1.0.0-20140524########################################
---> d124c70feeee
Removing intermediate container 701420d2d28a
Successfully built d124c70feeee

[root@docker-registry-server ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
myimage-app            v1                  d124c70feeee        41 seconds ago      226.3 MB
registry            latest              204704ce3137        11 days ago         413.8 MB
jenkins             latest              1520f72eb8b6        3 weeks ago         662 MB
centos              latest              fd44297e2ddb        4 weeks ago         215.7 MB


# docker tag for private docker registry

[root@docker-registry-server ~]# docker tag myimage-app:v1 10.3.22.191:5000/myimage
[root@docker-registry-server ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
myimage-app                v1                  d124c70feeee        2 hours ago         226.3 MB
10.3.22.191:5000/myimage   latest              d124c70feeee        2 hours ago         226.3 MB
registry                latest              204704ce3137        11 days ago         413.8 MB
jenkins                 latest              1520f72eb8b6        3 weeks ago         662 MB
centos                  latest              fd44297e2ddb        4 weeks ago         215.7 MB


# docker push to private docker registry

[root@docker-registry-server ~]# docker push 10.3.22.191:5000/myimage
The push refers to a repository [10.3.22.191:5000/myimage] (len: 1)
Sending image list
Pushing repository 10.3.22.191:5000/myimage (1 tags)
6941bfcbbfca: Image successfully pushed
41459f052977: Image successfully pushed
fd44297e2ddb: Image successfully pushed
4eb21a2527e9: Image successfully pushed
d124c70feeee: Image successfully pushed
Pushing tag for rev [d124c70feeee] on {http://10.3.22.191:5000/v1/repositories/myimage/tags/latest}
[root@docker-registry-server ~]# curl http://10.3.22.191:5000/v1/repositories/myimage/tags/latest
"d124c70feeee098660422e98a515c0eabe20f9f93c6d28a593d294fcf302abb1"[root@docker-registry-server ~]#



Docker client (docker engine version could be previous version)

# OS version, docker engine version

[root@docker-client1 ~]# uname -a
Linux docker-client1 2.6.32-504.el6.x86_64 #1 SMP Tue Oct 14 01:47:47 PDT 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@docker-client1 ~]# docker -v
Docker version 1.5.0, build a8a31ef/1.5.0
[root@docker-client1 ~]# service docker status
docker (pid  27176) is running...


# docker client IP address

[root@docker-client1 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:77:1A:BB
          inet addr:10.3.23.142  Bcast:10.3.23.255  Mask:255.255.252.0


# docker daemon process with arguments

[root@docker-client1 ~]# ps -ef | grep docker
root     27176     1  0 23:18 pts/1    00:00:00 /usr/bin/docker -d --insecure-registry 10.3.22.191:5000
root     27326 27019  0 23:32 pts/1    00:00:00 grep docker

[root@docker-client1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              fd44297e2ddb        4 weeks ago         215.7 MB


# pull an image from remote private docker registry (version 1.0)

[root@docker-client1 ~]# docker pull 10.3.22.191:5000/myimage
Pulling repository 10.3.22.191:5000/myimage
d124c70feeee: Download complete
6941bfcbbfca: Download complete
41459f052977: Download complete
fd44297e2ddb: Download complete
4eb21a2527e9: Download complete
Status: Downloaded newer image for 10.3.22.191:5000/myimage:latest
[root@docker-client1 ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
10.3.22.191:5000/myimage   latest              d124c70feeee        8 hours ago         226.3 MB
centos                  latest              fd44297e2ddb        4 weeks ago         215.7 MB


# check container contents

[root@docker-client1 ~]# docker run -t -i 10.3.22.191:5000/myimage
[root@1f5c3796e479 /]# ls -al /tmp
total 28
drwxrwxrwt  7 root root 4096 May 25 23:34 .
drwxr-xr-x 17 root root 4096 May 25 23:34 ..
drwxrwxrwt  2 root root 4096 Apr 15 14:29 .ICE-unix
drwxrwxrwt  2 root root 4096 Apr 15 14:29 .Test-unix
drwxrwxrwt  2 root root 4096 Apr 15 14:29 .X11-unix
drwxrwxrwt  2 root root 4096 Apr 15 14:29 .XIM-unix
drwxrwxrwt  2 root root 4096 Apr 15 14:29 .font-unix
[root@1f5c3796e479 /]# rpm -qa | grep myimage
DEV-myimage-app-package-1.0.0.37-20150522.noarch
[root@1f5c3796e479 /]# exit
exit


Docker Registry (version 2.0)

# OS version, docker engine version

[root@docker-registry-server ~]# uname -a
Linux docker-registry-server 2.6.32-504.16.2.el6.x86_64 #1 SMP Tue Apr 21 08:37:59 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@docker-registry-server ~]# docker -v
Docker version 1.6.2, build 7c8fca2
[root@docker-registry-server ~]# service docker status
docker (pid  3862) is running...


# docker daemon process and argument

[root@docker-registry-server ~]# ps -ef | grep docker
root      3862     1  7 13:01 pts/2    00:01:44 /usr/bin/docker -d --insecure-registry 10.3.22.191:5000
root      4217  2963  0 13:16 pts/0    00:00:00 docker run -p 5000:5000 registry:2.0 
root      4625  3862  0 13:17 pts/2    00:00:00 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5000 -container-ip 172.17.0.2 -container-port 5000
root      5111  2899  0 13:23 pts/2    00:00:00 grep docker

[root@docker-registry-server ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
10.3.22.191:5000/myimage   latest              d124c70feeee        2 hours ago         226.3 MB
myimage-app                v1                  d124c70feeee        2 hours ago         226.3 MB
registry                2.0                 0ff65644861b        11 days ago         548.5 MB
registry                latest              204704ce3137        11 days ago         413.8 MB
jenkins                 latest              1520f72eb8b6        3 weeks ago         662 MB
centos                  latest              fd44297e2ddb        4 weeks ago         215.7 MB


# create a new image on a docker container

[root@docker-registry-server ~]# docker run -t -i myimage-app:v1
[root@4d0a41299372 /]# touch /tmp/aaa
[root@4d0a41299372 /]# exit
exit


# commit an image

[root@docker-registry-server ~]# docker commit -m "myimage:v2" 4d0a41299372 myimage:v2
1545e9605745217b70d0201b3768c8d364b7f5aa599525b9336d133bff2b6284
[root@docker-registry-server ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
myimage                    v2                  1545e9605745        15 seconds ago      226.3 MB
myimage-app                v1                  d124c70feeee        2 hours ago         226.3 MB
10.3.22.191:5000/myimage   latest              d124c70feeee        2 hours ago         226.3 MB
registry                2.0                 0ff65644861b        11 days ago         548.5 MB
registry                latest              204704ce3137        11 days ago         413.8 MB
jenkins                 latest              1520f72eb8b6        3 weeks ago         662 MB
centos                  latest              fd44297e2ddb        4 weeks ago         215.7 MB


# docker tag for private docker registry

[root@docker-registry-server ~]# docker tag -f myimage:v2 10.3.22.191:5000/myimage
[root@docker-registry-server ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
10.3.22.191:5000/myimage   latest              1545e9605745        About a minute ago   226.3 MB
myimage                    v2                  1545e9605745        About a minute ago   226.3 MB
myimage-app                v1                  d124c70feeee        2 hours ago          226.3 MB
registry                2.0                 0ff65644861b        11 days ago          548.5 MB
registry                latest              204704ce3137        11 days ago          413.8 MB
jenkins                 latest              1520f72eb8b6        3 weeks ago          662 MB
centos                  latest              fd44297e2ddb        4 weeks ago          215.7 MB


# docker push to private docker registry

[root@docker-registry-server ~]# docker push 10.3.22.191:5000/myimage
The push refers to a repository [10.3.22.191:5000/myimage] (len: 1)
1545e9605745: Image already exists
d124c70feeee: Image successfully pushed
4eb21a2527e9: Image successfully pushed
fd44297e2ddb: Image successfully pushed
41459f052977: Image successfully pushed
6941bfcbbfca: Image successfully pushed
Digest: sha256:57d2e2ba8e4bef77ce22f922d126b2c4ace4bc882950609cfa75edd2a70d75af 
[root@docker-registry-server ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
myimage                    v2                  1545e9605745        3 minutes ago       226.3 MB
10.3.22.191:5000/myimage   latest              1545e9605745        3 minutes ago       226.3 MB
myimage-app                v1                  d124c70feeee        2 hours ago         226.3 MB
registry                2.0                 0ff65644861b        11 days ago         548.5 MB
registry                latest              204704ce3137        11 days ago         413.8 MB
jenkins                 latest              1520f72eb8b6        3 weeks ago         662 MB
centos                  latest              fd44297e2ddb        4 weeks ago         215.7 MB



Docker client (docker 1.6 for Docker Registry 2.0)

# OS version, docker engine version

[root@docker-client2 ~]# uname -a
Linux docker-client2 2.6.32-504.16.2.el6.x86_64 #1 SMP Tue Apr 21 08:37:59 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@docker-client2 ~]# docker -v
Docker version 1.6.2, build 7c8fca2
[root@docker-client2 ~]# service docker status
docker (pid  3024) is running...


# docker client IP address

[root@docker-client2 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:21:45:93
          inet addr:10.3.23.160  Bcast:10.3.23.255  Mask:255.255.252.0


# docker daemon with argument

[root@docker-client2 ~]# ps -ef | grep docker
root      3024     1  0 May24 ?        00:00:10 /usr/bin/docker -d --insecure-registry 10.3.22.191:5000
root      7548  7445  0 19:51 pts/1    00:00:00 grep docker

[root@docker-client2 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              fd44297e2ddb        4 weeks ago         215.7 MB


# docker pull an image from remote private docker registry (version 2.0) server

[root@docker-client2 ~]# docker pull 10.3.22.191:5000/myimage
latest: Pulling from 10.3.22.191:5000/myimage

4eb21a2527e9: Pull complete
d124c70feeee: Pull complete
1545e9605745: Already exists
6941bfcbbfca: Already exists
41459f052977: Already exists
fd44297e2ddb: Already exists
Digest: sha256:57d2e2ba8e4bef77ce22f922d126b2c4ace4bc882950609cfa75edd2a70d75af
Status: Downloaded newer image for 10.3.22.191:5000/myimage:latest
[root@docker-client2 ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
10.3.22.191:5000/myimage   latest              1545e9605745        6 hours ago         226.3 MB
centos                  latest              fd44297e2ddb        4 weeks ago         215.7 MB


# check container content

[root@docker-client2 ~]# docker run -t -i 10.3.22.191:5000/myimage
[root@fc25630ffe07 /]# ls -al /tmp
total 28
drwxrwxrwt  7 root root 4096 May 25 23:53 .
drwxr-xr-x 17 root root 4096 May 25 23:53 ..
drwxrwxrwt  2 root root 4096 Apr 15 14:29 .ICE-unix
drwxrwxrwt  2 root root 4096 Apr 15 14:29 .Test-unix
drwxrwxrwt  2 root root 4096 Apr 15 14:29 .X11-unix
drwxrwxrwt  2 root root 4096 Apr 15 14:29 .XIM-unix
drwxrwxrwt  2 root root 4096 Apr 15 14:29 .font-unix
-rw-r--r--  1 root root    0 May 25 17:19 aaa
[root@fc25630ffe07 /]# exit
exit

Saturday, August 16, 2014

Enterprise Linux: Subversion Edge updates

Subversion Edge comes with auto-update mechanism, which will alert the new release. Here are the Subversion Edge updates from 2.3.0 to 4.0.11.








Saturday, May 3, 2014

Bamboo security: Bamboo 5 5.0 Tomcat with SSL

Bamboo 5.5.0 runs on HTTP looks like




Configure Bamboo 5.5.0 runs over HTTPS

# Login as root on Bamboo Linux server.

[root@linux64-bamboo-server ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

# su to bamboo running user

[root@linux64-bamboo-server ~]# su - bamboo

# Change dir to bamboo install directory

[root@linux64-bamboo-server ~]$ cd /opt/atlassian-bamboo-5.5.0

# Generate a private key

[bamboo@linux64-bamboo-server atlassian-bamboo-5.5.0]$ $JAVA_HOME/bin/keytool -genkey -keyalg RSA -alias tomcat
Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  linux64-bamboo-server.domain.com
What is the name of your organizational unit?
  [Unknown]:  <my unit>
What is the name of your organization?
  [Unknown]:  <my organization>
What is the name of your City or Locality?
  [Unknown]:  <my city>
What is the name of your State or Province?
  [Unknown]:  <my state>
What is the two-letter country code for this unit?
  [Unknown]:  <my country>
Is CN=linux64-bamboo-server.domain.com, OU=<my unit>, O=<my organization>., L=<my city>, ST=<my state>, C=<my country> correct?
  [no]:  y

Enter key password for <tomcat>
        (RETURN if same as keystore password):

# Generate a CSR (Certificate Signing Request)

[bamboo@linux64-bamboo-server atlassian-bamboo-5.5.0]$ $JAVA_HOME/bin/keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr
Enter keystore password:

# Submit certreq.csr to a certificate authority

Submit the generated certreq.csr to a Certificate Authority (for example, MY-ENTCASERVER) with “Web Server” Certificate template and download certificate chain (DER encoded or Base 64 encoded), save it as bamboo550_Base64.p7b.

# Import signed certificate into keystore

[bamboo@linux64-bamboo-server atlassian-bamboo-5.5.0]$ $JAVA_HOME/bin/keytool -import -alias tomcat -file bamboo550_Der.p7b –keystore ~/.keystore

# Modify server.xml as below accordingly

[root@mtl-nvc-emea08 atlassian-bamboo-5.5.0]# diff -u /opt/atlassian-bamboo-5.5.0/conf/server.xml.orig /opt/atlassian-bamboo-5.5.0/conf/server.xml
--- /opt/atlassian-bamboo-5.5.0/conf/server.xml.orig    2014-08-29 12:05:04.000000000 -0400
+++ /opt/atlassian-bamboo-5.5.0/conf/server.xml 2014-08-29 12:24:14.000000000 -0400
@@ -61,7 +61,6 @@
                    redirectPort="8443"
                    acceptCount="100"
                    disableUploadTimeout="true"/>
-
         <!--
         ====================================================================================

@@ -127,5 +126,20 @@
                    pattern="%a %t &quot;%m %U%q %H&quot; %s %b %D &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot;"/>

         </Engine>
+<Connector port="8443"
+    maxHttpHeaderSize="8192"
+    SSLEnabled="true"
+        maxThreads="150"
+    minSpareThreads="25"
+    maxSpareThreads="75"
+        enableLookups="false"
+    disableUploadTimeout="true"
+    useBodyEncodingForURI="true"
+        acceptCount="100"
+    scheme="https"
+    secure="true"
+        clientAuth="false"
+  sslProtocol="TLS"
+  keystoreFile="/home/bamboo/.keystore" />
     </Service>
 </Server>

# Restart bamboo service

# Secutiry Bamboo 5.5.0 with Tomcat SSL runs over HTTPS looks like

# Bamboo signed own SSL certificate looks like


Saturday, January 4, 2014

Enterprise Linux: Oracle Linux in-place upgrade

Oracle Linux in-place upgrade from 6u3 to 6u5

# check installed OEL6.3 Red Hat compatible kernel

[root@oel6u3 ~]# uname -a
Linux oel6u3 2.6.32-279.el6.x86_64 #1 SMP Thu Jun 21 15:00:18 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
[root@oel6u3 ~]# cat /etc/Red Hat-release
Red Hat Enterprise Linux Server release 6.3 (Santiago)

# updated public yum repo to enable public_ol6_latest for OEL6.5

[root@oel6u5 ~]# cat /etc/yum.repos.d/public-yum-ol6.repo
[public_ol6_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
enabled=1

# execute yum update

[root@oel6u5 ~]# yum clean all
[root@oel6u5 ~]# yum check-update
[root@oel6u5 ~]# yum update -y

# reboot OS after executed yum update to get the OEL6.5 Red Hat compatible kernel

[root@oel6u5 ~]# reboot

# upgraded to OEL6.5 Red Hat compatible kernel

[root@oel6u5 ~]# uname -a
Linux oel6u5 2.6.32-431.23.3.el6.x86_64 #1 SMP Tue Jul 29 09:20:28 PDT 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@oel6u5 ~]# cat /etc/Red Hat-release

Red Hat Enterprise Linux Server release 6.5 (Santiago)