Skip to content

Commit

Permalink
Move the plugin documentation from Wiki to GitHub (#26)
Browse files Browse the repository at this point in the history
* Remove the obsolete developer documentation

* README: Move the plugin summary and implementation details to the top

* Move changelog from Wiki to GitHub

* Reference changelogs from README

* Use GitHub as a source of plugin documentation

* Update README.md

Co-Authored-By: Jeff Thompson <37345299+jeffret-b@users.noreply.github.com>

Co-authored-by: Jeff Thompson <37345299+jeffret-b@users.noreply.github.com>
  • Loading branch information
oleg-nenashev and jeffret-b committed Dec 26, 2019
1 parent af7c645 commit 10c74ce
Show file tree
Hide file tree
Showing 3 changed files with 120 additions and 33 deletions.
52 changes: 20 additions & 32 deletions README.md
@@ -1,8 +1,27 @@
# Jenkins Bouncy Castle API Plugin

[JENKINS-35291](https://issues.jenkins-ci.org/browse/JENKINS-35291)
[![Jenkins Plugin](https://img.shields.io/jenkins/plugin/v/bouncycastle-api.svg)](https://plugins.jenkins.io/bouncycastle-api)
[![GitHub release](https://img.shields.io/github/release/jenkinsci/bouncycastle-api-plugin.svg?label=changelog)](https://github.com/jenkinsci/bouncycastle-api-plugin/releases/latest)
[![Jenkins Plugin Installs](https://img.shields.io/jenkins/plugin/i/bouncycastle-api.svg?color=blue)](https://plugins.jenkins.io/bouncycastle-api)

This plugin provides a stable API to Bouncy Castle related tasks.
Plugins using Bouncy Castle should depend on this plugin and not directly on Bouncy Castle.

## Implementation

The implementation of this plugin does not expose any classes from Bouncy Castle, only JCA, allowing plugins to not depend on the specifics of Bouncy Castle.

Later some other actions would have to be taken in order to fully solve this situation, like having one version of the plugin for each version of Bouncy Castle, etc.

## Release notes

* See [GitHub releases](https://github.com/jenkinsci/bouncycastle-api-plugin/releases/latest) for recent versions
* See the [changelog archive](./docs/CHANGELOG.md) for version `2.17` and before

## Motivation

Dependency to multiple Bouncy Castle versions from jenkins core and plugins is causing problems due to the binary incompatibility between versions, the different supported algorithms, etc.
See [JENKINS-35291](https://issues.jenkins-ci.org/browse/JENKINS-35291) for the full context.

On Jenkins core 1.648, Bouncy Castle was bumped from version `1.47` to `1.54` as a result of a change in ``instance-identity`` module
* ``instance-identity-module`` bumped Bouncy Castle from `1.47` to `1.54`: [pom.xml (v 1.4)](https://github.com/jenkinsci/instance-identity-module/blob/instance-identity-1.4/pom.xml#L32) -> [pom.xml (v 1.5.1)](https://github.com/jenkinsci/instance-identity-module/blob/instance-identity-1.5.1/pom.xml#L33)
Expand All @@ -24,35 +43,4 @@ A possible solution to this problem would to create a plugin (this plugin) from
* Register BC as a JVM security provider in order to allow other plugins to use JCA API with BC algorithms.
* Provide an API to do common tasks like PEM Encoding/Decoding ensuring its stability among BC versions.

The implementation of this plugin does not expose any classes from BC, only JCA, allowing plugins to not depend on the specifics of BC.

Later some other actions would have to be taken in order to fully solve this situation, like having one version of the plugin for each version of BC, etc.

This plugin provides an stable API to Bouncy Castle related tasks. Plugins using Bouncy Castle should depend on this plugin and not directly on Bouncy Castle. See also this [plugin's wiki page][wiki]


# Environment

The following build environment is required to build this plugin

* `java-1.6` and `maven-3.0.5`

# Build

To build the plugin locally:

mvn clean verify

# Release

To release the plugin:

mvn release:prepare release:perform -B

# Test local instance

To test in a local Jenkins instance

mvn hpi:run

[wiki]: http://wiki.jenkins-ci.org/display/JENKINS/Bouncy+Castle+API+Plugin
99 changes: 99 additions & 0 deletions docs/CHANGELOG.md
@@ -0,0 +1,99 @@
# Release Notes (archive)

### New versions

See [GitHub Releases](https://github.com/jenkinsci/bouncycastle-api-plugin/releases) for recent versions.

### 2.17

Release date: (Aug 21, 2018)

- [JENKINS-53074](https://issues.jenkins-ci.org/browse/JENKINS-53074) -
Bouncy Castle library (bcpkix-jdk15on) updated to 1.60.
- Jenkins 2.60.3+ and Java 8 are now required.

### 2.16.3

Release date: (Jun 6, 2018)

- [JENKINS-50915](https://issues.jenkins-ci.org/browse/JENKINS-50915) -
Bouncy Castle library (bcpkix-jdk15on) updated to 1.59

### 2.16.2

Release date: (Jul 24, 2017)

- [JENKINS-45621](https://issues.jenkins-ci.org/browse/JENKINS-45621) -
Bouncy Castle library (bcpkix-jdk15on) updated to 1.57

### 2.16.1

Release date: (Apr 4, 2017)

- [JENKINS-41978](https://issues.jenkins-ci.org/browse/JENKINS-41978) -
Fixed `NullPointerException` when a PEM file couldn't be read.
- Reduce startup log level from `INFO` to `FINE`.

### 2.16.0

Release date: (Jul 27, 2016)

**MAJOR IMPROVEMENT:** [JENKINS-36923](https://issues.jenkins-ci.org/browse/JENKINS-36923)
- Move bcpkix dependency from jenkins-war to bouncycastle-api plugin.
*Requires Jenkins 2.16 or newer*

### 1.648.3

Release date: (Jun 17, 2016)

*Bugfix*[JENKINS-36035](https://issues.jenkins-ci.org/browse/JENKINS-36035) - Register
Bouncy Castle before any plugin is started

### 1.648.2

Release date: (Jun 15, 2016)

*Improvement*[JENKINS-35696](https://issues.jenkins-ci.org/browse/JENKINS-35696) - 
Provide a mechanism to register Bouncy Castle on the build agents. 
Registration can be performed by calling `InstallBouncyCastleJCAProvider.on()`

### 1.648.1

Release date: (Jun 14, 2016)

*Bugfix*[JENKINS-35661](https://issues.jenkins-ci.org/browse/JENKINS-35661) - When
reading PCKS8 PrivateKey it should be possible to obtain a KeyPair with `toKeyPair()`

### 1.648

Release date: (Jun 8, 2016)

Release for Jenkins versions \>= 1.648 with Bouncy Castle 1.54

### 1.0.3

Release date: (Jun 17, 2014)

*Bugfix*[JENKINS-36035](https://issues.jenkins-ci.org/browse/JENKINS-36035) - 
Register Bouncy Castle before any plugin is started

### 1.0.2

Release date: (Jun 15, 2014)

*Improvement*[JENKINS-35696](https://issues.jenkins-ci.org/browse/JENKINS-35696) - 
Provide a mechanism to register Bouncy Castle on the build agents. 
Registration can be performed by calling `InstallBouncyCastleJCAProvider.on()`

### 1.0.1

Release date: (Jun 14, 2016)

*Bugfix*[JENKINS-35661](https://issues.jenkins-ci.org/browse/JENKINS-35661){.external-link} - When
reading PCKS8 PrivateKey it should be possible to obtain a KeyPair with `toKeyPair()`

### 1

Release date: (Jun 7, 2016)

First release of the API supporting Jenkins versions \>= 1.609 and \< 1.648 with BC 1.47
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -40,7 +40,7 @@
<description>
This plugin provides an stable API to Bouncy Castle related tasks.
</description>
<url>http://wiki.jenkins-ci.org/display/JENKINS/Bouncy+Castle+API+Plugin</url>
<url>https://github.com/jenkinsci/bouncycastle-api-plugin</url>
<licenses>
<license>
<name>The MIT license</name>
Expand Down

0 comments on commit 10c74ce

Please sign in to comment.