
Our original Jenkins job (formerly /Jenkinsfile
) is now build-aux/Jenkinsfile.full
. This builds CouchDB on main
, all of our release branches (2.*
, 3.*
, etc.) as well as any branch prefixed with jenkins-
for testing on a wide variety of supported operating systems.
Settings are as follows:
- Job name: FullPlatformMatrix (jobs shouldn't have spaces in them, because the job name is used for workspace path naming.)
- Display Name: “Full Platform Builds”
- Description: “This job builds on our master and release branches, and builds packages on all.”
- Branch sources: Github
- Credentials: a GitHub API key from wohali. These credentials are stored in the top-level Jenkins CouchDB folder on the server. The API token credentials are
user:email
and repo:status
. - URL https://github.com/apache/couchdb
- Behaviors
- Discover branches: All branches
- Filter by name (with wildcards): Include: master 2..x 3..x 4..x jenkins-
- Advanced clone behaviours:
- Fetch tags
- Clear “Shallow clone” [1]
- Clean before checkout [1]
- Prune stale remote-tracking branches
- Property strategy: All branches get the same properties
- Build Configuration
- Mode: by Jenkinsfile
- Script path:
build-aux/Jenkinsfile.pull
- Scan Repository Triggers
- Orphaned Item Strategy
- Discard old items
- Days to keep old items:
- Max # of old items to keep: 10
- Everything else set as defaults.
Other Resources
The apache/couchdb-ci repo contains the dockerfiles that we use to generate the container images used for our container-based builds. These images are hosted on Docker Hub in the following repos:
The apache/couchdb-pkg repo contains a set of helper scripts to build binary packages for Debian / CentOS / Ubuntu from the contents of a release tarball. The packaging stage of our “Full Platform Builds” pipeline clones this repo to produces the package artifacts.