drone-gitlab-ci

command module
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 25, 2025 License: MIT Imports: 17 Imported by: 0

README

drone-gitlab-ci

logo

繁體中文 | 简体中文 | English

Lint and Testing Trivy Security Scan GoDoc codecov Go Report Card

What is drone-gitlab-ci?

drone-gitlab-ci is a CLI tool and CI/CD plugin that triggers GitLab CI pipelines from any environment. It serves as a bridge between different CI/CD platforms, enabling you to integrate GitLab CI into your existing workflows seamlessly.

Why use this?

In modern software development, teams often use multiple CI/CD platforms across different projects or services. This creates challenges when you need to:

  • Cross-Platform Integration: Trigger GitLab CI pipelines from other CI/CD systems (Drone, GitHub Actions, Jenkins, etc.)
  • Microservices Orchestration: Automatically trigger dependent service pipelines after deployment
  • Unified Pipeline Management: Centralize pipeline triggering logic across diverse infrastructure
  • Hybrid Cloud Workflows: Connect CI/CD processes across different platforms and environments
┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│   Drone CI      │     │                  │     │                 │
│   GitHub Actions│────▶│ drone-gitlab-ci  │────▶│   GitLab CI     │
│   Jenkins       │     │                  │     │   Pipeline      │
│   Local Dev     │     └──────────────────┘     └─────────────────┘
└─────────────────┘

Use Cases

Scenario Description
Drone CI → GitLab CI Use as a Drone plugin to trigger GitLab pipelines after Drone builds
GitHub Actions → GitLab CI Trigger GitLab deployments from GitHub repositories
Jenkins → GitLab CI Integrate GitLab CI into existing Jenkins workflows
Local Development Manually trigger pipelines during development and testing
Microservices Service A deployment triggers Service B pipeline automatically

Features

  • Trigger GitLab CI pipelines via API
  • Pass custom variables to pipelines
  • Wait for pipeline completion with configurable timeout
  • Support for self-hosted GitLab instances
  • Cross-platform binary (Windows, Linux, macOS)
  • Docker image available
  • Native support for Drone CI, GitHub Actions, and other CI/CD platforms

Table of Contents

Quick Start

Trigger a GitLab CI pipeline in 3 steps:

# 1. Download the binary (or use Docker)
go install github.com/appleboy/drone-gitlab-ci@latest

# 2. Set your credentials
export GITLAB_TOKEN=your-gitlab-token
export GITLAB_PROJECT_ID=your-project-id

# 3. Trigger the pipeline
drone-gitlab-ci --ref main

Installation

Download Pre-built Binaries

Download from the release page. Supported platforms:

  • Windows (amd64/386)
  • Linux (amd64/386)
  • macOS (amd64/arm64)
Install with Go
go install github.com/appleboy/drone-gitlab-ci@latest
Build from Source
git clone https://github.com/appleboy/drone-gitlab-ci.git
cd drone-gitlab-ci
make build

Configuration

GitLab Setup
1. Create a Personal Access Token

You need a GitLab token to authenticate API requests. See GitLab Token Overview.

  1. Go to GitLab → User Settings → Access Tokens
  2. Create a token with api scope
  3. Save the token securely

token

2. Get Your Project ID

Find your project ID in Settings → General → General project settings.

projectID

For more details, see Pipeline trigger tokens API.

