.gitlab-ci.yml
image: docker:stable
stages:
- package
- docker_build
- deploy_k8s
variables:
KUBECONFIG: /etc/deploy/config
MAVEN_OPTS: "-Dmaven.repo.local=/opt/cache/.m2/repository"
CI_SERVER_URL: https://gitlab.caicongyang.com
CI_PROJECT_URL: https://gitlab.caicongyang.com/s2b-trading/gradle-spring
gradle_build_job:
image: openjdk:8
stage: package
script:
- echo $CI_PROJECT_URL
- echo $CI_PIPELINE_ID
- ./gradlew build
- cp build/libs/app.jar /opt/cache
docker_build_job:
image: docker:latest
stage: docker_build
script:
- docker login -uadmin -pHarbor12345 registry.caicongyang.cn
- mkdir -p build/libs/
- cp /opt/cache/app.jar build/libs/
- docker build -t registry.caicongyang.cn/my1233-s2b-trading/gradle-spring:$CI_PIPELINE_ID .
- docker push registry.caicongyang.cn/my1233-s2b-trading/gradle-spring:$CI_PIPELINE_ID
deploy_k8s_job:
image: registry.cn-hangzhou.aliyuncs.com/haoshuwei24/kubectl:1.16.6
stage: deploy_k8s
script:
- mkdir -p /etc/deploy
- echo $kube_config |base64 -d > $KUBECONFIG
- sed -i "s/IMAGE_TAG/$CI_PIPELINE_ID/g" deployment.yaml
- cat deployment.yaml
- kubectl apply -f deployment.yaml
Dockerfile
FROM openjdk:8-jdk
COPY build/libs/app.jar /app.jar
CMD exec java $JAVA_OPTS -jar /app.jar
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: gradle-spring
spec:
replicas: 1
selector:
matchLabels:
app: gradle-spring
template:
metadata:
labels:
app: gradle-spring
spec:
containers:
- name: gradle-spring
image: registry.caicongyang.com/my1233-s2b-trading/gradle-spring:IMAGE_TAG
imagePullPolicy: Always
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: gradle-spring
spec:
ports:
- port: 38080
targetPort: 8080
name: gradle-spring
selector:
app: gradle-spring
type: NodePort