🛠 Laminar: примитивный сервер Continuous Integration

Тот самый случай, когда от отчаяния начал изобретать очередной среднемасштабный велосипед, но остановился на полпути из-за вовремя найденной подходящей альтернативы. Laminar CI — редкий в нынешнее время написанный на C++ проект, состоящий из простого сервера и ещё более простого клиента. Установка и настройка в действительности занимает не дольше пяти минут.


Прежде всего опишу свои требования к серверу CI:


В итоге у меня удалось скрестить Laminar и Gitea и заставить их работать вместе на одной машине.

В каждом проекте в хуке post-receive у меня лежит такой скрипт:

#!/usr/bin/env bash

ln -sf /usr/local/bin/laminar.run /var/lib/laminar/cfg/jobs/${GITEA_REPO_NAME}.run
export LAMINAR_HOST="10.0.0.6:28001"
JOB_ID=$(laminarc queue ${GITEA_REPO_NAME} REPO_NAME=${GITEA_REPO_NAME})
echo "Watch your job status at https://ci.domain.tld/jobs/$(echo ${JOB_ID} | sed 's/:/\//g')"

В скрипте же /usr/local/bin/laminar.run у меня записано следующее:

#!/usr/bin/env bash

set -e

if [[ ${REPO_NAME} = 'blog' || ${REPO_NAME} = 'rcmd.space' ]]; then
    git clone git@git.rcmd.space:rcmd/${REPO_NAME}.git
else
    git clone --depth 1 git@git.rcmd.space:rcmd/${REPO_NAME}.git
fi

cd ${REPO_NAME} && sudo /usr/bin/make

Каждый проект у меня начинается с мейкфайла, но далеко не каждый проект нуждается в полном копировании истории.

В планах сделать возможной сборку на удалённых машинах, но пока что я очень доволен и тем, что есть.

Tue, 9 Feb 2021 16:24:24 +0300


RSS // Telegram // Статистика //