Skip to content

gitea actions

暂不考虑

yml
services:
  gitea-db:
    image: postgres:17-alpine
    container_name: gitea-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: gitea
      POSTGRES_USER: gitea
      POSTGRES_PASSWORD: sql123123
    volumes:
      - ./postgres:/var/lib/postgresql/data
    networks:
      - gitea

  gitea:
    image: docker.gitea.com/gitea:1.26-rootless
    container_name: gitea
    restart: unless-stopped
    depends_on:
      - gitea-db
    environment:
      USER_UID: 1000
      USER_GID: 1000

      GITEA__database__DB_TYPE: postgres
      GITEA__database__HOST: gitea-db:5432
      GITEA__database__NAME: gitea
      GITEA__database__USER: gitea
      GITEA__database__PASSWD: sql123123

      GITEA__server__DOMAIN: git.local.q123q.cc
      GITEA__server__ROOT_URL: http://git.local.q123q.cc/
      GITEA__server__SSH_DOMAIN: git.local.q123q.cc
      GITEA__server__SSH_PORT: 2222
      GITEA__server__START_SSH_SERVER: true

      GITEA__actions__ENABLED: true
    volumes:
      - ./gitea:/var/lib/gitea
      - ./gitea-config:/etc/gitea
    ports:
      - "2222:2222"
    networks:
      - gitea
      - traefik

  gitea-act-runner:
    image: docker.io/gitea/act_runner:0.6
    container_name: gitea-act-runner
    restart: unless-stopped
    depends_on:
      - gitea
    environment:
      CONFIG_FILE: /config.yaml
      DOCKER_NETWORK_MODE: gitea-network
      GITEA_INSTANCE_URL: http://gitea:3000/
      GITEA_RUNNER_REGISTRATION_TOKEN: change_me_runner_token
      GITEA_RUNNER_NAME: local-runner 
    volumes:
      - ./act-runner:/data
      - ./act-runner-config.yaml:/config.yaml
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/frontend-dist:/deploy
    networks:
      - gitea
      - traefik

networks:
  gitea:
    name: gitea-network
  traefik:
    external: true

注意 GITEA__actions__ENABLED 是 true

gitea-act-runner 可以为 项目、组织、整体分别设置。

整体通过 “头像” -> “管理后台” 设置

act-runner-config.yaml

sh
docker exec gitea-act-runner act_runner generate-config > act-runner-config.yaml

有了 config 后,GITEA_RUNNER_LABELS 将失效

修改 labels

runner:
  labels:
    - "node:docker://node:22-bookworm"
    - "golang:docker://golang:1.24"
container:
  network: gitea-network
  valid_volumes:
    - /deploy

一个 gitea actions workflows 实例

.gitea/workflows/deploy-local-server.yml

yml
name: WanxServer2本地部署

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: node

    steps:
      - name: Runner Debug 信息
        run: |
          ping -c 3 gitea || true
          cat /etc/resolv.conf
          env | sort

      - name: clone 代码
        run: |
          git clone "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" . 
          git checkout "$GITHUB_SHA"

      - name: 启用 pnpm
        run: corepack enable

      - name: 安装依赖
        run: pnpm install --frozen-lockfile --registry https://registry.npmmirror.com

      - name: 构建 dist
        run: pnpm build:local

      - name: 部署本地static-nginx
        run: |
          cd packages/main 
          mkdir -p /deploy/panorama 
          rm -rf /deploy/panorama/* 
          cp -r dist/. /deploy/panorama/