Harbor-[安装部署|CI流水线集成]
Harbor安装部署配置
安装docker-compose
参考文档:Docker-compose
## 解压 tar zxf harbor-online-installer-v1.10.4.tgz cd harbor ## 编辑配置文件 vim harbor.yml ---- ### 修改主机名,注释https hostname: 192.168.1.200 # http related config http: # port for http, default is 80. If https enabled, this port will redirect to https port port: 80 # https related config #https: # https port for harbor, default is 443 # port: 443 # The path of cert and key files for nginx #certificate: /your/certificate/path #private_key: /your/private/key/path ---- ## 安装 sh install.sh [Step 4]: starting Harbor ... Creating network "harbor_harbor" with the default driver Creating harbor-log ... done Creating registry ... done Creating harbor-portal ... done Creating registryctl ... done Creating redis ... done Creating harbor-db ... done Creating harbor-core ... done Creating nginx ... done Creating harbor-jobservice ... done ✔ ----Harbor has been installed and started successfully.----
修改默认端口号
harbor.yml
- port: 8080[固定]
docker-compose.yml
- ports:
- 8088:8080[固定]
创建镜像仓库
镜像上传
systemctl stop docker [root@jeekins harbor]# cat /etc/docker/daemon.json { "storage-driver": "overlay2", "insecure-registries": ["192.168.1.110:8088"], "registry-mirrors": ["https://fooyh53n.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "live-restore": true } systemctl daemo-reload systemctl restart docker
[root@jenkins harbor]# docker login 192.168.1.110:8088 Username: admin Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
docker tag goharbor/nginx-photon:v2.2.4 192.168.1.110:8088/hwf-app/nginx-photon:v2.2.4 docker push 192.168.1.110:8088/hwf-app/nginx-photon:v2.2.4
在仓库中查看
镜像下载
docker pull 192.168.1.200:8088/devops03/devops03-maven-service:1.9.1
CI流水线集成
jenkinsfile
@Library("hwf@main") _
import hwf.devops.* // 导入库
def checkout = new Checkout()
def build = new Build()
pipeline {
agent { label "build" }
stages{
stage("Checkout"){
steps{
script {
println("GetCode")
checkout.GetCode("${env.srcUrl}", "${env.branchName}")
}
}
}
stage("Build"){
steps{
script{
println("Build")
env.prository='hwf-app'
env.imagename='nginx'
build.CodeBuild("${env.buildTool}")
}
}
}
}
}
Checkout.groovy
package hwf.devops //下载代码 def GetCode(srcUrl, branchName){ checkout([$class: 'GitSCM', branches: [[name: branchName]], extensions: [], userRemoteConfigs: [[ credentialsId: '6ac312c6-9282-42ec-89a3-680356304ea2', url: srcUrl]]]) }
Build.groovy
package hwf.devops //DockerBuild def DockerBuild(){ withCredentials([usernamePassword(credentialsId: 'efbe2a21-1c7b-4738-8be2-d8775907bb4d', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) { sh """ pwd ls -l #登录镜像仓库 docker login -u "${USER}" -p "${TOKEN}" 192.168.1.110:8088 # 构建镜像 docker build -t 192.168.1.110:8088/${env.prository}/${env.imagename}:${env.tagName} . # 上传镜像 docker push 192.168.1.110:8088/${env.prository}/${env.imagename}:${env.tagName} # 删除镜像 sleep 2 docker rmi 192.168.1.110:8088/${env.prository}/${env.imagename}:${env.tagName} """ } } //Maven def MavenBuild(){ def buildTools = ["maven": "/data/apache-maven-3.8.3"] sh "${buildTools["maven"]}/bin/mvn clean package -DskipTests -f demo/pom.xml \ -s settings.xml" } //Gradle def GradleBuild(){ def buildTools = ["gradle": "/data/gradle-7.2"] sh "${buildTools["gradle"]}/bin/gradle clean && ${buildTools["gradle"]}/bin/gradle build -x test" } //Ant def AntBuild(configPath="./build.xml"){ sh "ant -f ${configPath}" } //Golang def GoBuild(){ def buildTools = ["go": "/data/go" ] sh "${buildTools["go"]}/bin/go build demo.go" } //Npm def NpmBuild(){ def buildTools = ["npm": "/data/node-v14.18.0-linux-x64" ] sh """ export PATH=\$PATH:${buildTools["npm"]}/bin ${buildTools["npm"]}/bin/npm install ${buildTools["npm"]}/bin/npm run build """ } //Yarn def YarnBuild(){ sh "yarn install && yarn build " } //Main def CodeBuild(type){ switch(type){ case "harbor": DockerBuild() break; case "maven": MavenBuild() break; case "gradle": GradleBuild() break; case "npm": NpmBuild() break; case "yarn": YarnBuild() break; default: error "No such tools ... [maven/ant/gradle/npm/yarn/go]" break } }
继续阅读

我的微信
这是我的微信扫一扫
评论