|
| 1 | + |
| 2 | + |
| 3 | +gitea 有着轻量化的 git仓库和工作流程序,满足小团队进行自动化和代码私有化部署 |
| 4 | + |
| 5 | +## docker 安装 gitea |
| 6 | +```yml |
| 7 | +version: "3" |
| 8 | + |
| 9 | +networks: |
| 10 | + gitea: |
| 11 | + external: false |
| 12 | + |
| 13 | +services: |
| 14 | + server: |
| 15 | + image: docker.gitea.com/gitea:1.25.3 |
| 16 | + container_name: gitea |
| 17 | + environment: |
| 18 | + - USER_UID=1000 |
| 19 | + - USER_GID=1000 |
| 20 | + restart: always |
| 21 | + networks: |
| 22 | + - gitea |
| 23 | + volumes: |
| 24 | + - ./gitea:/data |
| 25 | + - /etc/timezone:/etc/timezone:ro |
| 26 | + - /etc/localtime:/etc/localtime:ro |
| 27 | + ports: |
| 28 | + - "9999:3000" |
| 29 | + - "9998:22" |
| 30 | +``` |
| 31 | +其中9999 是 外部访问gitea 的端口, |
| 32 | +gitea 的文件映射是存储在当前 文件夹下的 `gitea` 文件 |
| 33 | + |
| 34 | +创建完成后,可以访问 9999端口进行初始化操作 |
| 35 | + |
| 36 | +可以设置存储的数据源,有sqllit,pg,mysql , |
| 37 | +完成后就可以进入到git仓库页面了 |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | +## 配置工作流 |
| 42 | +要运行工作流需要单独的执行器容器,执行器和gitea 仓库是单独运行的 |
| 43 | +首先需要先去gitea 仓库设置页找到添加工作流 |
| 44 | + |
| 45 | +复制密钥 |
| 46 | + |
| 47 | +```shell |
| 48 | + docker run -d \ |
| 49 | + --name=gitea-runner \ |
| 50 | + --restart=always \ |
| 51 | + -v /var/run/docker.sock:/var/run/docker.sock \ |
| 52 | + -v ./act_runner_data:/data \ |
| 53 | + -e GITEA_INSTANCE_URL=http://127.0.0.1:9999/ \ |
| 54 | + -e GITEA_RUNNER_REGISTRATION_TOKEN=lms3AptwrMx1afLSVzfPWDAEogrkjYBAosxro2Sm \ |
| 55 | + -e GITEA_RUNNER_NAME=my-docker-runner \ |
| 56 | + -e GITEA_RUNNER_LABELS=ubuntu-latest,docker \ |
| 57 | + gitea/act_runner:latest |
| 58 | +``` |
| 59 | +其中 `GITEA_RUNNER_REGISTRATION_TOKEN` 的值就是上述图片复制的密钥 |
| 60 | +`GITEA_INSTANCE_URL` 是gitea 的访问路径 |
| 61 | + |
| 62 | + |
| 63 | +## action 插件迁移 |
| 64 | +gitea 的工作流插件是和github 使用的同一套,为了避免去github 拉取插件导致工作流卡住,我们需要迁移一些常用的action 到我们的gitea 私有仓库中 |
| 65 | +1。 首先去gitea 注册一个账号 https://gitea.com/actions |
| 66 | + |
| 67 | +这个页面存储了官方的action 插件 |
| 68 | + |
| 69 | +我们需要去个人设置页面找到添加 应用令牌 https://gitea.com/user/settings/applications |
| 70 | +申请一个 Access Token |
| 71 | + |
| 72 | +然后复制一个自己需要的action 插件的 git 地址,例如 https://gitea.com/actions/checkout.git |
| 73 | + |
| 74 | +然后在自己私有仓库,点击迁移仓库 |
| 75 | + |
| 76 | +选择从gitea 导入 |
| 77 | + |
| 78 | + |
| 79 | + |
| 80 | +点击迁移就可以 导入插件了 |
| 81 | + |
| 82 | + |
| 83 | +## 使用本地仓库的插件 |
| 84 | + |
| 85 | +```yml |
| 86 | +name: Analyze Risk |
| 87 | +
|
| 88 | +on: |
| 89 | + push: |
| 90 | + branches: |
| 91 | + - '**' |
| 92 | +
|
| 93 | +jobs: |
| 94 | + analyze-risk: |
| 95 | + runs-on: ubuntu-latest |
| 96 | + container: |
| 97 | + image: node-python-env |
| 98 | + steps: |
| 99 | + - name: 检出代码 |
| 100 | + uses: http://10.254.91.129:9999/zhangtengfei/checkout@main |
| 101 | +
|
| 102 | + - name: 设置 Python 环境 |
| 103 | + uses: http://10.254.91.129:9999/zhangtengfei/setup-python@main |
| 104 | +
|
| 105 | + - name: 安装依赖 |
| 106 | + run: | |
| 107 | + pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt |
| 108 | +
|
| 109 | + - name: 执行 analyze_risk.py |
| 110 | + run: | |
| 111 | + python3 多因子/analyze_risk.py |
| 112 | +
|
| 113 | + - name: 保存导出文件 |
| 114 | + uses: http://10.254.91.129:9999/zhangtengfei/upload-artifact@v3 |
| 115 | + with: |
| 116 | + name: 风险统计分析 |
| 117 | + path: 多因子/ |
| 118 | +
|
| 119 | +``` |
| 120 | +这里给了一个案例 |
| 121 | +需要在uses 这里的插件名称使用http/https 开头的全路径即可访问内部仓库的插件,就不会被网络卡住了 |
| 122 | + |
| 123 | + |
| 124 | +工作流文件需要存储在`.gitea/workflows/main.yml` 中 |
| 125 | + |
| 126 | +## 结尾 |
| 127 | +由于拉取的系统 没有包含常用的语言依赖,就会在每次都需要写一个apt 去安装各种依赖,浪费很多时间 |
| 128 | + |
| 129 | +可以自己构建一个镜像,使用本地镜像把常用的语言依赖 构建器都存入, |
| 130 | +```yml |
| 131 | +FROM node:20-bullseye |
| 132 | +
|
| 133 | +# 更换为阿里云 Debian 源,加速依赖安装 |
| 134 | +RUN sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list && \ |
| 135 | + apt-get update && \ |
| 136 | + apt-get install -y python3 python3-pip && \ |
| 137 | + rm -rf /var/lib/apt/lists/* |
| 138 | +
|
| 139 | +WORKDIR /workspace |
| 140 | +
|
| 141 | +CMD [ "bash" ] |
| 142 | +``` |
| 143 | +构建这么一个镜像,接着在工作流中声明使用即可 |
| 144 | +```yml |
| 145 | +container: |
| 146 | + image: node-python-env |
| 147 | +``` |
0 commit comments