当前位置:   article > 正文

drone 1.0 安装入门搭建教程_unregistered redirect uri

unregistered redirect uri

drone 1.0 安装入门搭建教程

由于 1.0 的更新换代之后,增加了OAuth2支持性更好了, 对github,gitlab,gitea已经非常的友好了,而之前的博客是gogs的,所以今天单独来写一篇关于gitea的,gitlab应该也是类似的.

https://github.com/wrzfeijianshen/drone_tutorial
docker地址放在  workspace\docker_2020_0830
  • 1
  • 2
步骤1: 创建网络,开启反向代理

虽然不知道运维大大们是怎么玩的,作为小小白的开发者,只关心怎么弄出来就可以了,怎么好看怎么玩是他们的事情咯

咱们把这gitea和drone划分到一个网络里,所有的带#的,就默认在linux 终端执行的命令.

ip/port 划分
gitea : 192.168.0.70/10080
drone : 192.168.0.70/10081

创建网络: nginx_net
# docker network create nginx_net

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

开启反向代理, 请看下一篇文章,不需要则不用设置,简单说说,反向代理,在同局域网另一个ip设置好hosts 域名指向ip后,访问域名会自动跳转到相应的网站.

开启gitea

docker-compose.yml

version: "3"
networks:
  nginx_net:
    external: true

services:
  gitea_server:
    image: gitea/gitea:latest
    container_name: gitea
    restart: always
    networks:
      - nginx_net
    volumes:
      - ./data/gitea:/data
    ports:
      - "10080:3000"
      - "222:22"
    depends_on:
      - gitea_db
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - DB_TYPE=mysql
      - DB_HOST=gitea_db:3306
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=gitea
      # nginx_proxy 的反向代理,不用则不用设置
      - VIRTUAL_HOST=git.dev.fjssoft.com
      - VIRTUAL_PORT=3000

  gitea_db:
    image: mysql:8
    restart: always
    container_name: gitea_db
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - nginx_net
    volumes:
      - ./data/mysql:/var/lib/mysql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
# docker-compose up -d
  • 1

点击注册

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bSXwBZqT-1598761182254)(img_files/2.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8EbL7LqN-1598761182256)(img_files/19.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YnLmdCq7-1598761182259)(img_files/4.png)]

设置 OAuth2 应用,来供drone使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NRIRYL0o-1598761182261)(img_files/5.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pQIRpzdC-1598761182264)(img_files/9.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I2arBnA6-1598761182266)(img_files/8.png)]

客户端ID : DRONE_GITEA_CLIENT_ID
6edc1037-6321-46b3-95d1-52634bc7d093
客户端密钥 : DRONE_GITEA_CLIENT_SECRET
X3VBCxiQNwFDA7_A3Rao9sFJXCUr1Pgjmali2cSofxE=

  • 1
  • 2
  • 3
  • 4
  • 5

注意先有oauth2 才会去创建drone容器,因为需要配置id和秘钥.复制一下这两个值后,点击保存. 替换 server.env 中的 DRONE_GITEA_CLIENT_ID, DRONE_GITEA_CLIENT_SECRET

启动 drone

docker-compose.yml

version: '3.7'

networks:
  nginx_net:
    external: true

services:
  drone-server:
    image: drone/drone:latest
    container_name: drone
    ports:
      - 10081:80
    volumes:
      - ./data/drone:/var/lib/drone/
      - /var/run/docker.sock:/var/run/docker.sock
    restart: always
    networks:
      - nginx_net
    env_file:
      # 环境变量都放到一个文件里面
      - ./config/server.env
  drone-runner:
    image: drone/drone-runner-docker:latest
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: always
    networks:
      - nginx_net
    env_file:
      - ./config/runner.env
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

创建通信秘钥,复制一下,替换runner.env,server.env 中的 DRONE_RPC_SECRET

# openssl rand -hex 16
4f3b7f51e3dd678c08cf2d0675c66760
  • 1
  • 2

