This plugin is a wrapper around the WSO2 Api Manager Client library that allows deployment of APIs directly from a gradle script.
To use the plugin's functionality, you will need to add the its binary artifact to your build script's classpath and apply the plugin.
The plugin JAR needs to be defined in the classpath of your build script. It is directly available on Maven Central. The following code snippet shows an example on how to retrieve it from Bintray:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.github.michaelruocco:wso2-api-publisher-plugin:1.0.4'
}
}
To use the plugin, include the following code snippet in your build script:
apply plugin: 'wso2-api-publisher'
This will add three new tasks to your gradle build:
- updateApi
- setApiStatus
- removeApi
It should be fairly obvious what these two tasks do, before you can use them you will need to configure the plugin to point at your API manager instance, you do this by providing properties to the Wso2ApiPublisherExtension as shown below.
apiPublisher {
username = 'admin'
password = 'admin'
hostUrl = 'http://localhost:9443'
sslEnabled = true //true is the default value so this always on, but it can be useful to turn off for testing
}
Once you have set these properties the plugin will be able to find the publisher APIs on your API Manager instance and login and out of the publisher. Note - if your API Manager instance is not running on the local machine on the default port of 9443 and is not using the default username and password of admin admin then these values will need to be changed.
The default values for each of the underlying properties are:
- username = 'admin'
- password = 'admin' (empty string, this means no password is required to access your embedded MySQL database)
- hostUrl = 'http://localhost:9443'
This means the example configuration above will be set by default, so there is not need to explicitly set each of those values.
The updateApi task will create an API if it does not already exist, or update an existing API if it already exists. On top of the default parameters set against the API publisher extension as outlined above, there are some other API specific properties that need to be set in order to create or update an API.
updateApi {
apiName = 'my-api'
apiVersion = 'v1'
provider = 'admin'
adiDescription = 'My API description'
tags = 'My, API'
context = '/my-api'
endpointConfig = '"{\"someJsonConfig\": {\"key1\": \"value1\"}}"'
swagger = '"{\"someMoreJsonConfig\": {\"key1\": \"value1\"}}"'
}
The setApiStatus task will set the status of an existing API.
setApiStatus {
apiName = 'my-api'
apiVersion = 'v1'
provider = 'admin'
apiStatus = 'PUBLISHED'
}
The removeApi will remove an existing API.
removeApi {
apiName = 'my-api'
apiVersion = 'v1'
provider = 'admin'
}
This project is covered with integration and unit tests. To run the tests you can run the command:
gradlew clean build
If you are trying to run the tests directly in your IDE rather than using the gradle tasks provided then you will need to set the JVM argument to point at the truststore provided in the project at:
{projectDir}/trustore/cacerts
For example:
-Djavax.net.ssl.trustStore=/Users/michaelruocco/git/github/wso2-api-publisher-plugin/truststore/cacerts
You can check the current dependencies used by the project to see whether or not they are currently up to date by running the following command:
gradlew dependencyUpdates