1. Jenkinsfile 配置示例
ci:jenkins, cd:gitops, image repository:harbor
environment {
K8S_CONFIG = credentials('jenkins-k8s-config')
GIT_TAG = "1.0.0-SNAPSHOT"
}
parameters {
string(name: 'HARBOR_HOST', defaultValue: '<harbor_host>', description: 'harbor 仓库地址')
string(name: 'DOCKER_IMAGE', defaultValue: '<image_repo>', description: 'docker 镜像名')
string(name: 'APP_NAME', defaultValue: '<app_name>', description: 'k8s 中标签名')
string(name: 'K8S_NAMESPACE', defaultValue: 'dev', description: 'k8s 的 namespace 名称')
}
def label = "jenkins2-jenkins-slave"
podTemplate(label: label, cloud: 'kubernetes') {
node ('jenkins2-jenkins-slave'){
stage('maven build'){
container('jnlp') {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitsshkey', url: '<git_server>']]])
sh "docker login <harbor_host> -u admin -p <password>"
sh 'mvn clean package -Dfile.encoding=UTF-8 -DskipTests=true'
}
}
}
}
2. Jenkins Slave 使用自定义镜像
镜像地址:<harbor_host>/<image>/jnlp-slave:1.0.0
3. jnlp-slave:1.0.0 Dockerfile
FROM jenkins/jnlp-slave:3.27-1
USER root
RUN apt-get update && apt-get -y install maven
ADD config.json /root/.docker/
ADD config /root/.kube/
ADD kubectl /usr/bin/kubectl
RUN chmod 777 /usr/bin/kubectl
ENTRYPOINT ["jenkins-slave"]
4. Jenkins 部署方式
将 /var/jenkins_home 挂载到 PVC,采用 Helm 方式部署。
5. GitOps 部署方式
采用 Helm 方式部署 Flux。

