Giter VIP home page Giter VIP logo

shipkit's Introduction

Shipkit

Build Status

Documentation

Imagine

You will be more productive if your releases are fully automated and happen on every change. You will build great product if you can focus on code & features, but not on the release overhead. Shipkit will make it happen. Shipkit is a toolkit for shipping it.

Every team should be empowered to develop with rapid velocity, frictionless releases and semantic versioning just like we do it in Mockito. Shipkit enables Mockito to automatically publish new versions to 2M Mockito users!

Fully automated releases are only the first part of the journey...

Imagine the world where you call pull in a new version of some Open Source library and not worry if it breaks compatibility. Imagine that you can submit a pull request to some project, have it reviewed timely, and have the new version with your fix available to you in minutes after your PR is merged. Imagine that for any dependency you consider upgrading, you can view its neatly and consistently maintained release notes. Imagine that you can set up practical Continuous Delivery automation in your project in minutes, by using a well behaving and documented Gradle plugin. Imagine that you can focus on code and features while the release management, versioning, publishing, release notes generation is taken care for you automagically.

This is the goal of "Shipkit" project.

Customers

Using Shipkit? Submit a pull request and add your project to the list!

Help us!

If the vision of the project connects with you help us!!!

  • Open a new GitHub ticket to start the conversation. We love feedback, brainstorming and discussions.
  • Drop a comment to one of the existing "help wanted" tickets, and tell us that you are interesting in implementing it.
  • Try out Shipkit in your project and give feedback
  • If you like emails, join the mailing list, but be warned that we rarely use emails, and prefer GitHub tickets.
  • Spread the word about Shipkit, let us know about other projects with similar goals.

Features

Currently, Shipkit offers Gradle plugins for automating releases of Java libraries and Gradle plugins. Basic use case is simple: You have code that wants to be delivered to your customers, Shipkit has tools to help you out:

  • automatic version bumps in "version.properties" file - don’t waste time managing your version manually
  • automatically generated release notes in markdown - offer your customer clean information what changed and why
  • automatic including contributors in pom.xml - appreciate the community
  • release notes that highlight each individual contributor by name - build engaged community
  • avoiding publishing binaries if nothing changed - respect your customers’ time
  • automatic shipping to Bintray and Maven Central - use every opportunity to give your product to the hands of customers
  • keeping secure tokens safe - masks sensitive values from logging and error messages from underlying tools like git
  • and all that in a sweet little package, fully integrated, neatly automated, easy to roll out

For details see "How Shipkit Works?"

Quick start

Add Gradle plugin:

plugins {
  // TODO: Use latest version from https://plugins.gradle.org/plugin/org.shipkit.java
  id "org.shipkit.java" version "2.0.0" // use 1.0.12 if you still need Java 6/7 and/or Gradle 2/3 support
}

Initialize:

./gradlew initShipkit

Perform release:

./gradlew performRelease

For more and detailed information see docs/getting-started.md

History

  • 2014, August - we set up automated continuous delivery for Mockito project, every merged pull requested produced release notes and new version in Maven Central. We still do it today in Mockito!
  • 2016, November - we pushed out the release automation toolkit to a separate project in GitHub, called "mockito-release-tools". We really needed to do that! As much as useful the toolkit was to drive Mockito releases, we needed to make it reusable, well documented, and packaged as a separate binary.
  • 2017, February - Marcin Stachniuk joins the team, implements automatic fetching of contributors from GitHub and starts working on automatic e2e testing of library clients.
  • 2017, March - Shipkit mentioned in DevoxxUS'17 conference in San Jose, "Great tools for engineers: even cleaner tests with Mockito 2" talk (video)
  • 2017, March - Wojtek Wilk joins the team, implements release avoidance when binaries aren't changed in comparison to previous release, starts driving API compatibility validation and Shipkit dogfooding.
  • 2017, April - we found a neat name for our project: "Shipkit", a toolkit for shipping it! We registered the domain: http://shipkit.org
  • 2017, May - there are 5 contributors in total, we expanded the vision of the project, and currently working on killer features like: automated e2e testing with library consumers + automated pushes of version upgrades #85, A/B testing of build results when upgrading dependencies.
  • 2017, June - "Ship every change to production!" presentation at Software Architecture conference in Santa Clara, CA (abstract).
  • 2017, June - Szczepan includes information about Shipkit in his presentation at Gradle Summit conference in Palo Alto, CA. (abstract, slides, video)
  • 2017, July - Shipkit presented at Confitura '17 conference in Warsaw (abstract, slides, video)
  • 2017, July/August - Shipkit presentations at JUG meetups in Poland: all abstracts, Krakow (slides), Wroclaw (slides), and Bielsko-Biala (slides).
  • 2017, October - Shipkit mentioned at JavaOne '17 conference in San Francisco in 2 talks:
    • "You Deserve Great Tools: Commit-to-Production Automation at LinkedIn" (summary, video, slides)
    • "You Deserve Great Tools: Mockito 2 for Cleaner Tests and Enhanced Productivity" (summary, slides). There was no video taken at JavaOne but this talk was recorded at DevoxxUS'17 conference (video).
  • 2017, November - Shipkit mentioned at QCon '17 conference in San Francisco:
    • "CI/CD at scale: lessons from LinkedIn and Mockito" talk (slide clip, video)
  • 2017, December - 1.0 release! See the release notes.
  • 2018, February - Shipkit 2.0, upgrade to Java8 and Gradle4. 2.0.0 is 100% compatible with 1.0.12 feature-wise, the only change is minimum Java+Gradle version requirement (#624)
  • 2018, March - we started working on our Q2 milestone, a set of improvements that make Shipkit more compelling for new projects.

Want to include your event? Submit a pull request!

Plans

  • 2018, Q3 - Make Shipkit the standard tool for Gradle plugin CI/CD (#255)
  • 2018, Q1-Q4 - work on getting the community adopt Shipkit while adding CI/CD features
  • 2019, support OSS and enterprise in transition into CI/CD model

shipkit's People

Contributors

mockitoguy avatar epeee avatar shipkit-org avatar wwilk avatar mstachniuk avatar nagrock avatar stefma avatar szpak avatar anicos avatar magneticflux- avatar slq avatar janpetryk avatar jhoglin avatar rkotkiewicz avatar mureinik avatar arturskowronski avatar jpkrohling avatar micd avatar tonit avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.