mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-20 06:45:50 +00:00
Create CI-CD file for openshift
This commit is contained in:
parent
272075d113
commit
35b1277fa6
1 changed files with 99 additions and 0 deletions
99
.github/workflows/CI-CD file for openshift
vendored
Normal file
99
.github/workflows/CI-CD file for openshift
vendored
Normal file
|
@ -0,0 +1,99 @@
|
|||
name: CI/CD for PROD Environment
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- demo
|
||||
|
||||
env:
|
||||
ENV: "prod"
|
||||
APP_NAME: petclinic-app
|
||||
APP_IMAGE_NAME: petclinic-app
|
||||
APP_IMAGE_TAG: latest
|
||||
REPOSITORY_URL: "https://github.com/mohitkumar1313/spring-petclinic.git"
|
||||
REPOSITORY_NAME: "spring-petclinic"
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||
CONTAINER_REGISTRY_PULL_SECRET: ${{ secrets.QUAY_DOCKER_CONFIG_JSON_PULL_SECRET}}
|
||||
CONTAINER_REGISTRY: ${{ secrets.CONTAINER_REGISTRY}} # use "docker.io" for docker hub
|
||||
OPENSHIFT_SERVER: ${{ secrets.OPENSHIFT_SERVER }}
|
||||
OPENSHIFT_TOKEN: ${{ secrets.OPENSHIFT_TOKEN }}
|
||||
OPENSHIFT_NAMESPACE: ${{ secrets.OPENSHIFT_NAMESPACE }}
|
||||
|
||||
jobs:
|
||||
build-release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'adopt'
|
||||
cache: maven
|
||||
|
||||
- name: Build with Maven Wrapper
|
||||
run: ./mvnw clean package -DskipTests
|
||||
|
||||
- name: Determine image tags (If not yet present)
|
||||
if: env.APP_IMAGE_TAG == ''
|
||||
run: |
|
||||
echo "APP_IMAGE_TAG=prod" >> $GITHUB_ENV
|
||||
|
||||
- name: Build container image
|
||||
run: docker build -t ${{ env.CONTAINER_REGISTRY }}/${{ env.DOCKER_USERNAME }}/${{ env.APP_IMAGE_NAME }}:$(echo $GITHUB_SHA | head -c7) .
|
||||
|
||||
- name: Docker Login
|
||||
run: docker login -u ${{ env.DOCKER_USERNAME }} -p ${{ env.DOCKER_PASSWORD }} ${{ env.CONTAINER_REGISTRY }}
|
||||
|
||||
- name: Push image to DockerHub
|
||||
run: docker push ${{ env.CONTAINER_REGISTRY }}/${{ env.DOCKER_USERNAME }}/${{ env.APP_IMAGE_NAME }}:$(echo $GITHUB_SHA | head -c7)
|
||||
|
||||
deploy-to-prod:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build-release]
|
||||
environment:
|
||||
name: prod-openshift
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Docker Login
|
||||
run: docker login -u ${{ env.DOCKER_USERNAME }} -p ${{ env.DOCKER_PASSWORD }} ${{ env.CONTAINER_REGISTRY }}
|
||||
|
||||
- name: Promote current release-image as prod
|
||||
run: |
|
||||
docker pull ${{ env.CONTAINER_REGISTRY }}/${{ env.DOCKER_USERNAME }}/${{ env.APP_IMAGE_NAME }}:$(echo $GITHUB_SHA | head -c7)
|
||||
docker image tag ${{ env.CONTAINER_REGISTRY }}/${{ env.DOCKER_USERNAME }}/${{ env.APP_IMAGE_NAME }}:$(echo $GITHUB_SHA | head -c7) \
|
||||
${{ env.CONTAINER_REGISTRY }}/${{ env.DOCKER_USERNAME }}/${{ env.APP_IMAGE_NAME }}:latest
|
||||
docker push ${{ env.CONTAINER_REGISTRY }}/${{ env.DOCKER_USERNAME }}/${{ env.APP_IMAGE_NAME }}:latest
|
||||
|
||||
- name: Login to OpenShift - ${{ env.OPENSHIFT_NAMESPACE }}
|
||||
uses: redhat-actions/oc-login@v1
|
||||
with:
|
||||
openshift_server_url: ${{ env.OPENSHIFT_SERVER }}
|
||||
openshift_token: ${{ env.OPENSHIFT_TOKEN }}
|
||||
namespace: ${{ env.OPENSHIFT_NAMESPACE }}
|
||||
insecure_skip_tls_verify: true
|
||||
|
||||
- name: Update ImageStream latest Tag to point to new latest image in Container Registry
|
||||
run: |
|
||||
oc project ${{ env.OPENSHIFT_NAMESPACE }}
|
||||
oc tag ${{ env.CONTAINER_REGISTRY }}/${{ env.DOCKER_USERNAME }}/${{ env.APP_IMAGE_NAME }}:latest ${{ env.APP_IMAGE_NAME }}:latest
|
||||
|
||||
- name: Deploy to OpenShift - Status Check
|
||||
run: |
|
||||
oc project ${{ env.OPENSHIFT_NAMESPACE }}
|
||||
oc rollout status dc/${{ env.APP_NAME }}
|
||||
|
||||
- name: Get OpenShift Route name
|
||||
run: echo ::set-output name=route_name::$(oc get route ${{ env.APP_NAME }} -o jsonpath='{.spec.host}')
|
||||
id: openshift_route_name
|
||||
|
||||
- name: Add a comment to PR
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
with:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
body: |
|
||||
New Version of the PetClinic Web Application has been deployed on OpenShift, here is the link to the application endpoint: http://${{ steps.openshift_route_name.outputs.route_name}}
|
||||
reactions: rocket
|
Loading…
Reference in a new issue