首页 公告 项目 RSS

gitea runner的一些坑

August 16, 2024 本文有 657 个字 需要花费 2 分钟阅读

简介

介绍下搭建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