.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/gitlab-java-demo
mvn_build_job:
image: maven:3.6-jdk-8-alpine
stage: package
script:
- echo $CI_PROJECT_URL
- echo $CI_PIPELINE_ID
- mvn clean package -DskipTests
- cp target/demo.war /opt/cache
docker_build_job:
image: docker:latest
stage: docker_build
script:
- docker login -uadmin -pHarbor12345 registry.caicongyang.com
- cp /opt/cache/demo.war ./demo.war
- docker build -t registry.caicongyang.com/my1233-s2b-trading/gitlab-java-demo:$CI_PIPELINE_ID .
- docker push registry.caicongyang.com/my1233-s2b-trading/gitlab-java-demo:$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 tomcat:latest
ADD ./demo.war /usr/local/tomcat/webapps/demo.war
Update deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: java-demo
spec:
replicas: 1
selector:
matchLabels:
app: java-demo
template:
metadata:
labels:
app: java-demo
spec:
containers:
- name: java-demo
image: registry.caicongyang.com/my1233-s2b-trading/gitlab-java-demo:IMAGE_TAG
imagePullPolicy: Always
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: java-demo
spec:
ports:
- port: 38080
targetPort: 8080
name: java-demo
selector:
app: java-demo
type: ClusterIP