Drone CI¶
Drone CI is a Container-Native Continuous Integration platform that automates testing, building, and deployment workflows^[400-devops__04-CI-CD-Pipelines__drone.md].
Functionality and Features¶
Drone CI uses pipelines to execute tasks defined within code repositories^[400-devops__04-CI-CD-Pipelines__drone.md]. The standard open-source version of Drone CI historically included a functional limit restricting users to 5,000 builds^[400-devops__04-CI-CD-Pipelines__drone.md].
Compilation and Build Limits¶
To bypass build restrictions, it is possible to compile the Drone server binary manually using the Go programming language^[400-devops__04-CI-CD-Pipelines__drone.md].
- Open Source Build: Compiling with specific build tags allows for an open-source build without the standard limit^[400-devops__04-CI-CD-Pipelines__drone.md].
- Enterprise Build: Alternatively, a build tagged as "nolimit" can be generated for the enterprise version^[400-devops__04-CI-CD-Pipelines__drone.md].
The standard compilation command using the nolimit tag is^[400-devops__04-CI-CD-Pipelines__drone.md]:
go build -tags "nolimit" github.com/drone/drone/cmd/drone-server
Containerized Build¶
Drone CI can be built and run within a container environment. A common workflow involves using a Dockerfile to compile the server from source, ensuring the resulting environment is free of functional limits^[400-devops__04-CI-CD-Pipelines__drone.md].
This process typically involves:
1. Using a Golang image (e.g., golang:1.18-alpine) to compile the source code^[400-devops__04-CI-CD-Pipelines__drone.md].
2. Setting build flags such as -tags="nolimit" and -ldflags "-extldflags \"-static\"" during the build process^[400-devops__04-CI-CD-Pipelines__drone.md].
3. Deploying the compiled binary into a lightweight Alpine Linux container configured for data persistence and networking^[400-devops__04-CI-CD-Pipelines__drone.md].
Related Concepts¶
Sources¶
^[400-devops__04-CI-CD-Pipelines__drone.md]