简介
介绍下搭建gitea runner时候碰到的一些坑
操作
首先上安装runner时候需要的docker-compose.yaml
version: "3.8"
services:
runner:
image: gitea/act_runner:0.2.10
restart: always
environment:
GITEA_INSTANCE_URL: "https://git.xxxxxx.com"
GITEA_RUNNER_REGISTRATION_TOKEN: "xxxxxxxxxxxxxxxxxx"
GITEA_RUNNER_NAME: "bboysoul"
GITEA_RUNNER_LABELS: "docker:docker://gitea/runner-images:ubuntu-22.04-full"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/root
值得一提的是GITEA_RUNNER_LABELS
这个参数,意思就是当你使用docker这个标签的runner运行job的时候,使用的是gitea/runner-images:ubuntu-22.04-full
这个镜像
我的build.yaml
name: ci
on:
push:
branches:
- 'master'
env:
APP_NAME: xxxxx
REGISTRY_URL: registry.xxxxx.com
REGISTRY_USER: xxxxxxx
REGISTRY_PASSWORD: xxxxxxx
IMAGE_NAME: ${{ env.REGISTRY_URL }}/${{ env.REGISTRY_USER }}/${{ env.APP_NAME }}
jobs:
docker:
runs-on: docker
container:
options: --user=root
steps:
# Set up Docker Buildx
- name: Set up Docker Buildx
uses: setup-buildx-action@v2
# Login to Docker Hub
- name: Login to Docker Hub
uses: login-action@v2
with:
registry: ${{ env.REGISTRY_URL }}
username: ${{ env.REGISTRY_USER }}
password: ${{ env.REGISTRY_PASSWORD }}
# Build and push
- name: Build and push
uses: build-push-action@v2
with:
push: true
tags: |
${{ env.IMAGE_NAME }}:latest
${{ env.IMAGE_NAME }}:${{ github.sha }}
cache-from: type=registry,ref=${{ env.IMAGE_NAME }}:buildcache
cache-to: type=registry,ref=${{ env.IMAGE_NAME }}:buildcache,mode=max
对于我来说大部分时候都是编译各种各样的容器镜像,所以上面的yaml其实已经可以满足大部分的需求了,要值得说的是下面几点
container:
options: --user=root
因为要在容器中编译容器,但是gitea/runner-images:ubuntu-22.04-full
这个镜像默认是使用普通用户的,所以会提示
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/version": dial unix /var/run/docker.sock: connect: permission denied
为了可以正常编译。所以不得不加上上面这段使用root用户区运行容器
还有就是cache,为了加速编译,我就使用了registry去当cache
cache-from: type=registry,ref=${{ env.IMAGE_NAME }}:buildcache
cache-to: type=registry,ref=${{ env.IMAGE_NAME }}:buildcache,mode=max
最后说几句
github action其实是最容易使用的,所以和github action兼容的gitea action从第一个版本出来的时候我就一直在使用,如果你比较偏向于selfhost,这个是最完美的
欢迎关注我的博客www.bboy.app
Have Fun