基地的git仓库发生了一些变动,只有一个gitea仓库留下来了,博客仓库还在,故此番折腾完成从仓库自动更新博客网页
请自行安装docker
与docker-compose
,遇上了几个大坑,费我一天时间,气死了气死了气死了
一、部署gitea
1.启用ssh支持
你可以参看官方教程SSH 容器直通或者直接使用下面的指令
创建一个名叫
git
的账户1
sudo adduser git
查看
USER_UID
和USER_GID
的值1
id git
创建 SSH 密钥对
1
sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key"
打开
/usr/local/bin/gitea
写入以下内容sudo vim /usr/local/bin/gitea
1
ssh -p 2222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
添加权限
1
sudo chmod +x /usr/local/bin/gitea
sudo -i
进入管理员输入下面的指令1
echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys
ctrl
+D
退出管理员模式
2.docker 启动
docker-compose.yml
文件
USER_UID/USER_GID
按上面查询的修改注意
./gitea
是放置gitea数据文件的地方,如果基地有遗传数据,修改路径即可
1 | version: "3" |
启动docker
1 | docker-compose up -d |
需要用ngix反代域名到8080端口
3.修改参数
配置文件在/gitea/conf/app.ini
里面加入
1 | [webhook] |
[sever]
字段中含有域名的填写,如果后续有域名一直对不上的情况,请检查一下
二、启动Drone CI
1.在gitea中获得参数
像如下生成ID和密钥
生成会得到ID和密钥
ID就是DRONE_GITEA_CLIENT_ID
密钥是DRONE_GITEA_CLIENT_SECRET
,后面会用
Linux下使用openssl rand -hex 16
可获得一个32位的token,就是DRONE_RPC_SECRET
2.启动Drone
1 | docker run \ |
所有字段不需要引号,直接写
如果出现了什么错误需要删除重启,建议
sudo rm -rf /var/lib/drone
清一下之前产生的东西需要用ngix反代域名到6080端口,用HTTPS也是6080端口
3.启动drone-runner
1 | docker run -d \ |
6030端口可以随便改
查看日志,正常运行
1 | ➜ ~ docker logs runner |
4.访问Drone
访问{drone的地址,如drone.drone.cn}
,会自动跳转到gitea进行鉴权,点击红色按钮授权即可
选择你的仓库点击ACTIVATE REPOSITORY
即启动了工作流
5.编写脚本文件
在HEXO博客仓库根目录下提交.drone.yml
文件,内容如下
1 | kind: pipeline |
target修改为服务器上的某一文件夹,ngix反代到博客网址即可
6.返回Drone配置参数
博客仓库->Settings->Secrets->New secret,勾选Allow Pull Repuest
配置ssh_host
、ssh_port
、ssh_username
、ssh_password
四个参数
现在,当有推送时会编译博客,当pr成功时会将博客内容复制到目标文件夹,ngix反代完成实时更新
第一次点new build是会没有反应的,第一次启用后需要在仓库中添加
.drone.yml
后用个push,让自动完成更新一次
点击右上角new build可以测试
三、使用OwnCloud
顺便搭了个校园网局域网云盘,这玩意儿有点小坑,权限问题
这里我需要把一个机械硬盘持久化挂载在在某一目录并让 owncloud 使用
sudo vim /etc/fstab
追加如下内容让硬盘挂载持久化1
UUID=7E524C65524C23ED /home/v5/disk_hdd ntfs defaults,utf8,uid=33,gid=33,dmask=007,fmask=007 0 2
/home/v5/disk_hdd
:修改为你想挂载的路径33
:修改为id www-data
返回的值007
:意味770,只允许www-data
用户访问,不让其他用户访问(设置为770是他的要求,试了个网上的参数改为false也没作用只好按他说的做)- 用
ll
和df -h
可以查看权限和挂载结果
启动docker
1
docker run -p 7070:80 -d -v /home/v5/disk_hdd/owncloud:/var/www/html --name=owncloud --restart always owncloud
/home/v5/disk_hdd/owncloud
:修改为owncloud使用的文件夹7070
:需要ngix反代到域名
如果直接操作文件夹
owncloud/data/{user_name}/files
增加文件,需要进行如下操作在网页中才能看见docker exec -it owncloud /bin/bash
进入容器su www-data -s /bin/bash -c 'php occ files:scan --all'
更新索引文件夹ctrl
+D
退出容器
总结
我踩的第一个坑是docker run的时候每个字符串加了引号(或许是这个,不是很确定),然后域名当时改了要用git.
,一直写的是gitea.
,然后一直鉴权失败
第二个坑是gitea的app.ini,可恶,还是域名改了的问题,要从gitea.
换成git.
,当时就看到Drone运行的时候,我明明docker启动传的参是的git.
,但是他就从gitea.
仓库里面拉,一直鉴权失败
然后就是如果之前哪出问题了要重新run Drone一定要sudo rm -rf /var/lib/drone
,不然还是会和之前一样
参考教程: