This commit is contained in:
92
Jenkinsfile
vendored
Normal file
92
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
pipeline {
|
||||||
|
agent {
|
||||||
|
kubernetes {
|
||||||
|
yaml """
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: docker-builder
|
||||||
|
spec:
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: hub-auth
|
||||||
|
containers:
|
||||||
|
- name: docker-client
|
||||||
|
image: harbor.ingress.lab.gitfitlive.com/mirror/docker:latest
|
||||||
|
command: ['cat']
|
||||||
|
tty: true
|
||||||
|
env:
|
||||||
|
- name: DOCKER_HOST
|
||||||
|
value: tcp://localhost:2376
|
||||||
|
- name: DOCKER_TLS_CERTDIR
|
||||||
|
value: "/certs"
|
||||||
|
- name: DOCKER_CERT_PATH
|
||||||
|
value: "/certs/client"
|
||||||
|
- name: DOCKER_TLS_VERIFY
|
||||||
|
value: "1"
|
||||||
|
volumeMounts:
|
||||||
|
- name: docker-certs
|
||||||
|
mountPath: /certs
|
||||||
|
readOnly: true
|
||||||
|
- name: docker-dind
|
||||||
|
image: harbor.ingress.lab.gitfitlive.com/mirror/docker:dind
|
||||||
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
env:
|
||||||
|
- name: DOCKER_TLS_CERTDIR
|
||||||
|
value: "/certs"
|
||||||
|
volumeMounts:
|
||||||
|
- name: docker-certs
|
||||||
|
mountPath: /certs
|
||||||
|
volumes:
|
||||||
|
- name: docker-certs
|
||||||
|
emptyDir: {}
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
environment {
|
||||||
|
HARBOR = 'harbor.ingress.lab.gitfitlive.com'
|
||||||
|
CONTAINER_NAME = 'harbor.ingress.lab.gitfitlive.com/oasis/resume:latest'
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Docker Build') {
|
||||||
|
steps {
|
||||||
|
container('docker-client') {
|
||||||
|
script {
|
||||||
|
echo "等待 Docker 服务就绪..."
|
||||||
|
retry(30) {
|
||||||
|
sleep 3
|
||||||
|
sh """
|
||||||
|
if ! docker info > /dev/null 2>&1; then
|
||||||
|
echo "Docker 守护进程未就绪,等待 10 秒..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
|
||||||
|
withCredentials([
|
||||||
|
usernamePassword(
|
||||||
|
credentialsId: 'harbor-credentials',
|
||||||
|
usernameVariable: 'HARBOR_USERNAME',
|
||||||
|
passwordVariable: 'HARBOR_PASSWORD'
|
||||||
|
)
|
||||||
|
]) {
|
||||||
|
sh """
|
||||||
|
docker login -u "\$HARBOR_USERNAME" -p "\$HARBOR_PASSWORD" https://harbor.ingress.lab.gitfitlive.com
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Packing the docker image..."
|
||||||
|
sh """
|
||||||
|
docker build -t $CONTAINER_NAME .
|
||||||
|
docker push $CONTAINER_NAME
|
||||||
|
"""
|
||||||
|
echo "Packing the docker image complete."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user