Deploying OpenAPI specs on apigee - openapi

we have 300+ REST APIs for which we are in processing of creating OpenAPI 3 (yaml) specs to be deployed in apigee finally. since the number of api's are bit high, are there any automated ways of validating and specs and deploying them in apigee or other best practices from similar projects

Few options to consider from my experience.
All 300+ API don't need to be hosted as a single API proxy so break your API spec on proxy level.
When making any changes in API spec a good way to keep the review process separate from APIGEE and use the traditional GIT model. Create a repo for API spec in Git/Bitbucket. Here an API designer can make changes in the API spec and submit a PR. In this, you can have validations test for swagger that is available open-source that will check for any validations. Once PR is passed from variations and approved by all the reviewers then you will be sure of quality and format of the API spec.
Next step can be the deployment of the API spec into APIGEE that can be automated using Jenkins CI/CD. I haven't done this part personally but it is possible to do.
Thanks,
Alok

Keep in mind Apigee's limit of a maximum of 50 deployed proxies. http://apigee.googleapis.com/organizations/environments/deployments
You may want to group your APIs into Apigee proxies & utilize proxy endpoints. https://docs.apigee.com/api-platform/reference/api-proxy-configuration-reference#proxyendpoint
Use the Maven Apigee plugin & GitLab CI to have an automated way of deploys.
https://github.com/apigee/apigee-deploy-maven-plugin
please, let me know if you have any questions.
thanks, regards,

Related

Require deployments to succeed before merging API REST

I'm working on a GitHub Entreprise Project and in my approach of automating some branches policy configuration, I wanted to use GitHub REST API to automatically :
Require a pull request before merging
Allow specified actors to bypass required pull requests
Require status checks to pass before merging
Restrict who can push to matching branches
Require deployments to succeed before merging
All of these point succedded using the Update branch protection API REST but the last point.
It seems that the REST API doesn't make it possible to check this point.
Does anyone know if there is a hidden way to do that with API REST or GitHub CLI integrated to GitHub Action ?
Thanking you for any help :)

Kubernetes Preview environments

I would like to ask what people use to provision an ephemeral preview environment in AWS EKS for your service under test. Also in addition, I am curious to know how you provision any dependent services (such as Database).
E.g. I am working on a back-end service and would like to deploy an isolated ephemeral version of this service packaged from my feature branch, including the database. Furthermore, I would also like copy of a front-end service in my isolated environment to test my back-end.
Any thoughts would be appreciated
Thanks
Sachin
You can roll your own solution: by wiring together your own CI/CD (Jenkins, CircleCI, BuildKite, Github Actions, etc) solution to trigger building and deploying of a preview environment by tying in to webhooks on your source repository. This would have to include your building of the modified code, then deploying that code to some staging environments, then of course seeding those environments with some type of data.
There is a bit of nuance to getting this right. You should check out https://ephemeralenvironments.io/ which is a good template of what needs to go in to these environments.
A lot of other folks use services that provide this as a SaaS platform, Shipyard.build, Release, and Velocity.tech are a few of your options.
Disclaimer: I'm on the Operations team at Shipyard
Hope this helps!

Keep admin and frontend deployments in sync using Azure pipelines

We have been tripped up twice recently as our development output has increased.
We have a; backend services, an Admin SPA site and a number of frontend applications including native apps. All in different repos
We also have a fully automated CI/CD pipelines for everything that works fantastically.
What has happened recently is the public applications have gotten ahead of the Admin SPA which is making the team look bad.
Has anyone seen a solution that requires minimum input for developers - the more I can rely on automation the better.
The goal is to keep feature deployments in concert
Tanks
So the plan is to go down versioning with Semantic versioning and a route on admin that returns a json response with the version number.
The build and deploy for admin takes in the version and returns it.
The deploy for reliant apps has a script that queries admin before starting.
There is still a bit of manual work for the developers but it is manageable.
Thanks #Bruno

Bluemix API management service APIs

I am looking for Bluemix API management apis to move apis through different environments as a part of devops process. I also want to setup same set of APIs for multiple tenants where each API proxy to a different backend. I could not find any such APIs documented.
Any workarounds, approaches or suggestions are most welcome.
API Connect (new version of API Management) which is also available on Bluemix includes a new Toolkit focused in scenarios for DevOps. Here it is its documentation and APIs: https://www.ibm.com/support/knowledgecenter/SSMNED_5.0.0/com.ibm.apic.toolkit.doc/rapim_cli_command_summary.html?lang=en

Adding custom status page to Jenkins instance

I want to use the REST API that comes with Jenkins to generate a status page which shows all my projects, the environments they're currently deployed to, latest build versions etc.
Jenkins provides a nice REST API to expose this info however consuming the service is limited by cross domain restrictions. I have looked briefly at creating a CORS filter for my Jenkins instance but its overkill for what I'm trying to achieve.
Can someone tell me if its possible to modify my Jenkins WAR (instance) and add some HTML which i can then modify to call the RESTful endpoints? Ideally i want something whereby i can simply navigate to http://myjenkins/project-status and see the required information.
I assume your status page has some Javascript executing XMLHttpRequests. You could drop your status page files into $JENKINS_HOME/userContent directory on the master. This way they are served by Jenkins and should be able to access Jenkins REST APIs.