How to automatically deploy asp.net core application to ec2 instance using jenkins? - amazon-web-services

I have hosted an ASP.NET Core web application on an EC2 instance using Nginx. The EC2 isntance is running on Ubuntu Server 16.04 LTS machine.
I am developing the code in windows machine and publishing the code. Then copying the files into the EC2 instance using WinSCP. The web application is running nicely and i can hit the application using postman or browser.
Now, i have decided to use jenkins for CI/CD. I have installed jenkins in the same ec2 server where my web application running. Jenkins is running in port 8080 and my web application is running in port 80. I have configured jenkins with my bitbucket repository by following this link.
Now, my jenkins server is up and running. If i commit anything in the bitbucket repository, jenkins server automatically triggers a build.
Previously, i have published the code using below command:
dotnet publish -o my-sample-site
And then copied the files from my-sample-site directory to the directory in EC2 instance. Now, i want to automatically build the asp.net core web source codes and publish the codes to the folder where my web application is running. I may have to restart the service also after changing the codes.
What should i include in the jenkins build step so that whenever bitbucket repository changes triggers build in jenkins, it will build the asp.net core source codes and then publish the codes in the directory of the EC2 instance where my web application is running.
How should i do this automatically? Any reference please. Thanks in advance.

I have set up CI/CD server using Jenkins connected to a Bitbucket repository for an ASP.NET Core Web API running in an EC2 instance. Anyone can check my article here.

Related

Deploying a web application for Selenium testing on AWS EC2

I have a web application that uses Selenium in backend to run few scripts when invoked by user. I want to deploy this web app on AWS.
Here are my findings so far:
I can have a windows EC2 instance created and then I can install tomcat, firefox and all the necessary stuff. Then using putty or any other client, I can deploy my war and start tomcat.
I can directly make use of Elastic Beanstalk and deploy my war file there itself but then, there is no windows EC2 available for beanstalk and I don't know how to install firefox there and make my application work.
What is the best way to achieve this and what steps should I follow. I want to install a specific firefox version to be able to make it run with my selenium scripts.
There are two separate things here:
Deployment of web application on AWS cloud
Run the selenium tests against your web application
According to me, you should first think of deploying a web application to AWS cloud. There are many ways by which you can get it deployed to AWS cloud with below services:
Spin a new AWS EC2 instance, install all required software and deploy the web application.
Use AWS elastic beanstalk service with either with tomcat or docker.
Use AWS ECS if you prefer docker
According to me, second option will be quick for you with tomcat environment option. If you select tomcat environment, then your platform will be Tomcat 8 Java 8 on 64bit Amazon Linux.
Now, here comes the second part. You can have below options for your browser environments.
Spin a new separate AWS EC2 instances with correct AMI and install your specific browsers on these instances.
If you prefer SaaS, then you can take a look at browserstack or SauceLabs for remote environment.
If you have CI(jenkins/travis/Circle CI), then make use of that infrastructure to luanch your tests with either option from the above.

Keep .NET core web app running on kestrel in production

I'm hosting a web app on an EC2 instance in AWS. I will have nginx or an ELB in front of my web server, but on the web server itself the .net core app will be running on kestrel with dotnet Mywebsite.dll, if I understand correctly.
Whats the best way to keep this process running, and to automatically restart it is something goes wrong and to automatically start it up on reboot?
I'm currently trying to use supervisor to manage it but its adding a fair bit of complexity just getting it all up and running on a Amazon AMI.
Is there not a built in mechanism? How do you run your .net core web apps on linux in prod?

How can automatic deploy yii2 app when Elastic Beanstalk instance is terminated and created a new instance

Currently I have setup my yii2 website on AWS Elastic beanstalk. I followed following steps :
Created Elastic Beanstalk app and environment : Platform PHP 7.0, RDS database
Created SSH connection from EC2 instance of elastic beanstalk using putty with .pem file
In Apache folder I have cloned my yii2 git repo using (sudo git clone repo_url) command
Installed composer using this link https://gist.github.com/asugai/6694502
Run command : (sudo composer install) in my repo folder
Edited common/config/main-local.php and made db connection
And run migration using (sudo php yii migrate)
Setup a domain for this elastic beanstalk app
Now I don't know how should I proceed further and I am facing following problems :
Elastic Balance loader is creating new instance and terminating current one when it fails or health goes in severe.
Due this, my all data in that instance is lost. To make it work I am doing all steps again and again manually.
How can I make my domain https (SSL certified)
How can make easy process to pull new changes from git
I already have a working site in nodeJS. which is using elastic beanstalk, elastic balance loader, RDS(postgres), S3 bucket, cloudfront for Route 53, SSL certificate (https), code pipeline, code commit. And AWSCLI at local to deploy nodeJS app.
my question is about I want to use same flow for yii2 advance app.
Can anyone please help me here?
Thanks in advance :)

AWS - Retrieve logs from my .Net Core App

I have used AWS Elastic Beanstalk to deploy a simple .Net Core app to a Windows INstance. However it is not working on AWS as it is working on my local machine. I am getting a 500 Internal Server Error but I cannot see the message/stack trace.
Trying to get the logs, I have followed this documentantion, I have logged into the EC2 instance but my application is not deployed to the inetpub\wwwroot and the logs on the C:\Program Files\Amazon\ElasticBeanstalk\logs\ are about the deploy.
How can I find out what is wrong with my application?

Where are the node.js app files installed in an AWS elastic beanstalk instance?

In an AWS elasticbeanstalk instance, where are the node.js app files deployed to? I wanted to ssh to the machine and debug some issues and wanted to check that the files were deployed correctly. I checked /var/ but didn't see an app directory there.
It's in the /tmp/deployment/application folder during deployment and then it is moved to /var/app/current.
The node logs are in /var/log/nodejs/nodejs.log