Installing GitLab Runner on Debian
GitLab Runner is the executor for CI/CD pipelines in GitLab. To install it on Debian, follow these steps:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install -y curl gnupg2 software-properties-common
sudo apt-get install gitlab-runner
sudo gitlab-runner register
and provide the GitLab instance URL (from Project Settings → CI/CD → Runners) and registration token. Choose an executor (e.g., docker
or shell
) based on your needs—docker
is recommended for isolating environments.Creating a .gitlab-ci.yml File
The .gitlab-ci.yml
file in your project root defines the CI/CD pipeline structure. A basic example for testing includes:
stages:
- test
test_job:
stage: test
image: node:14 # Use a Docker image matching your tech stack
script:
- npm install # Install dependencies
- npm test # Run tests (replace with your test command, e.g., `pytest` for Python)
artifacts:
reports:
junit: test-results.xml # Generate JUnit-compatible test reports for GitLab integration
This configuration defines a test
stage with a job that installs dependencies, runs tests, and uploads results as an artifact.
Configuring Automated Test Reports
To visualize test results in GitLab, generate reports using tools like JUnit (for Java/JavaScript) or Mochawesome (for Playwright). For Playwright, add this to your package.json
:
"scripts": {
"test": "npx playwright test --reporter=mochawesome"
}
Then, update .gitlab-ci.yml
to save the report:
test_job:
stage: test
image: node:14
script:
- npm install
- npm test
artifacts:
paths:
- report/ # Directory where Mochawesome saves HTML reports
reports:
junit: test-results.xml
Reports will appear in the GitLab CI/CD interface under the job’s “Artifacts” tab.
Using Docker for Environment Consistency
Docker ensures tests run in isolated, reproducible environments. Modify your .gitlab-ci.yml
to use a Docker image (e.g., node:14
for JavaScript projects) and optionally include services (e.g., PostgreSQL for database tests):
test_job:
stage: test
image: node:14
services:
- postgres:13 # Spin up a PostgreSQL container for integration tests
variables:
POSTGRES_DB: testdb
POSTGRES_USER: testuser
POSTGRES_PASSWORD: testpass
script:
- npm install
- npm test
This setup is ideal for testing applications that depend on external services.
Triggering the CI/CD Pipeline
The pipeline runs automatically when you push code to the repository (or merge a pull request, if configured). To trigger it manually, go to your GitLab project’s CI/CD → Pipelines page and click “Run Pipeline.” You can also configure rules to control when the pipeline runs (e.g., only on master
branch or scheduled intervals).
Best Practices for Optimization
node_modules
) to speed up builds:cache:
paths:
- node_modules/
/etc/gitlab-runner/config.toml
to avoid overloading the host system..gitlab-ci.yml
.