apiVersion: opswagon.xbc.io/v1
kind: JenkinsPlugin
metadata:
name: docker-build-production
spec:
name: docker-build-production
title: docker镜像构建上传
sub_title: docker镜像构建上传
icon: icon-jingxiang1
params:
- name: username
place_holder: $dbp-username$
- name: password
place_holder: $dbp-password$
- name: isOnline
place_holder: $dbp-isOnline$
- name: docker_repository
place_holder: $dbp-docker_repository$
- name: docker_tag
place_holder: $dbp-docker_tag$
- name: docker_file_path
place_holder: $dbp-docker_file_path$
- name: context_path
place_holder: $dbp-context_path$
- name: source
place_holder: $$source[.(\w)+]$$
- name: branch
place_holder: $dbp-branch$
output:
- name: displayName
place_holder: $db-out-displayName$
- name: type
place_holder: $db-out-type$
- name: identifier
place_holder: $db-out-identifier$
- name: description
place_holder: $db-out-description$
- name: jobIdentifier
place_holder: $db-out-jobIdentifier$
- name: name
place_holder: $db-out-name$
code: |
stage('$plugin-name$') {
steps {
container('docker') {
script {
def context_path = '$dbp-context_path$'
if (context_path == '') {
context_path = '.'
}
def file_path = '$dbp-docker_file_path$'
if ($dbp-isOnline$) {
def now = new Date()
file_path = './Dockerfile-'+now.time
def the_cmd = "echo '$dbp-docker_file_path$' > #file_path#"
the_cmd = the_cmd.replaceAll('file_path', file_path)
sh the_cmd
}
def base_cmd = '''
docker build -t $dbp-docker_repository$:$dbp-docker_tag$ #file_path# #context_path# && \
docker push $dbp-docker_repository$:$dbp-docker_tag$ && \
docker rmi $dbp-docker_repository$:$dbp-docker_tag$
'''
if ('$dbp-username$' != '') {
def addr = '$dbp-docker_repository$'.split('/')[0]
def login_cmd = 'docker login #addr# -u $dbp-username$ -p $dbp-password$ && \'
login_cmd = login_cmd.replaceAll('#addr#', addr)
base_cmd = base_cmd + login_cmd
}
base_cmd = base_cmd.replaceAll('#file_path#', file_path)
base_cmd = base_cmd.replaceAll('#context_path#', context_path)
sh base_cmd
}
}
}
}
container: docker
这个会报error converting YAML to JSON: yaml: line 28: mapping values are not allowed in this context,但是K8s是能够解析这个yaml文件的,但是golang读的时候读不出来……