Woodpecker CI, тізбекте бірде-бір SaaS жоқ

Прага не Ковильяндағы бір шағын машинадағы сервер мен агенттер, өз ұстаханаңызға жалғанған - конвейердің ешбір бөлігі сіз атай алатын инфрақұрылымнан шықпайтын CI нұсқасы.

Tier III сертификатталған ISO 9001 ISO/IEC 27001 ISO 14001 GDPR талаптарына сәйкес

Бұл кімге арналған

Қалғанының бәрін өзінде орналастырып қойған команда

Ұстахана сіздікі, тіркелім сіздікі, орналастыру нысаны сіздікі - ал CI ғимараттан әлі шығатын жалғыз қадам болып қалады, дәл сол бастапқы кодты ұстайтын қадам.

Тоқтап қалған Drone инсталляциясы

Woodpecker - әрі қарай жүрген және Apache-2.0 күйінде қалған форк. Көшу шағын; сұрақ - оны неде іске қосу.

CI-дың қызықсыз болғанын қалайтын шағын команда

Екі контейнер, репозиторийге бір YAML файлы, үйренетін басқару жазықтығы жоқ және бақылайтын минуттық есептегіш жоқ. Оған тек тұратын орын керек.

Бұл пішін нені береді

  • Бір хосттағы екі контейнер ретіндегі сервер мен агент, CI инфрақұрылымдық жоба болудан қалатындай шағын.
  • Woodpecker қолдайтын кез келген ұстахана - GitHub, GitLab, Gitea, Forgejo немесе Bitbucket - оның ішінде сол желіде өзіңіз орналастырғаны да.
  • Бір машина жетпей қалғанда кейінірек бөлек хост ретінде қосылатын, бәрі сол серверде аутентификацияланатын агенттер.
  • Басынан аяғына дейін Apache-2.0, сондықтан конвейердегі ештеңе жеткізушінің тегін тарифті сақтау шешіміне тәуелді емес.
  • AS204057 ішіндегі статикалық IPv4: ұстахана вебхугі мен орналастыру нысаны сенетін бір адресі болады.
  • Жұмыс каталогы мен Docker қабаттар кеші үшін жергілікті NVMe, конвейерлер арасында жылы.

Конвейер шын мәнінде не істейтініне қарай өлшенген

Woodpecker-дің өзі жеңіл: сервер - Postgres-ке бағыттамайынша кірістірілген дерекқоры бар шағын Go процесі, ал агент - контейнерлерді іске қосатын бақылаушы. Хостты құрастыру жейді, кез келген басқа runner-дегідей - сондықтан машинаны ең ауыр тапсырмаға қарап өлшеңіз және екінші конвейерді жылдам ететін қабаттар кешіне дискіден орын беріңіз. Төмендегі бастапқы өлшем шағын команда үшін сервер мен агентті бірге қормен көтереді. Жалғыз адал ескерту: тұрақты айлық хост push жоқ аптада да сол ақшаны тұрады, ал хостингтегі CI минуттары онда ештеңе тұрмайды.

Алғашқы раннер
15.00
айына

Тапсырыс беру
сервер және бір агент бірге
2 vCPU
4 GB RAM
64 GB NVMe
1 статикалық IPv4
1 апталық сақтық көшірме кіреді
Топ раннері
19.96
айына

Тапсырыс беру
сервер және бірнеше қатарлас workflow
4 vCPU
8 GB RAM
120 GB NVMe
1 статикалық IPv4
1 апталық сақтық көшірме кіреді
Жүктелген пул
39.90
айына

Тапсырыс беру
сервердің қасындағы бөлек агент хосты
8 vCPU
16 GB RAM
240 GB NVMe
1 статикалық IPv4
1 апталық сақтық көшірме кіреді

Woodpecker CI-ды Docker Compose арқылы қалай орнату керек