Parameters
Parameter Flag Environment Variables Description Required Default
Host --host GITLAB_HOST, PLUGIN_HOST, INPUT_HOST GitLab instance URL No https://gitlab.com
Token --token, -t GITLAB_TOKEN, PLUGIN_TOKEN, INPUT_TOKEN GitLab access token Yes -
Project ID --project-id, -p GITLAB_PROJECT_ID, PLUGIN_ID, INPUT_PROJECT_ID GitLab project ID Yes -
Ref --ref, -r GITLAB_REF, PLUGIN_REF, INPUT_REF Branch or tag to trigger No main
Variables --variables GITLAB_VARIABLES, PLUGIN_VARIABLES, INPUT_VARIABLES Variables to pass (KEY=VALUE) No -
Wait --wait, -w GITLAB_WAIT, PLUGIN_WAIT, INPUT_WAIT Wait for pipeline completion No false
Timeout --timeout GITLAB_TIMEOUT, PLUGIN_TIMEOUT, INPUT_TIMEOUT Timeout for waiting No 60m
Interval --interval, -i GITLAB_INTERVAL, PLUGIN_INTERVAL, INPUT_INTERVAL Polling interval No 5s
Insecure --insecure, -k GITLAB_INSECURE, PLUGIN_INSECURE, INPUT_INSECURE Skip SSL verification No false
Debug --debug, -d GITLAB_DEBUG, PLUGIN_DEBUG, INPUT_DEBUG Enable debug output No false
GitHub --github GITHUB_ACTIONS, PLUGIN_GITHUB, INPUT_GITHUB Enable GitHub Actions output No false

Usage

Command Line

Basic usage:

drone-gitlab-ci \
  --host https://gitlab.com \
  --token your-token \
  --project-id 12345 \
  --ref main

With variables and wait for completion:

drone-gitlab-ci \
  --host https://gitlab.com \
  --token your-token \
  --project-id 12345 \
  --ref main \
  --variables "DEPLOY_ENV=production" \
  --variables "VERSION=1.0.0" \
  --wait \
  --timeout 30m

Enable debug mode:

drone-gitlab-ci \
  --host https://gitlab.com \
  --token your-token \
  --project-id 12345 \
  --ref main \
  --debug
Docker

Basic usage:

docker run --rm \
  -e GITLAB_HOST=https://gitlab.com \
  -e GITLAB_TOKEN=your-token \
  -e GITLAB_PROJECT_ID=12345 \
  -e GITLAB_REF=main \
  appleboy/drone-gitlab-ci

With wait and debug:

docker run --rm \
  -e GITLAB_HOST=https://gitlab.com \
  -e GITLAB_TOKEN=your-token \
  -e GITLAB_PROJECT_ID=12345 \
  -e GITLAB_REF=main \
  -e GITLAB_WAIT=true \
  -e GITLAB_DEBUG=true \
  appleboy/drone-gitlab-ci
Drone CI

Add to your .drone.yml:

kind: pipeline
name: default

steps:
  - name: trigger-gitlab
    image: appleboy/drone-gitlab-ci
    settings:
      host: https://gitlab.com
      token:
        from_secret: gitlab_token
      project_id: 12345
      ref: main
      wait: true
      timeout: 30m
      variables:
        - DEPLOY_ENV=production
        - VERSION=${DRONE_TAG}
GitHub Actions

Create .github/workflows/trigger-gitlab.yml:

name: Trigger GitLab CI

on:
  push:
    branches: [main]

jobs:
  trigger:
    runs-on: ubuntu-latest
    steps:
      - name: Trigger GitLab Pipeline
        uses: docker://appleboy/drone-gitlab-ci
        with:
          host: https://gitlab.com
          token: ${{ secrets.GITLAB_TOKEN }}
          project_id: 12345
          ref: main
          github: true
          wait: true

Development

Run Tests
make test
Build Binary
make build
Code Quality
make lint

License

MIT License - see LICENSE file for details.

Documentation

Overview

Package main provides functionality to interact with GitLab's API, specifically for creating and managing pipelines.

The Gitlab struct contains an authenticated client to communicate with the GitLab API.

Functions:

- NewGitlab: Initializes a new Gitlab client with the provided host, token, and configuration options. - CreatePipeline: Triggers the creation of a new pipeline in a specified GitLab project. - GetPipelineStatus: Retrieves the status of a specific pipeline for a given project.

Types:

- Gitlab: Contains the authenticated client for GitLab API interactions.

Dependencies:

- "crypto/tls" - "net/http" - "gitlab.com/gitlab-org/api/client-go"

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL