A mockup of what an automated API Lifecycle could look like
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.7 KiB

#!groovy
library identifier: '3scale-toolbox-jenkins@master',
retriever: modernSCM([$class: 'GitSCMSource',
remote: 'https://github.com/rh-integration/3scale-toolbox-jenkins.git',
traits: [[$class: 'jenkins.plugins.git.traits.BranchDiscoveryTrait']]])
def service = null
node() {
stage('Checkout Source') {
checkout scm
}
stage("Prepare") {
service = toolbox.prepareThreescaleService(
openapi: [filename: "testcase-02/swagger.json"],
environment: [ baseSystemName: toolbox.generateRandomBaseSystemName(),
privateBaseUrl: params.PRIVATE_BASE_URL,
privateBasePath: "/api",
publicStagingWildcardDomain: params.PUBLIC_STAGING_WILDCARD_DOMAIN,
publicProductionWildcardDomain: params.PUBLIC_PRODUCTION_WILDCARD_DOMAIN ],
toolbox: [ openshiftProject: params.NAMESPACE,
destination: params.TARGET_INSTANCE,
image: "quay.io/redhat/3scale-toolbox:master", // TODO: remove me once the final image is released
insecure: params.DISABLE_TLS_VALIDATION == "yes",
secretName: params.SECRET_NAME],
service: [:],
applications: [
[ name: "my-test-app", description: "This is used for tests", plan: "test", account: params.DEVELOPER_ACCOUNT_ID ]
],
applicationPlans: [
[ systemName: "test", name: "Test", defaultPlan: true, published: true ],
[ systemName: "silver", name: "Silver" ],
[ systemName: "gold", name: "Gold" ],
]
)
echo "toolbox version = " + service.toolbox.getToolboxVersion()
}
stage("Import OpenAPI") {
service.importOpenAPI()
echo "Service with system_name ${service.environment.targetSystemName} created !"
}
stage("Create an Application Plan") {
service.applyApplicationPlans()
}
stage("Create an Application") {
service.applyApplication()
}
stage("Run integration tests") {
// The staging and production base URLs are computed by the shared library
def proxy = [
endpoint: service.environment.productionPublicBaseURL,
sandbox_endpoint: service.environment.stagingPublicBaseURL
]
sh """set -e +x
curl -f -k -w "ListBeers: %{http_code}\n" -o /dev/null -s ${proxy.sandbox_endpoint}/beer
curl -f -k -w "GetBeer: %{http_code}\n" -o /dev/null -s ${proxy.sandbox_endpoint}/beer/Weissbier
curl -f -k -w "FindBeersByStatus: %{http_code}\n" -o /dev/null -s ${proxy.sandbox_endpoint}/beer/findByStatus/available
"""
}
stage("Promote to production") {
service.promoteToProduction()
}
}