Бір хосттағы сервер мен агент, бұл мысалда GitHub-қа жалғанған. Ұстаханаңыз солардың бірі болса, ұстахана блогын Gitea, Forgejo, GitLab немесе Bitbucket айнымалыларына ауыстырыңыз.

  1. Docker пен Compose орнатыңыз

    sudo apt install docker.io docker-compose-v2
    sudo systemctl enable --now docker

    Екі контейнер де, конвейердің әр қадамы да осы демонда жүреді, сондықтан хостқа керек жалғыз тәуелділік осы.

  2. Ұстаханаңызда OAuth қосымшасын тіркеңіз

    # GitHub: Settings -> Developer settings -> OAuth Apps -> New OAuth App
    # Homepage URL:     https://ci.example.com
    # Authorization callback: https://ci.example.com/authorize

    Woodpecker пайдаланушыларды ұстахана арқылы кіргізеді және сол рұқсатпен репозиторийлерді оқиды, сондықтан ол қайтаратын клиент идентификаторы мен құпиясы серверге керек нәрсе. Қолдау көрсетілетін әр ұстаханада соған сәйкес форма бар.

  3. Ортақ агент құпиясын жасаңыз

    openssl rand -hex 32

    Сервер мен агенттер бір-бірін осы жолмен аутентификациялайды, ал Woodpecker құжаттамасы оны жасау үшін дәл осы команданы атайды. Оны compose файлынан тыс ұстаңыз - қасындағы .env файлына қойыңыз.

  4. Compose файлын жазыңыз

    services:
      woodpecker-server:
        image: woodpeckerci/woodpecker-server:v3
        ports:
          - 8000:8000
        volumes:
          - woodpecker-server-data:/var/lib/woodpecker/
        environment:
          - WOODPECKER_OPEN=true
          - WOODPECKER_HOST=${WOODPECKER_HOST}
          - WOODPECKER_GITHUB=true
          - WOODPECKER_GITHUB_CLIENT=${WOODPECKER_GITHUB_CLIENT}
          - WOODPECKER_GITHUB_SECRET=${WOODPECKER_GITHUB_SECRET}
          - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
      woodpecker-agent:
        image: woodpeckerci/woodpecker-agent:v3
        command: agent
        restart: always
        depends_on:
          - woodpecker-server
        volumes:
          - woodpecker-agent-config:/etc/woodpecker
          - /var/run/docker.sock:/var/run/docker.sock
        environment:
          - WOODPECKER_SERVER=woodpecker-server:9000
          - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
    volumes:
      woodpecker-server-data:
      woodpecker-agent-config:

    Бұл - әзірлеушілердің мысалы. WOODPECKER_HOST - пайдаланушылар мен вебхуктер жететін жалпыға ортақ URL, 8000 порты - веб-интерфейс, ал 9000 - агенттер жалғанатын gRPC порты. WOODPECKER_OPEN=true ұстаханада тіркелгісі бар кез келген адамды кіргізеді - командаңыз тіркелген бойда оны өшіріңіз.

  5. Іске қосыңыз

    docker compose up -d
    docker compose logs -f woodpecker-agent

    Агент серверге ортақ құпиямен жалғанады және бірінші байланыста өзін өзі тіркейді. Ол аутентификация қатесінде айналып қалса, екі құпия сәйкес келмейді - көбіне .env файлы оқылмағандықтан.

  6. Конвейер қосыңыз

    when:
      - event: push
    
    steps:
      - name: smoke
        image: alpine:latest
        commands:
          - cat /etc/os-release
          - echo "built on $CI_MACHINE"

    Мұны .woodpecker.yaml ретінде коммит жасап, вебхук жасалуы үшін репозиторийді веб-интерфейсте қосыңыз да, push жасаңыз. Әр қадам - контейнер, сондықтан агентке Docker сокеті керек.

Ресми құжаттамамен салыстырылған күні 2026-08-15 — дереккөзді оқу

Біз кім емеспіз

  • Біз Woodpecker жобасы емеспіз. Woodpecker CI - Apache-2.0 астындағы тәуелсіз жоба, әрі мұндағы ештеңе онымен мақұлданбаған. Біз ол жүретін машинаны сатамыз.
  • Бұл бетте біз сіздің ұстаханаңызды орналастырмаймыз. Қасындағы Gitea, Forgejo немесе өзің басқаратын GitLab - қиын емес екінші сервер, бірақ бұл басқа өлшем және басқа ұсыныс.
  • Біз сіздің конвейерлеріңізді жазбаймыз. YAML сіздікі; хост, желі және адрес - біздікі.
  • Woodpecker әдепкіде сіз үшін басқарылмайды. Екі контейнерді өзіңіз іске қосасыз немесе біздің әкімшілендіру қызметімізді қосасыз, сонда біз оларды жаңартып, резервтік көшірмемен ұстаймыз.
  • Docker сокетін агентке қосу конвейер қадамдарына хост үстінен өте үлкен билік береді. Бұл ой солай жұмыс істейді, әрі бұл агентті басқа ештеңе істемейтін машинада ұстау себебі.

