环境说明

本例使用 docker-compose 进行。 假设你已经安装 docker 以及 docker-compose 的最新版,并使用的是 linux 服务器。

下载 gitea 及 jenkins 镜像

docker pull gitea/gitea:1.16.4
docker pull jenkinsci/blueocean

编写 compose

采用分别为 gitea 和 jenkins 编写 docker-compose.yml 文件的形式。

gitea 的 docker-compose.yml 内容:

version: "3"

networks:
  gitea:
    external: false
volumes:
  gitea:
    driver: local
services:
  server:
    image: gitea/gitea:1.16.4
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"

jenkins 的 docker-compose.yml 内容:

version: "3"

networks:
  jenkins:
    external: false
volumes:
  jenkins:
    driver: local
services:
  server:
    #image: jenkins/jenkins:alpine-jdk11
    image: jenkinsci/blueocean
    container_name: jenkins
    # privileged 是对docker服务进行特殊授权
    privileged: true
    # 使用root用户
    user: root
    restart: always
    networks:
      - jenkins
    volumes:
      # 将jenkins的系统文件映射到宿主机的卷
      - ~/docker_homes/jenkins:/var/jenkins_home
      # 允许与宿主机的docker进行通讯
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "4000:8080"

启动容器

分别在 gitea 文件夹及 jenkins 文件夹执行

docker-compose up -d

启动 gitea 和 jenkins 服务

gitea 设置

完全按照 gitea 的页面提示设置即可。 以管理员登陆后,创建一个 demo 的仓库。 并在该仓库根创建 Jenkinsfile:

pipeline {
    agent {
        docker {
            image 'maven:3.8.4-jdk-8'
            args '-v /root/.m2:/root/.m2'
        }
    }
    stages {
        stage('build') {
            steps {
                sh 'mvn --version'
            }
        }
    }
}

jenkins 设置并安装插件

按照界面提示初始化 jenkins 并选择默认插件自动安装。 进入 jenkins 主界面后,需要安装 Docker、DockerPipeline 这两个插件,否则 jenkins 将不会识别 Jenkinsfile 内的名为 docker 的 agent。 安装好插件后。 创建第一个 pipeline 构建。使用左侧菜单的最新的【Open Blue Ocean】的菜单能够更快速的创建流水线。 按照界面一步一步操作即可。

注意事项

运行第一个流水线的多数问题都是 docker 的权限问题。因此,docker-compose.yml 最好放在当前用户的的主目录,即 ~ 下。 同时特别留意,jenkins 的 docker-compose.yml 里面加了注释说明的行,这些必须要有。