WSO2 mi create a pipline - wso2

We use the mi, publisher, carbon.
I want to create a pipeline for the mi. This pipeline create a car file from the code base. and deploy the car file to mi.
I try to mvn -e clean install -Dmaven.test.skip=true and deploy the car file but is not working.
I am waiting for the true car files.

A sample CI/CD pipeline for deploying CAR files in Micro Integrator has been described in the following documentation. You can use the Integration Project created in Studio to implement this pipeline.
https://apim.docs.wso2.com/en/latest/install-and-setup/setup/mi-setup/deployment/mi-cicd-vm/

Related

How to implement a CI/CD pipeline for Apache Beam/Dataflow classic templates (Python) & data pipelines

What is the best way to implement a CI/CD build process for Apache Beam/Dataflow classic templates & pipelines in Python? I have only found tutorials for this with Java that include artifact registry + Cloud Build, but rarely any in-depth tutorials for Python. I'd like to understand the "best-practice" way to develop pipelines in a Github repo and then having a CI/CD pipeline that automates staging template & kicking off job.
This Medium post was one of the more helpful high-level walkthroughs, but didn't dive in deep on getting all the tools to work together:
https://medium.com/posh-engineering/how-to-deploy-your-apache-beam-pipeline-in-google-cloud-dataflow-3b9fe431c7bb
I use a beam/dataflow pipeline with a CI/CD pipeline in GitLab. those are the steps that my CI/CD pipeline is following:
In my .gitlab-ci.yml file I pull a google/cloud-sdk Docker image which create an environment with python3.8 and the essentials of gcloud tools.
After that I run the unit tests and the integration tests of my pipeline. Once succeeded, I try to build a flex template (in your case you want to build a classic template) with the gcloud builds submit command.
Also if you want to automatically quick the job after all this, you have 2 options:
Either running the pipeline with a command line from the Docker container of your CI pipeline
Or since you already created a template for your pipeline, you can trigger it using an HTTP request for example
yes, for me, the Medium post actually covers most of it and helped me to build my CI pipeline as well.
These are the stages that I have:
Infra - Terraform for the pre-requisite GCP infra
Build - pip -r requirements.txt and anything else.
Test - Unit, integration, end-to-end. I will implement performance tests with a sample of prod data later on.
Security Checks - Secrets scanning, SAST
SonarQube for SCA
Deploy Template and Metadata (both Manual) to PoC, other environments and Prod. I use standard templates.
Run Job (Manual) - actions to run job using the DirectRunner for quick testing, and also another job using the Dataflow runner using gcloud dataflow jobs run ${JOB_NAME}....
For most steps, I used the python:3.10 image as the default (I ran into issues with installing the apache-beam dependency using Python 3.11), and google/cloud-sdk alpine for the gcloud steps.
There are other things we need to consider such as an action to stop a dataflow job and to rollback to a previously working dataflow template (need to upload multiple templates to GCS).
Hope this helps.

Google Cloud Build

Hi I am new to Google Cloud Platform. I want to build an Java application which should be built using Google Cloud Build without docker containers. And also the built application to be tested and artifact to be saved in bucket. Can anyone help me on this ?
Cloud Build is conceptually a pipeline mechanism that takes some set of files as input (commonly in some source repo) and applies a number of processing steps to the files including steps that produce output: file(s) | step-1 | step-2 | ... | step-n.
Most of the examples show Cloud Build producing Docker images but this underplays all the many things it can do.
Importantly, each of the processors (steps) must be a Docker containers but the input and output need not be docker images.
You can use javac or mvn or gradle steps to compile your code and then use the gsutil step to copy the war or jar to Google Cloud Storage.
https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/javac
https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/mvn
https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gradle
https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gsutil
Since you mentioned that you without docker container, I assume you want to deploy your application not in docker image. You can deploy your app into Google App Engine Standard. So in how to deploy into App Engine, you can refer to this documentation: https://cloud.google.com/build/docs/deploying-builds/deploy-appengine
To run the application on App Engine, you create app.yaml on your project Then you put these lines inside app.yaml
runtime: java11
entrypoint: java -Xmx64m -jar {your application artifact in jar file}```

How to send system properties using AWS device farm Jenkins plugin?

I have few system properties that my test framework use during running the automation. When I execute my tests using command line I use below command -
mvn -DPLATFORM=ios -DDEVICE_NAME='iPhone 7' -DAPP_NAME=test -DAPP_FILE="testapp.app" -DsuiteXmlFile=testng.xml test
How can I pass these parameters while running the same test using the Jenkins plugin?
Device Farm Jenkins plugin helps you to run your tests on Device Farm without going to the Device Farm console or using CLI.
Are you able to run your tests using Device Farm console. Once you are able to run your tests using Device Farm console , running throughs Jenkins is straight forward.
In DeviceFarm console, you will have to upload through app, test package , select the Device you want to run tests on. Same things can be done through the jenkins plugin.
You can add these properties by writing them to a file using a plugin. By placing the file in the ./src/test/resources directory we can include it in the jar and reference it in code.
Here is a video I authored explaining how to do that.
https://youtu.be/33xLa5BWbtQ

Deploy wso2 Carbon (*.car-files) applications from command line

We need to deploy a large amount of different carbon applications on many WSO2 ESB installations many times - release-by-release.
So for automation of this process, we want to write shell-scripts which will deploy apllications automatically.
Is there any possibility of such automation?
You should have a look to mavent-car-deploy-plugin, it offers you a way to deploy your car with such a command-line :
mvn clean deploy -Dhost=localhost -Dport=9443
And undeploy it :
mvn clean deploy -Dhost=localhost -Dport=9443 -Doperation=undeploy
see https://docs.wso2.com/display/DVS370/Deploying+a+CAR+File+with+the+Maven+Plug-In
copy your car file in the repository/deployment/server/carbonapps sub-directory of your ESB server. Il will be automatically deplyoyed.
To undeploy the App just delete the file.

How to upload project into appfactory preview?

I'm testing with wso2 appfactory. Since it's not ready to run at local server I would like to test POC with preview edition. How can I upload a sample project into appfactory online edition?
How to populate database with data?
You can create your own project and using GIT commands you can checkout it in to your local machine.
Then open it using dev studio and do the code changes and commit it using dev studio or GIT.
Following blog posts might help you.
For GIT commands
For Dev Studio
You need to create an application and do the modifications in the code repository.
Please refer WSO2 App Factory User Guide for more information.
App Factory is graduated from preview, and WSO2 App Cloud is now available here: http://wso2.com/cloud/app-cloud/
There are a few ways you can upload applications into WSO2 App Cloud:
Via GIT,
As WAR file,
From Dev Studio.