Как подключить woodpecker-ci: Docker, forgejo?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: при попытке войти после того как прошел аутентификацию выдает ошибку

#version: '3.9' networks: forgejo-ci: external: false volumes: forgejo-data: forgejo-db-data: woodpecker-server-data: woodpecker-agent-config: crow-server: crow-agent: services: forgejo: image: codeberg.org/forgejo/forgejo:13 container_name: forgejo restart: always networks: - forgejo-ci environment: - USER_UID=1000 - USER_GID=1000 - FORGEJO_MAILER_ADDR=${GMAIL_SMTP_USER} # --- DATABASE --- - FORGEJO__database__DB_TYPE=postgres - FORGEJO__database__HOST=db:5432 - FORGEJO__database__NAME=${POSTGRES_DB} - FORGEJO__database__USER=${POSTGRES_USER} - FORGEJO__database__PASSWD=${POSTGRES_PASSWORD} # --- MAIL (Gmail SMTP) --- - FORGEJO__mailer__ENABLED=true - FORGEJO__mailer__FROM=${GMAIL_SMTP_FROM} - FORGEJO__mailer__PROTOCOL=smtps - FORGEJO__mailer__SMTP_ADDR=smtp.gmail.com - FORGEJO__mailer__SMTP_PORT=465 - FORGEJO__mailer__USER=${GMAIL_SMTP_USER} - FORGEJO__mailer__PASSWD=${GMAIL_SMTP_PASSWORD} - FORGEJO__mailer__TLS_ENABLED=true - FORGEJO__actions__ENABLED=true volumes: - forgejo-data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "222:22" depends_on: - db db: image: postgres:15 container_name: forgejo-db restart: always networks: - forgejo-ci environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - forgejo-db-data:/var/lib/postgresql/data crow-server: image: codeberg.org/crowci/crow-server:v4.5 ports: - 8000:8000 # networks: # - forgejo-ci volumes: - crow-server:/var/lib/crow/ env_file: - .env environment: CROW_OPEN: "true" CROW_FORGEJO: "true" CROW_FORGEJO_URL: "http://localhost:3000" CROW_FORGEJO_CLIENT: "${FORGEJO_CLIENT_ID}" CROW_FORGEJO_SECRET: "${FORGEJO_CLIENT_SECRET}" CROW_ADMIN: "master" CROW_HOST: "${CROW_HOST}"
# --- PostgreSQL --- POSTGRES_USER=forgejo POSTGRES_PASSWORD=forgejo_password POSTGRES_DB=forgejo # --- SMTP Gmail --- GMAIL_SMTP_PASSWORD=smtp GMAIL_SMTP_FROM=GIT.LAN <user+git.lan@gmail.com> GMAIL_SMTP_USER=user@gmail.com WOODPECKER_HOST=http://localhost:8000 # Провайдер Forgejo #http://localhost:8000/authorize #http://localhost:8000/login FORGEJO_URL=http://localhost:3000 FORGEJO_CLIENT_ID= FORGEJO_CLIENT_SECRET= # сгенерируй секрет AGENT_SECRET= # Legacy/alternative names used by some images (avoid "variable not set" warnings) CROW_HOST=http://localhost:8000 CROW_AGENT_SECRET=
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Ольга Сеть Ответ

Woodpecker CI с Forgejo удобнее всего подключать через Docker Compose: отдельно поднимается server, agent и PostgreSQL, а в Forgejo создаётся OAuth application. Главная идея такая: Forgejo отвечает за репозитории и авторизацию, Woodpecker получает webhook-события и запускает pipeline на агенте.

Минимальный порядок действий:

  1. создать OAuth application в Forgejo;
  2. поднять Woodpecker server с правильным public URL;
  3. поднять Woodpecker agent с тем же shared secret;
  4. зайти в Woodpecker через Forgejo;
  5. активировать репозиторий и добавить .woodpecker.yml.

Пример фрагмента compose:

services:
  woodpecker-server:
    image: woodpeckerci/woodpecker-server:latest
    environment:
      WOODPECKER_OPEN: "true"
      WOODPECKER_HOST: "https://ci.example.ru"
      WOODPECKER_FORGEJO: "true"
      WOODPECKER_FORGEJO_URL: "https://git.example.ru"
      WOODPECKER_FORGEJO_CLIENT: "client_id"
      WOODPECKER_FORGEJO_SECRET: "client_secret"
      WOODPECKER_AGENT_SECRET: "long-random-secret"
    ports:
      - "8000:8000"

  woodpecker-agent:
    image: woodpeckerci/woodpecker-agent:latest
    command: agent
    environment:
      WOODPECKER_SERVER: "woodpecker-server:9000"
      WOODPECKER_AGENT_SECRET: "long-random-secret"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

services: woodpecker-server: image: woodpeckerci/woodpecker-server:latest environment: WOODPECKER_OPEN: "true" WOODPECKER_HOST: "https://ci.example.ru" WOODPECKER_FORGEJO: "true" WOODPECKER_FORGEJO_URL: "https://git.example.ru" WOODPECKER_FORGEJO_CLIENT: "client_id" WOODPECKER_FORGEJO_SECRET: "client_secret" WOODPECKER_AGENT_SECRET: "long-random-secret" ports: - "8000:8000" woodpecker-agent: image: woodpeckerci/woodpecker-agent:latest command: agent environment: WOODPECKER_SERVER: "woodpecker-server:9000" WOODPECKER_AGENT_SECRET: "long-random-secret" volumes: - /var/run/docker.sock:/var/run/docker.sock

Проверьте URL callback в Forgejo: он должен вести на Woodpecker, обычно что-то вроде https://ci.example.ru/authorize. Если после авторизации ошибка, почти всегда не совпал host, callback или client secret.

Для первого pipeline:

steps:
  test:
    image: node:20
    commands:
      - npm ci
      - npm test

steps: test: image: node:20 commands: - npm ci - npm test

Итог: сначала поднимите server/agent, затем проверьте OAuth и webhook. Не начинайте с сложных pipeline, пока простой job не запускается. На проде не забывайте закрыть CI за HTTPS, сделать backup БД Woodpecker и не давать агенту лишних прав, если Docker socket не нужен.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно