gitlab | runner | ci/cd laravel | ci/cd react | sast
tested on debian/buster
assuming a dedicated system and shell executor
grab some TOKEN from the gitlab server
SHARED: Admin area > Settings > CI/CD > Expand Runners GROUP: Gitlab Groups > (choose group) > Settings / CI/CD > Expand Runners SPECIFIC: Gitlab Projects > (choose project) > Settings / CI/CD > Expand Runners
you can also review all kinds of runners at once here
Admin area > Overview / Runners
make sure you’ve got good name resolution against the gitlab server e.g. here static one
vi /etc/hosts INTERNAL-IP GITLAB-SERVER-FQDN
and check that it is reachable
nmap -sTV -p 443 GITLAB-SERVER-FQDN
install and register a new runner
wget -O - "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | bash apt update apt install gitlab-runner rsync systemctl status gitlab-runner # enabled gitlab-runner register instance: https://GITLAB-SERVER-FQDN/ (SHARED vs. GROUP vs. SPECIFIC TOKEN) descr: runner1 tags: runner1 executor: shell
trigger a test-run from your workstation
git clone PROJECT-URL cd PROJECT/ vi .gitlab-ci.yml stages: - deploy deploy-prod: stage: deploy script: - echo TEST OK only: - master tags: - runner1 git add .gitlab-ci.yml git commit git push
notice the gitlab-runner
user got created
date ls -lF /home/ su - gitlab-runner ssh-keygen -t ed25519 cat .ssh/id_ed25519.pub
now allow that user to reach the target servers for deployment as e.g. user runner
some target host
useradd -m -s /bin/bash runner cd /home/runner/ mkdir .ssh/ cat > .ssh/authorized_keys <<EOF THE PUBLIC KEY FROM ABOVE EOF chown -R runner:runner .ssh/ chmod 700 .ssh/ chmod 600 .ssh/authorized_keys which rsync cd /var/www/ mkdir catch-all/ chown runner:runner catch-all/
record the target server host keys on the runner
back to the runner system
su - gitlab-runner ssh TARGET-SERVER -l runner
this might be required for the CI/CD builds
on the runner system as root
ver=8.1 wget https://packages.sury.org/php/apt.gpg -O /etc/apt/trusted.gpg.d/php.gpg echo "deb https://packages.sury.org/php/ `lsb_release -sc` main" > /etc/apt/sources.list.d/php.list apt update && apt install php$ver-{redis,mongodb} systemctl stop apache2 systemctl disable apache2 cd /root/ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php --install-dir=/usr/local/bin --filename=composer ls -lF /usr/local/bin/composer
as user
su - gitlab-runner composer -v
Continuous integration https://en.wikipedia.org/wiki/Continuous_integration
Migrating from Jenkins https://docs.gitlab.com/ee/ci/migration/jenkins.html
GitLab CI/CD job token https://docs.gitlab.com/ee/ci/jobs/ci_job_token.html
Install GitLab Runner https://docs.gitlab.com/runner/install/
Registering runners https://docs.gitlab.com/runner/register/
Install GitLab Runner using the official GitLab repositories https://docs.gitlab.com/runner/install/linux-repository.html
The scope of runners https://docs.gitlab.com/ee/ci/runners/runners_scope.html
GitLab Runner commands https://docs.gitlab.com/runner/commands/
Un-register gitlab-runner on Ubuntu not working https://stackoverflow.com/questions/62977329/un-register-gitlab-runner-on-ubuntu-not-working
Unregister gitlab runner https://gist.github.com/zinovyev/25f7d6095ef4cb8bfc2213e54901f6a5
GitLab Token overview https://docs.gitlab.com/ee/security/token_overview.html
A Brief History of DevOps, Part III: Automated Testing and Continuous Integration https://circleci.com/blog/a-brief-history-of-devops-part-iii-automated-testing-and-continuous-integration/
Getting started with continuous integration for Nest.js APIs https://circleci.com/blog/getting-started-with-nestjs-and-automatic-testing/
https://getcomposer.org/download/
https://tecadmin.net/how-to-install-and-use-php-composer-on-debian-11/
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-composer-on-ubuntu-20-04
https://www.hostinger.com/tutorials/how-to-install-composer