创建环境变量的文件 config/server.env

# openssl rand -hex 16 
# 和 runner 通信的秘钥
DRONE_RPC_SECRET=d5bc8623653264aa1bc16f983aaf2d60

# 设置本机的host地址,这里一定不要加http://
DRONE_SERVER_HOST=192.168.0.70:10081
DRONE_SERVER_PROTO=http

# gitea地址
# 如果是github,官网查看 https://docs.drone.io/server/reference/
# 标识 DRONE_GITHUB_CLIENT_ID
DRONE_GITEA_SERVER=http://192.168.0.70:10080

# 设置(而不是管理后台哦)-->应用
DRONE_GITEA_CLIENT_ID=6edc1037-6321-46b3-95d1-52634bc7d093
DRONE_GITEA_CLIENT_SECRET=X3VBCxiQNwFDA7_A3Rao9sFJXCUr1Pgjmali2cSofxE=

DRONE_DEBUG=true

TZ=Asia/Shanghai
# nginx_proxy 反向代理的端口和域名地址,仅供外部主机访问,不能用于容器内部
VIRTUAL_PORT=80
VIRTUAL_HOST=drone.dev.fjssoft.com
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

创建配置文件 runner.env

# openssl rand -hex 16 
# 和 server 通信的秘钥
DRONE_RPC_SECRET=d5bc8623653264aa1bc16f983aaf2d60

# server 的ip/端口,要写ip/port
DRONE_RPC_HOST=192.168.0.70:10081

# 显示终端日志
DRONE_LOGS_TRACE=true
DRONE_LOGS_DEBUG=true

# server 的ip/端口,要写ip/port
DRONE_SERVER_PROXY_HOST=192.168.0.70:10081
DRONE_SERVER_PROXY_PROTO=http
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
# docker-compose up -d

  • 1
  • 2

http://192.168.0.70:10081/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X8jYgC26-1598761182268)(img_files/10.png)]

错误 -->
错误1:
Login Failed. unauthorized_client: client is not authorized

说明 DRONE_GITEA_CLIENT_ID 和 DRONE_GITEA_CLIENT_SECRET
不匹配 gitea中的值


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

错误2: Unregistered Redirect URI

http://192.168.0.70:10080/login/oauth/authorize?client_id=6edc1037-6321-46b3-95d1-52634bc7d093&redirect_uri=http%3A%2F%2Fhttp%3A%2F%2F192.168.0.70%3A10081%2Flogin&response_type=code&state=4d65822107fcfd52
  • 1

从上面的url地址来看 redirect_uri=http%3A%2F%2Fhttp%3A%2F%2F,多出现了http://

why???

在github.com/drone的提的问题中,也是很隐蔽的,没有答案.其实直接从url去掉就可以了.

其中这个redirect_uri 就是回调到drone的地址,

在server.env中如果是写成http://,则出现这个情况.
DRONE_SERVER_HOST=http://192.168.0.70:10081

所以不需要加http:// ,直接DRONE_SERVER_HOST=192.168.0.70:10081

除了这个,就要和 gitea中的 重定向url http://192.168.0.70:10081/login , 一定是要匹配的,否则你会疯掉的.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fDT1y3zf-1598761182269)(img_files/11.png)]

示例

已经安装完毕后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XgieFP8r-1598761182272)(img_files/12.png)]

在gitea中创建一个项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TgqZbalt-1598761182274)(img_files/15.png)]

克隆到本地
http://192.168.0.70:10080/fjs/drone_demo.git

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lCUr0WlN-1598761182275)(img_files/16.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wwZC3M7s-1598761182277)(img_files/17.png)]

在项目根目录添加 文件
.drone.yml

kind: pipeline
name: default
steps:
- name: info
  image: busybox
  commands:
    - echo "appdemo"
    - echo "hello appdemo"
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

然后提交,推送

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aK6GiW1k-1598761182278)(img_files/18.png)]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/832524
推荐阅读
  

闽ICP备14008679号