diff --git a/Jenkinsfile b/Jenkinsfile index b82d758..0bb7937 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -12,6 +12,16 @@ pipeline { stages { + stage ('Pre Actions-Build Started') { + steps { + slackSend ( + color: '#F7A200' , + message: "Hey, your CI/CD trigger has *Started* \n*Trigger: * `${env.JOB_NAME}` #${env.BUILD_NUMBER}\n\n*GitHub: * ${GIT_BRANCH} >> <${GIT_URL}|Open Github>" + ) + } + } + + stage('Kaniko Build & Push Image') { steps { container('kaniko') { @@ -19,7 +29,7 @@ pipeline { sh ''' /kaniko/executor --dockerfile `pwd`/Dockerfile \ --context `pwd` \ - --destination=justmeandopensource/myweb:${BUILD_NUMBER} + --destination=private.nexus.cams7.ml/myweb:${BUILD_NUMBER} ''' } } @@ -30,8 +40,8 @@ pipeline { steps { container('kubectl') { withCredentials([file(credentialsId: 'mykubeconfig', variable: 'KUBECONFIG')]) { - sh 'sed -i "s//${BUILD_NUMBER}/" myweb.yaml' - sh 'kubectl apply -f myweb.yaml' + sh 'sed -i "s//${BUILD_NUMBER}/" yamls/myweb.yaml' + sh 'kubectl apply -n demo210827 -f yamls/myweb.yaml' } } } diff --git a/docker-config.json b/docker-config.json new file mode 100644 index 0000000..7f7fb9f --- /dev/null +++ b/docker-config.json @@ -0,0 +1,10 @@ +{ + "auths": { + "private.nexus.cams7.ml": { + "auth": "YWRtaW46YWJjMTIzNDU=" + }, + "public.nexus.cams7.ml": { + "auth": "YWRtaW46YWJjMTIzNDU=" + } + } +} diff --git a/index.html b/index.html index 4ccd9f8..963997f 100644 --- a/index.html +++ b/index.html @@ -1,6 +1,6 @@
-

Welcome to Just Me and OpenSource

-

v2.0

+

Welcome to MyWeb app

+

v1.0.4



Demo of Jenkins CI/CD Pipeline in Kubernetes 2021

diff --git a/myweb.yaml b/myweb.yaml deleted file mode 100644 index 95bd58b..0000000 --- a/myweb.yaml +++ /dev/null @@ -1,46 +0,0 @@ ---- -apiVersion: v1 -kind: Namespace -metadata: - name: pipeline-demo - ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: myweb - name: myweb - namespace: pipeline-demo -spec: - replicas: 1 - selector: - matchLabels: - app: myweb - template: - metadata: - labels: - app: myweb - spec: - containers: - - image: justmeandopensource/myweb: - imagePullPolicy: Always - name: myweb - ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: myweb - name: myweb - namespace: pipeline-demo -spec: - ports: - - nodePort: 32223 - port: 80 - protocol: TCP - targetPort: 80 - selector: - app: myweb - type: NodePort diff --git a/tlsroute.yaml b/tlsroute.yaml new file mode 100644 index 0000000..4fd136e --- /dev/null +++ b/tlsroute.yaml @@ -0,0 +1,45 @@ +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: jenkins-redirect-scheme + namespace: jenkins +spec: + redirectScheme: + scheme: https + permanent: true + port: "443" +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: jenkins-http + namespace: jenkins +spec: + entryPoints: + - web + routes: + - match: Host(`jenkins.cams7.ml`) + kind: Rule + middlewares: + - name: jenkins-redirect-scheme + services: + - name: jenkins + port: 8080 +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: jenkins-https + namespace: jenkins +spec: + entryPoints: + - websecure + routes: + - match: Host(`jenkins.cams7.ml`) + kind: Rule + services: + - name: jenkins + port: 8080 + tls: + secretName: jenkins.cams7.ml diff --git a/yamls/myweb.yaml b/yamls/myweb.yaml new file mode 100644 index 0000000..a3be3f8 --- /dev/null +++ b/yamls/myweb.yaml @@ -0,0 +1,90 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: myweb + name: myweb +spec: + replicas: 3 + selector: + matchLabels: + app: myweb + template: + metadata: + labels: + app: myweb + spec: + containers: + - image: public.nexus.cams7.ml/myweb: + imagePullPolicy: Always + name: myweb +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: myweb + name: myweb +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 80 + selector: + app: myweb + type: ClusterIP +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: myweb-redirect-scheme +spec: + redirectScheme: + scheme: https + permanent: true + port: "443" +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: myweb-strip-path-prefix +spec: + stripPrefix: + prefixes: + - /myweb +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: myweb-http +spec: + entryPoints: + - web + routes: + - match: Host(`dev.cams7.ml`) + kind: Rule + middlewares: + - name: myweb-redirect-scheme + services: + - name: myweb + port: 80 +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: myweb-https +spec: + entryPoints: + - websecure + routes: + - match: Host(`dev.cams7.ml`) && PathPrefix(`/myweb`) + kind: Rule + middlewares: + - name: myweb-strip-path-prefix + services: + - name: myweb + port: 80 + tls: + secretName: dev.cams7.ml \ No newline at end of file