Топтар кеш байқайтын бөліктер

  • WOODPECKER_AGENT_SECRET екі режимде жұмыс істейді. Серверде және барлық агентте бірдей мән - жүйелік токен; әр агентке жеке токен агентті алдымен интерфейсте тіркеуден шығады, ал хостқа бірден көп команда жете алатын болғанда сізге керегі осы.
  • Әр құпия айнымалының _FILE түрі де бар, сондықтан құпияны compose файлында немесе ортада ұстаудың орнына қосылған файлдан оқуға болады.
  • Кірістірілген дерекқор бастауға жарайды және сонда да ең алдымен көшіретін нәрсе болып қалады. Инсталляция біреу үшін маңызды бола бастамай тұрып серверді Postgres-ке бағыттаңыз.
  • WOODPECKER_OPEN=true дегені жалғанған ұстаханадағы кез келген тіркелгі кіре алады деген сөз. Бірінші күні ыңғайлы, отызыншы күні қате.
  • Агентке Docker сокеті керек, өйткені әр қадам - контейнер, ал бұл іс жүзінде конвейерге сол хостта root береді. Агент хостын қызықсыз әрі бөлек ұстаңыз.
  • WOODPECKER_HOST ұстахана шынымен жете алатын URL болуы керек, ішкі емес: вебхук дәл соған жасалады, ал мұндағы жеке адрес ешқашан іске қосылмайтын конвейерлер береді.

Провайдердегі CI минуттары мен өз runner-іңіз

Провайдер хостингіндегі CI минуттарыDCXV-дегі раннер
Не үшін төлейсізЖоба өмір сүріп тұрғанда әр тапсырманың әр минуты үшінТұрақты айлық хост үшін, конвейер сол айда не істесе де
Баяулаған құрастыруБаяу күйінде қалған әр айда қымбатырақ түседіАртық ештеңе тұрмайды - машина әлдеқашан төленген
Docker қабаттар кешіӨзіңіз жүктеп салып, кері жүктемесеңіз, әр тапсырмада суықЖергілікті NVMe-де жылы, тапсырмалар арасында да, күндер арасында да
ПараллельдікКөтеретін тариф сатысыӨз конфигурация файлыңызда қоятын сан
Checkout қайда түседіОртақ машиналар паркіне, көбіне бекіте алмайтын аймаққаПрага не Ковильяндағы бір машинаға, Кипр келісімшарты бойынша
Шығыс адресЕштеңемен рұқсат ете алмайтын үлкен ортақ диапазонAS204057 ішіндегі бір статикалық IPv4, рұқсат етуге өзіңіздікі
Машина нені ұстай аладыRunner образы кездейсоқ әкелгендіБір рет орнатқан кез келген құралдар тізбегін, лицензияны немесе сынақ деректері жиынтығын

Бұл сіздің хостыңызда қалай іске қосылады

1

Конвейер не істейтінін айтыңыз

Бүгін орындайтын ең ауыр тапсырма, олардың қаншасы қатар жүруі керек және ол контейнер образдарын құрастыра ма. Хостты болжамсыз өлшеуге осы жеткілікті.

2

Біз машинаны тапсырамыз

Прага немесе Ковильян, root қатынасы және статикалық IPv4, он минуттан аз уақытта. Runner әлдеқашан образдың ішінде болса, өз образыңызды әкеліңіз.

3

Осы беттегі қадамдық нұсқаулықты орындаңыз

Бұл өндірушінің реттілігі, блог жазбасынан емес, оның қазіргі құжаттамасынан алынған, әрі таза хостта бірнеше минут алады.

4

Суретке түсіріп алыңыз, содан соң екіншісін қосыңыз

