All Projects → samrocketman → Jervis

samrocketman / Jervis

Licence: apache-2.0
Travis-like Jenkins job generation using Job DSL plugin groovy scripts. Reads .travis.yml and generates a job in Jenkins.

Programming Languages

groovy
2714 projects

Projects that are alternatives of or similar to Jervis

Ci Matters
Integration (comparison) of different continuous integration services on Android project
Stars: ✭ 119 (-52.02%)
Mutual labels:  automation, jenkins, travis-ci
Nagios Plugins
450+ AWS, Hadoop, Cloud, Kafka, Docker, Elasticsearch, RabbitMQ, Redis, HBase, Solr, Cassandra, ZooKeeper, HDFS, Yarn, Hive, Presto, Drill, Impala, Consul, Spark, Jenkins, Travis CI, Git, MySQL, Linux, DNS, Whois, SSL Certs, Yum Security Updates, Kubernetes, Cloudera etc...
Stars: ✭ 1,000 (+303.23%)
Mutual labels:  jenkins, travis-ci
Chef Plugin
This is jenkins plugin to run chef-client on remote host
Stars: ✭ 38 (-84.68%)
Mutual labels:  automation, jenkins
Build Harness
🤖Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more
Stars: ✭ 236 (-4.84%)
Mutual labels:  jenkins, travis-ci
Skyhook
Parses webhooks and forwards them in the proper format to Discord.
Stars: ✭ 263 (+6.05%)
Mutual labels:  jenkins, travis-ci
Jenkins Bootstrap Shared
Jenkins as immutable infrastructure made easy. A repository of shared scripts meant to be used as a git submodule. Packing Jenkins, plugins, and scripts into immutable packages and images.
Stars: ✭ 270 (+8.87%)
Mutual labels:  automation, jenkins
Cize
🔌 Continuous integration with the simplest solution
Stars: ✭ 100 (-59.68%)
Mutual labels:  jenkins, travis-ci
ci-testing-python
Sample Microservice App in Python for Testing using pytest, uber/doubles, tox on CI servers like Jenkins and Travis CI using Docker + Docker-Compose for test environment.
Stars: ✭ 37 (-85.08%)
Mutual labels:  jenkins, travis-ci
Ci Detector
Detect continuous integration environment and get information of current build
Stars: ✭ 138 (-44.35%)
Mutual labels:  jenkins, travis-ci
Generator Jekyll Starter Kit
🚀 Jekyll Progressive Web App Generator.
Stars: ✭ 139 (-43.95%)
Mutual labels:  automation, travis-ci
Ng Demo
🦴 Bare Bones Angular 10 and Angular CLI Tutorial
Stars: ✭ 154 (-37.9%)
Mutual labels:  jenkins, travis-ci
docker-fastpath
Only Build Your Docker Images Once
Stars: ✭ 52 (-79.03%)
Mutual labels:  jenkins, travis-ci
Containerization-Automation
Study and Use of Containers and Automation Tools
Stars: ✭ 45 (-81.85%)
Mutual labels:  jenkins, travis-ci
Node Build Monitor
A Build Monitor written in Node.js, which supports several build services and can be easily extended.
Stars: ✭ 336 (+35.48%)
Mutual labels:  jenkins, travis-ci
rabbitChat
A Chat-Server/Chat-System based on AMQP protocol(RabbitMQ) + AMQP Python Client(PIKA) + Websockets(SockJS) + Async Python Server(Tornado)
Stars: ✭ 53 (-78.63%)
Mutual labels:  jenkins, travis-ci
Jenkins Ue4
Automated Unreal Engine 4 Project Builds
Stars: ✭ 206 (-16.94%)
Mutual labels:  automation, jenkins
Travis Scripts
🙅 DEPRECATED
Stars: ✭ 119 (-52.02%)
Mutual labels:  automation, travis-ci
Nevergreen
🐤 A build monitor with attitude
Stars: ✭ 170 (-31.45%)
Mutual labels:  jenkins, travis-ci
Mkdkr
Make + Docker + Shell = CI Pipeline
Stars: ✭ 225 (-9.27%)
Mutual labels:  jenkins, travis-ci
Grizzly
A cross-platform browser fuzzing framework
Stars: ✭ 234 (-5.65%)
Mutual labels:  automation

