Automated API testing project - Where to deploy framework - CI/CD Pipeline - continuous-integration

Automation Test Suite Architecture
Hi. The project I am working on has the following micro service architecture:-
1 - HTTPS web app Frontend UI Client (REACT JS)
2 - Backend Java API microservice (connected to a Postgres database)
I have created a Cypress UI frontend UI testing project within the REACT JS frontend web app project.
I have created a separate repo project for the automated API testing framework i.e. this is a standalone project (it is not part of the backend Java project repo). I have decided to use Cypress for API testing.
The CI/CD pipeline will deploy the frontend and backend projects to two separate AWS instances running Linux operating systems.
Questions:-
My question is where is it best to deploy the automated API testing framework repo using the CI/CD pipeline? If it is deployed to the same server as the backend API then running the API tests from the same server would not be integration testing would it?
Is it best to deploy the automated API testing framework repo to its own separate AWS instance server?
Or is it best to deploy the automated API testing framework repo to either the frontend project AWS instance or the backend API micro service AWS instance?
Thanks.

Related

Deploy Spring Boot from Azure App Service Deployment Centre and Github

I am trying to connect Azure App Service to my Spring Boot application on Github. The applications runs fine locally. I get the following error from the app service deployment centre logs.
Azure Error
My project structure.
project structure
Thanks,
Chris

How do I connect my Azure frontend static web app to my Azure backend app service via endpoints?

For a learning project we've built a frontend and backend application. The frontend "application" is just a bunch of linked html/css/javascript files. The backend application is a spring boot / maven / java project with some endpoints.
When I run the backend application locally I am able to send a GET-request successfully using Postman. Now we've hosted the backend application via Azure and I have no idea how I can send a GET-request, I don't know which url to use.
After I get this to work I'd like to connect front- and backend application using these url's.
As you can run the backend application in your local environment successfully, you have to follow the below steps to configure and deploy the spring boot web app to azure app service:
In a terminal window, run the following command to configure your web app with the Azure Maven Plugin
./mvnw com.microsoft.azure:azure-webapp-maven-plugin:1.14.0:config
Then, at the Command Prompt, run this maven command and set the default configurations by typing ENTER and Confirm (Y/N) => 'y' and the configuration will gets completed.
Once you've done with the above steps, run
mvn azure-webapp:deploy to publish the web app to Azure.
Your webapp URL will be displayed in the output.
I don't know which url to use?
You can use that URL from maven console output and access the web-app.
Also Refer this SO thread to know how to deploy frontend and backend to the same app service plan.

Deploy my spring boot application into google cloud computer engine

I got a query to ask you all. I am looking for guides that help me deploy my spring boot application on google cloud computer engine, I type in my instance IP address when I test my spring boot application I unable to access it in REST API.
May I know do you have any guides or steps for me to follow to deploy successfully in google cloud computing engine. Why do I need to deploy in computer engine is because I deployed my angular at it and I deploy it both it seems that my angular project being replaced by my spring boot application.
Codelabs GCP / Spring series has deployment tutorials:
https://codelabs.developers.google.com/spring/
GCP has some "Getting Started" tutorials you can use here:
https://cloud.google.com/java/docs/
where the specific one for deploying a java app to GCE is here:
https://cloud.google.com/java/docs/tutorials/bookshelf-on-compute-engine
But the basic steps are as follows:
Write your Spring app
Build your Spring app
Run / test your jar locally
Push your jar to a location in Storage
Create a startup script for your GCE instance
Create a new GCE VM which uses your startup script using Console, Deployment API, or gcloud tool
After that, you need to ensure you have the proper network rules in place to be able to access your API publicly. If you do not wish to learn how to use GCE, I would suggest you look into using App Engine instead because then you do not need to learn how to deploy and instead can concentrate on your api. Here is a guide to do that

Will AWS work with Spring Boot and React?

I'm trying out local development with Spring Boot and React where I run mvn spring-boot:run (this runs on http://localhost:8080) for the Spring server, then I run npm start (this runs on http://localhost:3000) for the React client. My knowledge is that React is the front facing component that clients will talk to and then Spring will be what React interacts with for back-end operations.
Will a setup like this work similarly in a AWS setup like AWS Elastic Beanstalk? I am confused because most of what I read up involves passing the .jar or .war to AWS to run Spring but how would a setup work for when React is the front facing component?
-Thanks!
You could deploy your Spring Boot Uber Jar to AWS Beanstalk then run an npm build to create your React bundled application and deploy that to AWS S3. You will need to change some app settings to point to the correct (Beanstalk) server and make sure your AWS S3 settings are correct. There are examples within AWS documentation.

Angular2 application with springboot using maven

I am new to Springframework. I created a Springboot application and expose rest services. Now I want to consume my rest services in angular2. I am not sure how to create folder structure for my application. Should I create angular2 app in src/main/resources folder using angular cli? or as I am exposing rest services so should I create a separate angular project and consume the services? But if user this approach it will run on two different ports on localhost and I get CrosOrigin error.
In production I will deploy the application on same server. It will be a one website.
One more point I am using Maven and STS tool suit to create springboot application.
For a Spring-Boot novice using AngularJS you might be checking out JHipster (which actually is a combination of these two projects), which might serve you with some best practices.
Currently based on AngularJS 1 - it's not Angular2 yet - however they're busy porting it to version 2 (see progress, see this branch).
Alternatively there's also a guide on how to create a standalone Spring-Boot application with AngularJS (1).
I find some sample code but even in Springboot application you have to run spring and angular application on two different ports on local host. So the best way to solve the problem is to create two application expose services in spring boot and use in angular client side. While running on local use enable CORS.
Another way is to use JHipster. They recently release JHipster 4 which support angular 2.

Resources