目录

gitlab安装

harbor安装

jenkins安装

应用

gitlab安装

docker-compose.yaml

version: '3.6'
services:
  web:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: '192.168.31.88'
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.31.88:30080' # web站点访问地址
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '30080:30080' # 注意宿主机和容器内部的端口要一致,否则external_url无法访问
      - '30443:443'
      - '30022:22'
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'
    shm_size: '256m'
​

harbor安装

离线下载harbor-offline-installer-v2.5.6.tgz

hostname改为本机hostname或者本机IP,把http的端口改为自己想要映射的端口, 去掉https

cp harbor.yml.tmpl harbor.yml
​
# vim harbor.yml
hostname: 192.168.31.88
​
# http related config
http:
  port: 9000
​
# 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

bash install.sh开始安装,账号/密码:admin/Harbor12345

修改/etc/docker/daemon.json文件,添加下面一行:

{
        "registry-mirrors": ["https://hub-mirror.c.163.com/"],
        "insecure-registries": ["192.168.31.88:9000"],
        "features": {
                "buildkit": true
        }
}

重启容器

systemctl daemon-reload

systemctl restart docker

jenkins安装

docker-compose.yml

version: '3.6'
services: 
  jenkins: 
    image: jenkins/jenkins:latest
    container_name: jenkins
    restart: always
    ports: 
      - "18080:8080"
      - "50000:50000"
    volumes: 
      - ./data:/var/jenkins_home # jenkins:latest 的home目录,包括插件和配置等等
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /etc/docker/daemon.json:/etc/docker/daemon.json
​

credentials

pluginManager

 

应用

 

Dockerfile文件

FROM maven:3.8.4-openjdk-17 as maven_build
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN --mount=type=cache,target=/root/.m2 mvn clean package  -Dmaven.test.skip
​
FROM openjdk:17-alpine
COPY --from=maven_build /app/target/*.jar app.jar
ENV PORT 8080
EXPOSE $PORT
ENTRYPOINT ["java","-jar","/app.jar"]

Jenkinsfile文件

pipeline {
  agent any
  environment {
    APP_NAME = "demo"
    DOCKER_REGISTRY_URL = "http://192.168.31.88:9000"
    DOCKER_REGISTRY_PROJECT = "zliang"
    DOCKER_IMAGE_NAME = "${DOCKER_REGISTRY_PROJECT}/${APP_NAME}:${env.BUILD_ID}"
  }
  stages {
    stage('Build & Push docker image') {
      steps {
        script {
          def image = docker.build("${DOCKER_IMAGE_NAME}")
          docker.withRegistry("${DOCKER_REGISTRY_URL}", "harbor") {
            image.push()
          }
        }
      }
    }
    stage('Deliver for development') {
      when {
        expression { params.TARGET == 'dev' }
      }
      steps {
        script {
          withCredentials([usernamePassword(credentialsId: 'my-dev-host', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
            deploy(params.TARGET, "192.168.31.88", USERNAME, PASSWORD)
          }
        }
      }
    }
​
  }
}
​
def deploy(target, host, user, password) {
  def remote = [:]
  remote.name = "ZLiang-PC"
  remote.host = host
  remote.user = user
  remote.password = password
  remote.allowAnyHosts = true
  remote.pty = true
  sshPut remote: remote, from: "./jenkins/scripts/deliver-for-${APP_NAME}-${target}.sh", into: '.'
  sshCommand remote: remote, command: "chmod +x ./deliver-for-${APP_NAME}-${target}.sh", sudo: true
  sshCommand remote: remote, command: "bash -c './deliver-for-${APP_NAME}-${target}.sh ${env.BUILD_ID}'"
}

deliver-for-demo-dev.sh

#!/bin/bash
​
APP_NAME="demo"
DOCKER_REGISTRY_URL="192.168.31.88:9000"
DOCKER_REGISTRY_PROJECT="zliang"
DOCKER_IMAGE_NAME="${DOCKER_REGISTRY_URL}/${DOCKER_REGISTRY_PROJECT}/${APP_NAME}:$1"
​
if docker inspect ${APP_NAME} >/dev/null 2>&1; then
    docker stop ${APP_NAME}
    docker rm ${APP_NAME}
fi
​
docker rmi "${DOCKER_IMAGE_NAME}"
docker pull "${DOCKER_IMAGE_NAME}"
docker run -idt --restart always --name ${APP_NAME} -p 9090:8080 "${DOCKER_IMAGE_NAME}"

Jenkins配置 

 

 

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