πŸ›  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 // Бтатистика