diff --git a/Jenkinsfile b/Jenkinsfile index e108176e..a3663fd3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,9 +14,9 @@ pipeline { GITLAB_CREDENTIAL_ID = 'gitlab-id' KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig' REDISTRY = 'harbor.devops.kubesphere.local:30280' - NAMESPACE = 'library' + HARBOR_NAMESPACE = 'library' GITLAB_ACCOUNT = 'admin1' - APP_NAME = 'devops-sample-s2i' + APP_NAME = 'devops-java-sample' SONAR_CREDENTIAL_ID= 'sonar-token' } @@ -54,10 +54,10 @@ pipeline { steps { container ('maven') { sh 'mvn -o -Dmaven.test.skip=true -gs `pwd`/configuration/settings.xml clean package' - sh 'docker build -t $REDISTRY/$NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER .' + sh 'docker build -t $REDISTRY/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER .' withCredentials([usernamePassword(passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,credentialsId : "$HARBOR_CREDENTIAL_ID" ,)]) { sh 'echo "$DOCKER_PASSWORD" | docker login $REDISTRY -u "$DOCKER_USERNAME" --password-stdin' - sh 'docker push $REDISTRY/$NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER' + sh 'docker push $REDISTRY/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER' } } } @@ -69,8 +69,8 @@ pipeline { } steps{ container ('maven') { - sh 'docker tag $REDISTRY/$NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REDISTRY/$NAMESPACE/$APP_NAME:latest ' - sh 'docker push $REDISTRY/$NAMESPACE/$APP_NAME:latest ' + sh 'docker tag $REDISTRY/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REDISTRY/$HARBOR_NAMESPACE/$APP_NAME:latest ' + sh 'docker push $REDISTRY/$HARBOR_NAMESPACE/$APP_NAME:latest ' } } } @@ -97,10 +97,10 @@ pipeline { sh 'git config --global user.email "kubesphere@yunify.com" ' sh 'git config --global user.name "kubesphere" ' sh 'git tag -a $TAG_NAME -m "$TAG_NAME" ' - sh 'git push http://$GIT_USERNAME:$GIT_PASSWORD@gitlab.devops.kubesphere.local:30080/$GITLAB_ACCOUNT/devops-sample-s2i.git --tags' + sh 'git push http://$GIT_USERNAME:$GIT_PASSWORD@gitlab.devops.kubesphere.local:30080/$GITLAB_ACCOUNT/devops-java-sample.git --tags' } - sh 'docker tag $REDISTRY/$NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REDISTRY/$NAMESPACE/$APP_NAME:$TAG_NAME ' - sh 'docker push $REDISTRY/$NAMESPACE/$APP_NAME:$TAG_NAME ' + sh 'docker tag $REDISTRY/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REDISTRY/$HARBOR_NAMESPACE/$APP_NAME:$TAG_NAME ' + sh 'docker push $REDISTRY/$HARBOR_NAMESPACE/$APP_NAME:$TAG_NAME ' } } } diff --git a/Jenkinsfile-online b/Jenkinsfile-online index d13d093a..aa03b3d8 100644 --- a/Jenkinsfile-online +++ b/Jenkinsfile-online @@ -14,9 +14,9 @@ pipeline { GITHUB_CREDENTIAL_ID = 'github-id' KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig' REDISTRY = 'docker.io' - NAMESPACE = 'docker_username' + DOCKERHUB_NAMESPACE = 'docker_username' GITHUB_ACCOUNT = 'kubesphere' - APP_NAME = 'devops-sample-s2i' + APP_NAME = 'devops-java-sample' SONAR_CREDENTIAL_ID= 'sonar-token' } @@ -54,10 +54,10 @@ pipeline { steps { container ('maven') { sh 'mvn -o -Dmaven.test.skip=true -gs `pwd`/configuration/settings.xml clean package' - sh 'docker build -f Dockerfile-online -t $REDISTRY/$NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER .' + sh 'docker build -f Dockerfile-online -t $REDISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER .' withCredentials([usernamePassword(passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,credentialsId : "$DOCKER_CREDENTIAL_ID" ,)]) { sh 'echo "$DOCKER_PASSWORD" | docker login $REDISTRY -u "$DOCKER_USERNAME" --password-stdin' - sh 'docker push $REDISTRY/$NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER' + sh 'docker push $REDISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER' } } } @@ -69,8 +69,8 @@ pipeline { } steps{ container ('maven') { - sh 'docker tag $REDISTRY/$NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REDISTRY/$NAMESPACE/$APP_NAME:latest ' - sh 'docker push $REDISTRY/$NAMESPACE/$APP_NAME:latest ' + sh 'docker tag $REDISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REDISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:latest ' + sh 'docker push $REDISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:latest ' } } } @@ -81,7 +81,7 @@ pipeline { } steps { input(id: 'deploy-to-dev', message: 'deploy to dev?') - kubernetesDeploy(configs: 'deploy/dev/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID") + kubernetesDeploy(configs: 'deploy/dev-ol/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID") } } stage('push with tag'){ @@ -97,10 +97,10 @@ pipeline { sh 'git config --global user.email "kubesphere@yunify.com" ' sh 'git config --global user.name "kubesphere" ' sh 'git tag -a $TAG_NAME -m "$TAG_NAME" ' - sh 'git push http://$GIT_USERNAME:$GIT_PASSWORD@github.com/$GITHUB_ACCOUNT/devops-sample-s2i.git --tags' + sh 'git push http://$GIT_USERNAME:$GIT_PASSWORD@github.com/$GITHUB_ACCOUNT/devops-java-sample.git --tags' } - sh 'docker tag $REDISTRY/$NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REDISTRY/$NAMESPACE/$APP_NAME:$TAG_NAME ' - sh 'docker push $REDISTRY/$NAMESPACE/$APP_NAME:$TAG_NAME ' + sh 'docker tag $REDISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REDISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME ' + sh 'docker push $REDISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME ' } } } @@ -112,7 +112,7 @@ pipeline { } steps { input(id: 'deploy-to-production', message: 'deploy to production?') - kubernetesDeploy(configs: 'deploy/prod/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID") + kubernetesDeploy(configs: 'deploy/prod-ol/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID") } } } diff --git a/deploy/dev-ol/devops-sample-svc.yaml b/deploy/dev-ol/devops-sample-svc.yaml new file mode 100644 index 00000000..24fff6f3 --- /dev/null +++ b/deploy/dev-ol/devops-sample-svc.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: kubesphere + component: ks-sample-dev + name: ks-sample-dev + namespace: kubesphere-sample-dev +spec: + ports: + - name: http + port: 8080 + protocol: TCP + targetPort: 8080 + nodePort: 30861 + selector: + app: kubesphere + component: ks-sample-dev + tier: backend + sessionAffinity: None + type: NodePort \ No newline at end of file diff --git a/deploy/dev-ol/devops-sample.yaml b/deploy/dev-ol/devops-sample.yaml new file mode 100644 index 00000000..3c2fce9f --- /dev/null +++ b/deploy/dev-ol/devops-sample.yaml @@ -0,0 +1,52 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: kubesphere + component: ks-sample-dev + tier: backend + name: ks-sample-dev + namespace: kubesphere-sample-dev +spec: + progressDeadlineSeconds: 600 + replicas: 1 + selector: + matchLabels: + app: kubesphere + component: ks-sample-dev + tier: backend + template: + metadata: + labels: + app: kubesphere + component: ks-sample-dev + tier: backend + spec: + containers: + - env: + - name: CACHE_IGNORE + value: js|html + - name: CACHE_PUBLIC_EXPIRATION + value: 3d + image: $REDISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER + readinessProbe: + httpGet: + path: / + port: 8080 + imagePullPolicy: Always + name: ks-sample + ports: + - containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: 200m + memory: 500Mi + requests: + cpu: 100m + memory: 100Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + terminationGracePeriodSeconds: 30 \ No newline at end of file diff --git a/deploy/dev/devops-sample.yaml b/deploy/dev/devops-sample.yaml index 55ccbfc2..0a59e257 100644 --- a/deploy/dev/devops-sample.yaml +++ b/deploy/dev/devops-sample.yaml @@ -28,7 +28,11 @@ spec: value: js|html - name: CACHE_PUBLIC_EXPIRATION value: 3d - image: $REDISTRY/$NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER + image: $REDISTRY/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER + readinessProbe: + httpGet: + path: / + port: 8080 imagePullPolicy: Always name: ks-sample ports: diff --git a/deploy/prod-ol/devops-sample-svc.yaml b/deploy/prod-ol/devops-sample-svc.yaml new file mode 100644 index 00000000..6211066c --- /dev/null +++ b/deploy/prod-ol/devops-sample-svc.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: kubesphere + component: ks-sample + name: ks-sample + namespace: kubesphere-sample-prod +spec: + ports: + - name: http + port: 8080 + protocol: TCP + targetPort: 8080 + nodePort: 30961 + selector: + app: kubesphere + component: ks-sample + tier: backend + sessionAffinity: None + type: NodePort \ No newline at end of file diff --git a/deploy/prod-ol/devops-sample.yaml b/deploy/prod-ol/devops-sample.yaml new file mode 100644 index 00000000..76a1c81b --- /dev/null +++ b/deploy/prod-ol/devops-sample.yaml @@ -0,0 +1,57 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + app: kubesphere + component: ks-sample + tier: backend + name: ks-sample + namespace: kubesphere-sample-prod +spec: + progressDeadlineSeconds: 600 + replicas: 2 + selector: + matchLabels: + app: kubesphere + component: ks-sample + tier: backend + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: kubesphere + component: ks-sample + tier: backend + spec: + containers: + - env: + - name: CACHE_IGNORE + value: js|html + - name: CACHE_PUBLIC_EXPIRATION + value: 3d + image: $REDISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME + readinessProbe: + httpGet: + path: / + port: 8080 + imagePullPolicy: Always + name: ks + ports: + - containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: 200m + memory: 500Mi + requests: + cpu: 100m + memory: 100Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + terminationGracePeriodSeconds: 30 \ No newline at end of file diff --git a/deploy/prod/devops-sample.yaml b/deploy/prod/devops-sample.yaml index 2cd6ee12..f0584f1f 100644 --- a/deploy/prod/devops-sample.yaml +++ b/deploy/prod/devops-sample.yaml @@ -33,7 +33,11 @@ spec: value: js|html - name: CACHE_PUBLIC_EXPIRATION value: 3d - image: $REDISTRY/$NAMESPACE/$APP_NAME:$TAG_NAME + image: $REDISTRY/$HARBOR_NAMESPACE/$APP_NAME:$TAG_NAME + readinessProbe: + httpGet: + path: / + port: 8080 imagePullPolicy: Always name: ks ports: