使用 Gogs + MySQL 快速搭建仓库管理系统

之前都是使用 Gitlab 做仓库管理系统,奈何 Gitlab 在低配置的 NAS 上跑总是各种卡顿宕机,后来就改成了 Gogs。首先 Gogs 它小巧轻便,也可以使用 Jenkins 来做持续集成和持续交付,因此个人还是比较喜欢 Gogs。

安装

  1. 安装配置环境
    # yum install mysql-community-server  go  git nginx  -y
    
  2. 为 Gogs 创建单独的用户
    # useradd git-gogs
    
  3. 下载并解压文件,并将文件夹名改为 Gogs
    # su git-gogs
    $ cd ~
    $ wget [Gogs_download_address]
    $ unzip [Gogs_files]
    $ mv [Gogs_files] ./gogs
    
  4. 为文件夹分配权限
    # chown -R  git-gogs:git-gogs ./gogs
    # mkdir gogs-repositories
    # chown  -R  git-gogs:git-gogs ./gogs-repositories
    
  5. 启动 Gogs
    # su git-gogs
    $ sudo /gogs/gogs web &
    
    如果防火墙没有问题的话,之后登录 http://gogs-server-ip:3000 就能看到配置界面了。Gogs 支持MySQL,PostgreSQL,SQLite3和TiDB,默认使用 SQLite3。
    有关Gogs的配置文件在 /home/git-gogs/gogs/custom/conf/app.ini 里面,相关配置在Gogs文档中有。

配置 MySQL 数据库

  1. 开启数据库
    # systemctl start mysqld ;systemctl enable mysqld
    
  2. 获取数据库 Root 账户的密码
    # cat /var/log/mysqld.log | grep password
    
  3. 安全安装(用于生产力环境)
    # mysql_secure_installation
    
  4. 登录 MySQL 并修改存储引擎,字体编码和分配用户权限
    # mysqld -u root -p
    > SET GLOBAL storage_engine = 'InnoDB';
    > CREATE DATABASE gogs CHARACTER SET utf8 COLLATE utf8_bin;
    > GRANT ALL PRIVILEGES ON gogs.* TO ‘root’@‘localhost’ IDENTIFIED BY 'YourPassword';
    > FLUSH PRIVILEGES;
    > QUIT;
    

配置前端反向代理

  1. 修改 Nginx 配置文件
    注意:这只是一个示范,具体配置反向代理可以查看我的 Nginx 学习笔记
    # vi /etc/nginx/conf.d/default.conf
    server {
        listen 80;
        server_name  gogs.cubat.cc;
        location / {
                proxy_pass http://127.0.0.1:3000/;
        }
    }
    
  2. 重启 Nginx
    # systemctl restart nginx
    

配合 Jenkins 做持续集成

  1. 首先打开 Jenkins 进入系统管理→管理插件→可选插件安装,搜索Generic Webhook Trigger并安装。
  2. 打开 Gogs 管理界面,仓库设置 → 管理 Web 钩子 → 添加 Web 钩子。这里的推送地址是 http://jenkins地址:端口号/generic-webhook-trigger/invoke?token=密钥 密钥是要与后面在jenkins里面的密钥设置一致。
  3. 设置完了之后可以点击测试推送,点击测试记录可以看到发送给jenkins的推送详情。

参考资料

评论