DEV Community

Pradeep Kumar
Pradeep Kumar

Posted on

Run Laravel Dusk Tests via Gitlab (Self-hosted) CI/CD using DigitalOcean Docker

Step 1: Create DigitalOcean (DO) Droplet

This is a fairly simple step.
From DO dashboard > Click on Create > Droplets > Marketplace > Choose Docker.

Step 2: Install Gitlab Runner

  • Login to Droplet via SSH
  • Run the following to install gitlab runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash 
Enter fullscreen mode Exit fullscreen mode
sudo apt-get install gitlab-runner 
Enter fullscreen mode Exit fullscreen mode

Step 3: Register gitlab-runner

  • Login to your self-hosted Gitlab
  • Navigate to <gitlab-url>/admin/runners
  • Copy URL and Registration Token
  • Login to Docker install via ssh
  • Run the following command to register
sudo gitlab-runner register 
Enter fullscreen mode Exit fullscreen mode

It will ask you the following questions:

Enter the GitLab instance URL (for example, https://gitlab.com/):
Enter the url you received from gitlab runner page 
Enter fullscreen mode Exit fullscreen mode
Enter the registration token:
Enter the TOKEN you received from gitlab runner page 
Enter fullscreen mode Exit fullscreen mode
Enter a description for the runner:
Enter anything to identify the runner 
Enter fullscreen mode Exit fullscreen mode
Enter tags for the runner (comma-separated):
docker 
Enter fullscreen mode Exit fullscreen mode

You can anything and this will be used later in gitlab-ci.yml file

Enter an executor:
docker 
Enter fullscreen mode Exit fullscreen mode

Here you have to enter docker

Step 4: Configure gitlab-ci.yml

  • Create a gitlab-ci.yml file in the root folder of your repository.
  • Feel free to custom the content of gitlab-ci.yml, following file is for laravel dusk tests:
stages: - test test: stage: test image: chilio/laravel-dusk-ci:php-7.3 variables: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: laravel DB_HOST: mysql DB_CONNECTION: mysql DB_DATABASE: laravel DB_USERNAME: root DB_PASSWORD: root services: - name: mysql:5.7 script: - cp .env.example .env - composer install - configure-laravel - start-nginx-ci-project - php artisan key:generate - php artisan dusk artifacts: paths: - storage/logs - tests/Browser/screenshots expire_in: 7 days when: always tags: - docker 
Enter fullscreen mode Exit fullscreen mode
  • Pay attention to tags, you must apply the tag that you have entered while registering the gitlab-runner.

Top comments (0)