Бірінші конвейер жасыл болған бойда снапшот жасаңыз, сонда келесі машина нөлден құру емес, қалпына келтіру болады. Пул бір хостты алыпқа айналдырумен емес, хост қосумен өседі.

Неліктен бізді таңдайды

  • Tier III сертификатталған нысандар, нысан SLA 99,982 %
  • Өз желісі, AS204057, IPv4 және IPv6
  • Орташа жауап беру уақыты шамамен 10 минут болатын 24/7/365 қолдау
  • Кипрдегі компания, ЕО юрисдикциясы, 2007 жылдан GDPR-ге сәйкестік

FAQ

- Woodpecker CI дегеніміз не?

Drone-нан форк жасалған, Apache-2.0 астындағы жеңіл CI қозғалтқышы, сервер және бір не бірнеше агент ретінде жүреді. Конвейердің әр қадамы - контейнер, конвейерлер репозиторийдегі YAML файлымен сипатталады, ал кіру сіздің ұстаханаңыз арқылы өтеді. GitHub, GitLab, Gitea, Forgejo және Bitbucket қолдау табады, оның ішінде өзіңіз орналастыратын даналар да

- Woodpecker CI-ды қалай орнатамын?

Docker Compose - құжатталған жол: 8000 портын ашатын бір woodpecker-server контейнері және Docker сокеті қосылған бір woodpecker-agent контейнері, openssl rand -hex 32 арқылы жасалған құпияны бөліседі, оған қоса ұстаханаңыздың OAuth клиент идентификаторы мен құпиясы. Әзірлеушілердің compose файлы және айналасындағы қадамдар осы бетте

- WOODPECKER_AGENT_SECRET дегеніміз не және оны қалай жасаймын?

Бұл - сервер мен агенттер аутентификацияланатын ортақ құпия, ал Woodpecker құжаттамасы оны жасау үшін openssl rand -hex 32 дегенді атайды. Бәрінде бірдей мән қою одан жүйелік токен жасайды; агентті алдымен интерфейсте тіркеу сол агентке жеке токен береді, ал хостқа бірден көп команда жете алатын болғанда сізге керегі осы. Әр құпия айнымалының қосылған файлдан мән оқитын _FILE түрі де бар

- Woodpecker-ге қандай өлшемдегі сервер керек?

Бағдарламалық жасақтаманың өзі жеңіл - сервер Postgres-ке бағыттамайынша кірістірілген дерекқоры бар шағын Go процесі, ал агент контейнерлерді іске қосатын бақылаушы. Машинаны құрастыру жейді. 2 vCPU, 4 ГБ және 64 ГБ NVMe шағын команда үшін сервер мен агентті бірге ұстайды; конвейерлер кезекке тұра бастаған бойда бөлек агент хостына көшіңіз

- Агентке Docker сокеті неге керек?

Өйткені конвейердің әр қадамы - агент хост демонында іске қосатын контейнер. Бұл конвейер қадамдарына сол машинада іс жүзінде root береді, ал бұл қате баптау емес, ой солай - әрі бұл агентті басқа ештеңе істемейтін хостта ұстау себебі, екінші машина айына 15 EUR тұрғанда бұл арзан

- Менің конвейерлерім ешқашан іске қосылмайды. Не болды?

Он жағдайдың тоғызында мәселе WOODPECKER_HOST-та. Бұл мән - ұстахана вебхук жасағанда қолданатын жалпыға ортақ URL, сондықтан мұндағы ішкі адрес сау көрінетін, бірақ ешқашан push алмайтын инсталляция береді. Екінші жиі кездесетіні - WOODPECKER_OPEN=true: бұл іске қосылу мәселесі емес, бірақ ұстаханаңыздағы кез келген тіркелгі кіре алады дегенді білдіреді - бірінші күні ыңғайлы, отызыншы күні қате

Егер сізге көмек қажет болса немесе қосымша сұрақтарыңыз болса, менеджерлерге хабарласыңыз немесе қолдау қызметіне келесі мекенжай бойынша жазыңыз support@dcxv.com

Бастауға дайынсыз ба?

Бұлттық серверлер 15 €/айдан бастап
  • Ай сайын төлем
  • Қосу ақысы жоқ
  • Байлау жоқ