Woodpecker CI, тізбекте бірде-бір SaaS жоқ
Прага не Ковильяндағы бір шағын машинадағы сервер мен агенттер, өз ұстаханаңызға жалғанған - конвейердің ешбір бөлігі сіз атай алатын инфрақұрылымнан шықпайтын CI нұсқасы.
Бұл кімге арналған
Қалғанының бәрін өзінде орналастырып қойған команда
Ұстахана сіздікі, тіркелім сіздікі, орналастыру нысаны сіздікі - ал 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 минуттары онда ештеңе тұрмайды.
Woodpecker CI-ды Docker Compose арқылы қалай орнату керек
Бір хосттағы сервер мен агент, бұл мысалда GitHub-қа жалғанған. Ұстаханаңыз солардың бірі болса, ұстахана блогын Gitea, Forgejo, GitLab немесе Bitbucket айнымалыларына ауыстырыңыз.
-
Docker пен Compose орнатыңыз
sudo apt install docker.io docker-compose-v2 sudo systemctl enable --now dockerЕкі контейнер де, конвейердің әр қадамы да осы демонда жүреді, сондықтан хостқа керек жалғыз тәуелділік осы.
-
Ұстаханаңызда OAuth қосымшасын тіркеңіз
# GitHub: Settings -> Developer settings -> OAuth Apps -> New OAuth App # Homepage URL: https://ci.example.com # Authorization callback: https://ci.example.com/authorizeWoodpecker пайдаланушыларды ұстахана арқылы кіргізеді және сол рұқсатпен репозиторийлерді оқиды, сондықтан ол қайтаратын клиент идентификаторы мен құпиясы серверге керек нәрсе. Қолдау көрсетілетін әр ұстаханада соған сәйкес форма бар.
-
Ортақ агент құпиясын жасаңыз
openssl rand -hex 32Сервер мен агенттер бір-бірін осы жолмен аутентификациялайды, ал Woodpecker құжаттамасы оны жасау үшін дәл осы команданы атайды. Оны compose файлынан тыс ұстаңыз - қасындағы .env файлына қойыңыз.
-
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 ұстаханада тіркелгісі бар кез келген адамды кіргізеді - командаңыз тіркелген бойда оны өшіріңіз.
-
Іске қосыңыз
docker compose up -d docker compose logs -f woodpecker-agentАгент серверге ортақ құпиямен жалғанады және бірінші байланыста өзін өзі тіркейді. Ол аутентификация қатесінде айналып қалса, екі құпия сәйкес келмейді - көбіне .env файлы оқылмағандықтан.
-
Конвейер қосыңыз
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 образы кездейсоқ әкелгенді | Бір рет орнатқан кез келген құралдар тізбегін, лицензияны немесе сынақ деректері жиынтығын |
Бұл сіздің хостыңызда қалай іске қосылады
Конвейер не істейтінін айтыңыз
Бүгін орындайтын ең ауыр тапсырма, олардың қаншасы қатар жүруі керек және ол контейнер образдарын құрастыра ма. Хостты болжамсыз өлшеуге осы жеткілікті.
Біз машинаны тапсырамыз
Прага немесе Ковильян, root қатынасы және статикалық IPv4, он минуттан аз уақытта. Runner әлдеқашан образдың ішінде болса, өз образыңызды әкеліңіз.
Осы беттегі қадамдық нұсқаулықты орындаңыз
Бұл өндірушінің реттілігі, блог жазбасынан емес, оның қазіргі құжаттамасынан алынған, әрі таза хостта бірнеше минут алады.
Суретке түсіріп алыңыз, содан соң екіншісін қосыңыз
Бірінші конвейер жасыл болған бойда снапшот жасаңыз, сонда келесі машина нөлден құру емес, қалпына келтіру болады. Пул бір хостты алыпқа айналдырумен емес, хост қосумен өседі.
Неліктен бізді таңдайды
- 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
Бастауға дайынсыз ба?
- Ай сайын төлем
- Қосу ақысы жоқ
- Байлау жоқ