「番外篇」如何用Git平台账号登录建木CI with docker-compose.yml

336 阅读5分钟

前言

迄今为止,建木一共集成了四个Git平台用于建木CI登录(GiteeGitlinkGitlabGitea

这篇文章主要讲讲如何在建木官方的docker-compose启动脚本里面加上环境变量来改变建木CI的Git登录平台

开始操作

用户名密码登录

执行命令:wget https://gitee.com/jianmu-dev/jianmu-deploy/raw/master/docker-compose.yml,将官方的启动脚本拉取下来

如下:

version: '3'
services:
  jianmu-mysql:
    image: mysql:8
    command: --init-connect='SET NAMES utf8' --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=1200 --max-user-connections=1000
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: "jianmu"
      TZ: "Asia/Shanghai"
  ci-server:
    image: jianmudev/jianmu-ci-server:v2.5.4
    restart: always
    environment:
      SPRING_PROFILES_ACTIVE: dev
      SPRING_DATASOURCE_URL: jdbc:mysql://jianmu-mysql:3306/jianmu?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: 123456
      JIANMU_WORKER_SECRET: worker-secret
      JIANMU_API_ADMINPASSWD: 123456      
#      REGISTRY_AK:
#      REGISTRY_SK:
    volumes:
      - /mnt/jianmu/ci:/ci
    depends_on:
      - jianmu-mysql
    entrypoint: ["/wait-for-it.sh", "jianmu-mysql:3306", "-t", "0", "--", "java", "-Duser.timezone=Asia/Shanghai", "-cp", "/app/resources:/app/classes:/app/libs/*", "dev.jianmu.api.SpringbootApp"]
  worker:
    image: jianmudev/jianmu-worker-docker:v1.0.2
    restart: always
    environment:
      JIANMU_SRV_ADDRESS: http://ci-server:8081
      JIANMU_SRV_SECRET: worker-secret
      JIANMU_WORKER_ID: worker1
      # 可同时并发的容器数量,默认为2
      JIANMU_WORKER_CAPACITY: 5
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - jianmu-mysql
      - ci-server
  web:
    image: jianmudev/jianmu-ci-ui:v2.5.4
    ports:
      - "80:80"
      - "443:443"
    restart: always
    depends_on:
      - jianmu-mysql
      - ci-server

networks:
  default:
    ipam:
      config:
        - subnet: 10.1.0.0/16

使用默认脚本启动建木

  • 进入初始界面

    image-20220907142743695

  • 开始登录,默认的脚本里使用默认的用户名密码来登录

    image-20220907142727693

  • 用户名密码登录成功

    image-20220907142718265

Gitee登录

在默认的docker-compose.yml脚本里加入oauth2和Gitee平台的相关配置,如下

version: '3'
services:
  jianmu-mysql:
    image: mysql:8
    command: --init-connect='SET NAMES utf8' --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=1200 --max-user-connections=1000
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: "jianmu"
      TZ: "Asia/Shanghai"
  ci-server:
    image: jianmudev/jianmu-ci-server:v2.5.4
    restart: always
    environment:
      SPRING_PROFILES_ACTIVE: dev
      SPRING_DATASOURCE_URL: jdbc:mysql://jianmu-mysql:3306/jianmu?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: 123456
      JIANMU_WORKER_SECRET: worker-secret
      JIANMU_API_ADMINPASSWD: 123456
      #----------------------------------多了以下配置--------------------------------------
      # oauth2
      JIANMU_OAUTH2_ALLOW-REGISTRATION: 'true'
      # gitee
      JIANMU_OAUTH2_GITEE_RESPONSE-TYPE: code
      JIANMU_OAUTH2_GITEE_GRANT-TYPE: authorization_code
      JIANMU_OAUTH2_GITEE_TOKEN-URL: https://gitee.com/oauth/token
      JIANMU_OAUTH2_GITEE_CODE-URL: https://gitee.com/oauth/authorize
      JIANMU_OAUTH2_GITEE_API-URL: https://gitee.com/api/v5/
      JIANMU_OAUTH2_GITEE_CLIENT-SECRET: xxxxxxxxxxxxxxxxxxxx
      JIANMU_OAUTH2_GITEE_CLIENT-ID: xxxxxxxxxxxxxxxxxxxxx
      JIANMU_OAUTH2_GITEE_SCOPE: user_info
      #-----------------------------------多了以上配置--------------------------------------
#      REGISTRY_AK:
#      REGISTRY_SK:
    volumes:
      - /mnt/jianmu/ci:/ci
    depends_on:
      - jianmu-mysql
    entrypoint: ["/wait-for-it.sh", "jianmu-mysql:3306", "-t", "0", "--", "java", "-Duser.timezone=Asia/Shanghai", "-cp", "/app/resources:/app/classes:/app/libs/*", "dev.jianmu.api.SpringbootApp"]
  worker:
    image: jianmudev/jianmu-worker-docker:v1.0.2
    restart: always
    environment:
      JIANMU_SRV_ADDRESS: http://ci-server:8081
      JIANMU_SRV_SECRET: worker-secret
      JIANMU_WORKER_ID: worker1
      # 可同时并发的容器数量,默认为2
      JIANMU_WORKER_CAPACITY: 5
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - jianmu-mysql
      - ci-server
  web:
    image: jianmudev/jianmu-ci-ui:v2.5.4
    ports:
      - "80:80"
      - "443:443"
    restart: always
    depends_on:
      - jianmu-mysql
      - ci-server

networks:
  default:
    ipam:
      config:
        - subnet: 10.1.0.0/16
  • 进入初始界面

    image-20220907142743695

  • 开始登录,提示使用Gitee平台登录

    image-20220907143743497

  • 进入Gitee界面进行授权

    image-20220907143930117

  • 登录中

    image-20220907143941924

  • 登录成功

    image-20220907143958046

Gitea登录

在默认的docker-compose.yml脚本里加入oauth2和Gitea平台的相关配置,如下

version: '3'
services:
  jianmu-mysql:
    image: mysql:8
    command: --init-connect='SET NAMES utf8' --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=1200 --max-user-connections=1000
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: "jianmu"
      TZ: "Asia/Shanghai"
  ci-server:
    image: jianmudev/jianmu-ci-server:v2.5.4
    restart: always
    environment:
      SPRING_PROFILES_ACTIVE: dev
      SPRING_DATASOURCE_URL: jdbc:mysql://jianmu-mysql:3306/jianmu?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: 123456
      JIANMU_WORKER_SECRET: worker-secret
      JIANMU_API_ADMINPASSWD: 123456
      #----------------------------------多了以下配置--------------------------------------
      # oauth2
      JIANMU_OAUTH2_ALLOW-REGISTRATION: 'true'
      # gitea
      JIANMU_OAUTH2_GITEA_RESPONSE-TYPE: code
      JIANMU_OAUTH2_GITEA_GRANT-TYPE: authorization_code
      JIANMU_OAUTH2_GITEA_TOKEN-URL: http://ip:port/login/oauth/access_token
      JIANMU_OAUTH2_GITEA_CODE-URL: http://ip:port/login/oauth/authorize
      JIANMU_OAUTH2_GITEA_API-URL: http://ip:port/api/v1/
      JIANMU_OAUTH2_GITEA_CLIENT-ID: xxxxxxxxxxxxxxxxxxxxxxx
      JIANMU_OAUTH2_GITEA_CLIENT-SECRET: xxxxxxxxxxxxxxxxxxxxxxx
      #-----------------------------------多了以上配置--------------------------------------
#      REGISTRY_AK:
#      REGISTRY_SK:
    volumes:
      - /mnt/jianmu/ci:/ci
    depends_on:
      - jianmu-mysql
    entrypoint: ["/wait-for-it.sh", "jianmu-mysql:3306", "-t", "0", "--", "java", "-Duser.timezone=Asia/Shanghai", "-cp", "/app/resources:/app/classes:/app/libs/*", "dev.jianmu.api.SpringbootApp"]
  worker:
    image: jianmudev/jianmu-worker-docker:v1.0.2
    restart: always
    environment:
      JIANMU_SRV_ADDRESS: http://ci-server:8081
      JIANMU_SRV_SECRET: worker-secret
      JIANMU_WORKER_ID: worker1
      # 可同时并发的容器数量,默认为2
      JIANMU_WORKER_CAPACITY: 5
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - jianmu-mysql
      - ci-server
  web:
    image: jianmudev/jianmu-ci-ui:v2.5.4
    ports:
      - "80:80"
      - "443:443"
    restart: always
    depends_on:
      - jianmu-mysql
      - ci-server

networks:
  default:
    ipam:
      config:
        - subnet: 10.1.0.0/16
  • 进入初始界面

    image-20220907142743695

  • 开始登录,提示使用Gitea平台登录

    image-20220907144646242

  • 进入Gitea进行授权

    image-20220907144800988

  • 登录成功

    image-20220907144824795

Gitlink登录

在默认的docker-compose.yml脚本里加入oauth2和Gitlink平台的相关配置,如下

version: '3'
services:
  jianmu-mysql:
    image: mysql:8
    command: --init-connect='SET NAMES utf8' --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=1200 --max-user-connections=1000
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: "jianmu"
      TZ: "Asia/Shanghai"
  ci-server:
    image: jianmudev/jianmu-ci-server:v2.5.4
    restart: always
    environment:
      SPRING_PROFILES_ACTIVE: dev
      SPRING_DATASOURCE_URL: jdbc:mysql://jianmu-mysql:3306/jianmu?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: 123456
      JIANMU_WORKER_SECRET: worker-secret
      JIANMU_API_ADMINPASSWD: 123456
      #----------------------------------多了以下配置--------------------------------------
      # oauth2
      JIANMU_OAUTH2_ALLOW-REGISTRATION: 'true'
      # gitlink
      JIANMU_OAUTH2_GITLINK_GRANT-TYPE: authorization_code
      JIANMU_OAUTH2_GITLINK_SCOPE: user_info
      JIANMU_OAUTH2_GITLINK_RESPONSE-TYPE: code
      JIANMU_OAUTH2_GITLINK_CLIENT-ID: xxxxxxxxxxxxxxxxxx
      JIANMU_OAUTH2_GITLINK_CLIENT-SECRET: xxxxxxxxxxxxxxxx
      JIANMU_OAUTH2_GITLINK_TOKEN-URL: https://www.gitlink.org.cn/oauth/token
      JIANMU_OAUTH2_GITLINK_API-URL: https://www.gitlink.org.cn/api/
      JIANMU_OAUTH2_GITLINK_BASE-URL: https://www.gitlink.org.cn/
      #-----------------------------------多了以上配置--------------------------------------
#      REGISTRY_AK:
#      REGISTRY_SK:
    volumes:
      - /mnt/jianmu/ci:/ci
    depends_on:
      - jianmu-mysql
    entrypoint: ["/wait-for-it.sh", "jianmu-mysql:3306", "-t", "0", "--", "java", "-Duser.timezone=Asia/Shanghai", "-cp", "/app/resources:/app/classes:/app/libs/*", "dev.jianmu.api.SpringbootApp"]
  worker:
    image: jianmudev/jianmu-worker-docker:v1.0.2
    restart: always
    environment:
      JIANMU_SRV_ADDRESS: http://ci-server:8081
      JIANMU_SRV_SECRET: worker-secret
      JIANMU_WORKER_ID: worker1
      # 可同时并发的容器数量,默认为2
      JIANMU_WORKER_CAPACITY: 5
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - jianmu-mysql
      - ci-server
  web:
    image: jianmudev/jianmu-ci-ui:v2.5.4
    ports:
      - "80:80"
      - "443:443"
    restart: always
    depends_on:
      - jianmu-mysql
      - ci-server

networks:
  default:
    ipam:
      config:
        - subnet: 10.1.0.0/16
  • 进入初始界面

    image-20220907142743695

  • 提示使用Gitlink登录

    image-20220907150050930

  • 进入Gitlink进行授权

    image-20220907150106871

  • 登录成功

    image-20220907151803974

Gitlab登录

在默认的docker-compose.yml脚本里加入oauth2和Gitlab平台的相关配置,如下

version: '3'
services:
  jianmu-mysql:
    image: mysql:8
    command: --init-connect='SET NAMES utf8' --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=1200 --max-user-connections=1000
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: "jianmu"
      TZ: "Asia/Shanghai"
  ci-server:
    image: jianmudev/jianmu-ci-server:v2.5.4
    restart: always
    environment:
      SPRING_PROFILES_ACTIVE: dev
      SPRING_DATASOURCE_URL: jdbc:mysql://jianmu-mysql:3306/jianmu?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: 123456
      JIANMU_WORKER_SECRET: worker-secret
      JIANMU_API_ADMINPASSWD: 123456
      #----------------------------------多了以下配置--------------------------------------
      # oauth2
      JIANMU_OAUTH2_ALLOW-REGISTRATION: 'true'
      # gitlab
      JIANMU_OAUTH2_GITLAB_RESPONSE-TYPE: code
      JIANMU_OAUTH2_GITLAB_GRANT-TYPE: authorization_code
      JIANMU_OAUTH2_GITLAB_SCOPE: api
      JIANMU_OAUTH2_GITLAB_TOKEN-URL: http://ip:port/oauth/token
      JIANMU_OAUTH2_GITLAB_CODE-URL: http://ip:port/oauth/authorize
      JIANMU_OAUTH2_GITLAB_API-URL: http://ip:port/api/v4/
      JIANMU_OAUTH2_GITLAB_CLIENT-ID: xxxxxxxxxxxxxxxxxxxxxx
      JIANMU_OAUTH2_GITLAB_CLIENT-SECRET: xxxxxxxxxxxxxxxxxxx
      #-----------------------------------多了以上配置--------------------------------------
#      REGISTRY_AK:
#      REGISTRY_SK:
    volumes:
      - /mnt/jianmu/ci:/ci
    depends_on:
      - jianmu-mysql
    entrypoint: ["/wait-for-it.sh", "jianmu-mysql:3306", "-t", "0", "--", "java", "-Duser.timezone=Asia/Shanghai", "-cp", "/app/resources:/app/classes:/app/libs/*", "dev.jianmu.api.SpringbootApp"]
  worker:
    image: jianmudev/jianmu-worker-docker:v1.0.2
    restart: always
    environment:
      JIANMU_SRV_ADDRESS: http://ci-server:8081
      JIANMU_SRV_SECRET: worker-secret
      JIANMU_WORKER_ID: worker1
      # 可同时并发的容器数量,默认为2
      JIANMU_WORKER_CAPACITY: 5
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - jianmu-mysql
      - ci-server
  web:
    image: jianmudev/jianmu-ci-ui:v2.5.4
    ports:
      - "80:80"
      - "443:443"
    restart: always
    depends_on:
      - jianmu-mysql
      - ci-server

networks:
  default:
    ipam:
      config:
        - subnet: 10.1.0.0/16
  • 进入初始界面

    image-20220907142743695

  • 提示使用Gitlab登录

    image-20220907151023669

  • 进入Gitleb进行授权

    image-20220907151125715

  • 登录成功

    image-20220907151850563

官⽹:jianmu.dev

代码:gitee.com/jianmu-dev

文档:docs.jianmu.dev

示例:ci.jianmu.dev