Jervis: Jenkins as a service

Maven Central Release Build Status Coverage Status

  • Project status: released to maven central.
  • Currently Targeted platforms:
    • Jenkins server host: Linux and Mac OS X (Windows compatible)
    • Jobs on clients: Linux only (Multi-platform capable)
What is Jervis?

Documentation

The library API is also fully documented. To generate the latest developer docs execute the following command.

./gradlew groovydoc

The documentation can be found in build/docs/groovydoc.

Provided examples

More about Jervis

Jervis is a combination of some letters in the words Jenkins and Travis: JEnkins tRaVIS. Jenkins is a continuous integration tool which is typically installed on premises. Travis is a hosted, distributed continuous integration system used by many open source projects. Both Jenkins and Travis have paid and enterprise offerings.

Jervis uses Travis-like job generation using the Job DSL plugin and groovy scripts. It reads the .jervis.yml file of a project and generates a job in Jenkins based on it. If .jervis.yml doesn't exist then it will fall back to using the .travis.yml file.

For development planning and other documentation see the Jervis wiki. If you wish to stay up to date with the latest Jervis news then please feel free to watch this repository because I use the issue tracking and wiki for planning.

Why Jervis?

What is Jervis attempting to scale? Let's talk about some scale bottlenecks that have been overcome by Jenkins (formerly Hudson) and its community.

The scaling issue is a main bullet. The solution for the issue is in a sub-bullet.

  • Developers are challenged with integrating work, building often, and even deploying often.
    • Jenkins was invented.
  • Jenkins infrastructure is strained when too many agents are in one server and too many jobs are queued up on a daily basis. A single Jenkins server struggles to perform all requested builds in a timely manner. Jenkins also suffers from single point of failure as a lone server.
    • Multi-master Jenkins was invented. This provides redundancy for the server. Throughput for daily build capacity is improved.
  • Jenkins jobs suffer from a lot of duplicate code. It is difficult to fix a bug in one job and have it propagate to other jobs.
    • Jenkins Job DSL plugin was invented. Configuration through code is now possible. Multiple jobs can be generated and regenerated with the same code using templates in a domain specific language.
  • Onboarding new projects in a Jenkins installation can be difficult. Typically engineers will get together and discuss the needs of the project and then configure a Jenkins job for the needs of the project. For enterprises with a very large number of projects it is typically hard to scale number of build engineers to match with the large number of projects which require onboarding into the build ecosystem.
    • Jervis is being invented. Job generation through convention over configuration. Scaling the onboarding for a project by creating and abiding by conventions in how jobs are generated. This is for large scale job generation and project onboarding. Jervis is taking lessons learned from a seasoned build engineer and attempting to fill this gap in the Jenkins ecosystem.

Set up

To include this library for use in your Job DSL plugin scripts you only need include it in your build tool.

Maven

<dependency>
  <groupId>net.gleske</groupId>
  <artifactId>jervis</artifactId>
  <version>1.7</version>
  <type>pom</type>
</dependency>

Gradle

Your Job DSL scripts should have a build.gradle file which has the following contents.

apply plugin: 'maven'

repositories {
    mavenCentral()
}


configurations {
    libs
}

dependencies {
    libs 'net.gleske:jervis:1.7'
    libs 'org.yaml:snakeyaml:1.26'
}

task cleanLibs(type: Delete) {
    delete 'lib'
}

task libs(type: Copy) {
    into 'lib'
    from configurations.libs
}

defaultTasks 'clean', 'libs'
clean.dependsOn cleanLibs

Then execute ./gradlew libs to assemble dependencies into the lib directory of the Jenkins workspace. Don't forget to add lib to the classpath. This must be done before you configure your Jenkins job to execute Job DSL scripts.

Interactive debugging

Groovy Console is built into the Gradle file.

./gradlew console

Other development commands

Generate code coverage reports.

./gradlew clean check jacocoTestReport

Build the jar file.

./gradlew clean jar

Sign build jars and sign archives.

./gradlew clean check signArchives

See also RELEASE.md.

Local SonarQube Analysis

See SonarQube README.

License

Copyright 2014-2020 Sam Gleske

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].