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.

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Billboard image

Deploy and scale your apps on AWS and GCP with a world class developer experience

Coherence makes it easy to set up and maintain cloud infrastructure. Harness the extensibility, compliance and cost efficiency of the cloud.

Learn more

πŸ‘‹ Kindness is contagious

Please leave a ❀️ or a friendly comment on this post if you found it helpful!

Okay