<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Saurav Adhikari</title>
    <description>The latest articles on DEV Community by Saurav Adhikari (@ersauravadhikari).</description>
    <link>https://dev.to/ersauravadhikari</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F479760%2F398c7f1a-31fd-4252-9bc7-b0867b21dec1.jpg</url>
      <title>DEV Community: Saurav Adhikari</title>
      <link>https://dev.to/ersauravadhikari</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ersauravadhikari"/>
    <language>en</language>
    <item>
      <title>Getting Mentorship from Historical and Popular Figures with AI: An Entertaining Glimpse into the Future</title>
      <dc:creator>Saurav Adhikari</dc:creator>
      <pubDate>Wed, 29 Mar 2023 04:35:10 +0000</pubDate>
      <link>https://dev.to/ersauravadhikari/getting-mentorship-from-historical-and-popular-figures-with-ai-an-entertaining-glimpse-into-the-future-54j8</link>
      <guid>https://dev.to/ersauravadhikari/getting-mentorship-from-historical-and-popular-figures-with-ai-an-entertaining-glimpse-into-the-future-54j8</guid>
      <description>&lt;p&gt;The advancement of artificial intelligence has opened up a world of possibilities, including the ability to revive popular figures from history and have conversations with them. As a tech enthusiast, I decided to explore this capability by building a software that creates personality of famous people. The results were not only entertaining but also thought-provoking, giving me a glimpse into the future of human-AI interaction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ih8ZDYf4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/46xrgddcnxqo3y3zwgyh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ih8ZDYf4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/46xrgddcnxqo3y3zwgyh.png" alt="Image description" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using sophisticated natural language processing algorithms (ChatGPT API), I created mentor version of Jesus, Steve Jobs, Osho, and Jeff Bezos. These personalities were chosen because of their iconic status and relevance in our contemporary culture. As expected, the answers that the AI personalities provided were a mixture of humor, wisdom, and personal opinion, making them seem almost human-like.&lt;/p&gt;

&lt;p&gt;Talking to the AI mentor version of Jesus was an enlightening experience. One particular question I asked Jesus was, "Shall I go to war or to church?" His response was both thought-provoking and inspiring. He reminded me that as a follower of Christ, it is important to prioritize love and peace above all else. While war may be necessary in certain situations, it should never be the first option. Instead, we should seek guidance from God and the Holy Spirit to determine if the path of forgiveness and peace is possible.&lt;/p&gt;

&lt;p&gt;Jesus also emphasized the importance of attending church and nurturing our relationships with God and our community. In a world that can often feel chaotic and divisive, the power of fellowship and worship cannot be understated. And, as Jesus reminded me, in Heaven, there is only love and worship.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Q. "Shall I go to war or to church?"&lt;br&gt;
A. "My child, it is important to remember that the foundation of our faith is love and peace. While there are times when war may be necessary to protect oneself or others from harm, it should always be a last resort. Instead, I encourage you to seek guidance from the Holy Spirit and discern whether the path of peace and forgiveness can be pursued. As for attending church, it is important to make time for fellowship with your community and nurturing your relationship with God. In Heaven, we do not know of war or violence, only eternal love and worship."&lt;br&gt;
During my conversation with AI Jesus, I asked him a pressing question: How can I profit from the AI bubble? The answer I received was not what I expected, but it was profound nonetheless. Jesus emphasized the importance of using our talents and resources to help others and to spread love and compassion, instead of pursuing material wealth at the expense of others. As someone who preached about the dangers of greed, Jesus reminded me that true fulfillment comes from selflessness and generosity, rather than from accumulating riches.&lt;/p&gt;

&lt;p&gt;Q. Dear lord, I have a question for thy. How do I profit off of the AI bubble?&lt;br&gt;
A. My child, profiting off the suffering of others goes against the very principles I have taught. Material wealth fades away, and greed can lead one down a path of destruction. Instead, focus on using your talents and resources to improve the lives of those around you, and to spread love and compassion. Remember, it is easier for a camel to go through the eye of a needle than for a rich person to enter the kingdom of God.&lt;br&gt;
Steve Jobs, on the other hand, was known for his entrepreneurial spirit and innovative thinking. When asked about the value of a college education versus starting a startup, the AI Personality reflected on his own experience and gave insightful advice. The AI's response showcased Jobs' signature ability to think outside the box and encouraged the user to weigh the pros and cons of each option before making a decision.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DBsDhjhr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oawzek1pgq118qs9obh2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DBsDhjhr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oawzek1pgq118qs9obh2.png" alt="Image description" width="720" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is another interaction where I asked, the mentor AI version of Steve Job, to write me a question to ask to Jesus, here is what he responded.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Q. Give me an example of question I can ask to jesus?&lt;br&gt;
A. Well, as a mentor, I can offer advice on various topics related to business and innovation, but I'm not really qualified to advise on spiritual matters. However, if you are interested in exploring questions related to faith and religion, some possible questions to ask Jesus could include: How can we better love and serve others? What is the most important commandment? How can we find peace and comfort amidst the challenges of life? How can we deepen our relationship with God? These questions may offer a starting point for reflection and discussion.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AI Personality of Jeff Bezos, the founder of Amazon, was also fascinating to interact with. Bezos' AI gave practical advice on how to succeed in the world of entrepreneurship, highlighting the importance of hard work, dedication, and innovation. The AI's responses were clearly influenced by Bezos' own experiences, making the conversation seem more authentic.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Q. Should I start a startup or go to college?&lt;br&gt;
A. That's an interesting question. As the founder of Amazon, I didn't complete my college education, but that doesn't mean it's not crucial for you. I believe it ultimately depends on your goals, passions, and priorities. Both have their own advantages and disadvantages.&lt;br&gt;
Starting a startup can give you hands-on experience, an opportunity to learn about marketing, networking, and the entrepreneurship ecosystem. However, it also requires a lot of time, effort, and money. Moreover, it does not guarantee success, and you may face a lot of challenges.&lt;br&gt;
On the other hand, college education can provide you with a broad range of knowledge and skills, which can be beneficial while starting a startup or in corporate jobs. It also gives you access to diverse communities, mentors, and career opportunities. However, it may not necessarily guarantee success either, and it can be expensive.&lt;br&gt;
So, my advice to you would be to evaluate both options and determine what is more aligned with your values, goals, and aspirations. And remember, whichever path you choose, be passionate, committed, curious, and open to learning and adapting.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_3c6u0RU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a0ul2vqohpc52sr9bic6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_3c6u0RU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a0ul2vqohpc52sr9bic6.png" alt="Image description" width="720" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, there are limitations to the technology. While the AI provided interesting responses, they were limited to the programming they had received. It's important to remember that these AI personalities are not the actual personalities, but rather a simulation of their thoughts and beliefs. Nonetheless, the experience of talking to these AI personalities was a glimpse into the future of human-AI interaction and an entertaining way to learn about the views of historical figures.&lt;/p&gt;

&lt;p&gt;In conclusion, building AI Personality of famous personalities was a fun and engaging way to explore the potential of AI. It's exciting to think about how this technology will continue to evolve, opening up new possibilities for communication, education, and entertainment. While there are still many challenges to overcome, the ability to revive historical figures with AI chatbots is a promising step towards a more advanced and interactive future.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>go</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>4 Ways of Deploying Web Apps in 2020</title>
      <dc:creator>Saurav Adhikari</dc:creator>
      <pubDate>Fri, 02 Oct 2020 03:44:53 +0000</pubDate>
      <link>https://dev.to/ersauravadhikari/4-ways-of-deploying-web-apps-in-2020-1a55</link>
      <guid>https://dev.to/ersauravadhikari/4-ways-of-deploying-web-apps-in-2020-1a55</guid>
      <description>&lt;p&gt;As the years in the calendar add up, we see a growing number of people pouring their ideas into web pages. The people we mean may or may not be familiar with the technicalities of web designing and publishing and thus, might be stuck with quite a few problems while setting up their platform (website). What hosting service to use? How to set up DNS and SSL? And most importantly, how to deploy web-apps? Here today, we are going to discuss and compare different platforms for deploying such apps and find the one that is most suitable for you! &lt;br&gt;
For starters, let’s look at the options you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Regular hosting (Digital Ocean, AWS, GCP) + Jenkins&lt;/li&gt;
&lt;li&gt;GitHub Actions/Bitbucket Pipelines + Heroku&lt;/li&gt;
&lt;li&gt;Travis-CI/Circle-CI&lt;/li&gt;
&lt;li&gt;Fully automated cloud platforms&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Regular cloud hosting + Jenkins
&lt;/h2&gt;

&lt;p&gt;Jenkins is one of the biggest horsemen of the CI/CD platform. It is an automated CI/CD software (of course, right?) that works on a Master Agent Architecture. So what is the Master/Agent? Well, an agent is just a fancy way of saying a software, installed on a machine that is used to coordinate [and bind] different builds. Jenkins uses one master which connects and co-ordinates between all of the available agents. So what machines can you use for such tasks? Most commonly, virtual machines (VMs) that contain dockers are preferred, since it is easier to do, however, dockers are not mandatory. Some others that can be used are a Physical Server or even an ephemeral container running on Kubernetes. &lt;/p&gt;
&lt;h4&gt;
  
  
  Pros:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;It is highly customizable.&lt;/li&gt;
&lt;li&gt;It is highly flexible since it has more than 1.5K plugins. So for any test case you want to try, chances are someone has already done it for you :D.&lt;/li&gt;
&lt;li&gt;Even if you are the first to run a particular test case, you can build your own plugin and/or shared library =&amp;gt; A friendly community.&lt;/li&gt;
&lt;li&gt;It supports faster builds and cached modules. Because it doesn’t force us to use docker images, unlike its competitors, anything within the service can be cached for later use, thereby making it faster than many of its rivals.&lt;/li&gt;
&lt;li&gt;It is not limited to the systems based on Linux. We can use Windows’ systems as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Cons:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;It is an unmanaged service.&lt;/li&gt;
&lt;li&gt;You need to ensure at regular intervals that the server is running, has SSL locked down, has security patches, or has internet access.&lt;/li&gt;
&lt;li&gt;You need to manually solve all the operational issues. For instance, if something goes wrong, it is upon you to trace it and fix it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Bitbucket Pipelines/ Github Actions with Heroku
&lt;/h2&gt;

&lt;p&gt;Bitbucket’s Pipeline is another platform similar to Jenkins, but a bit easier to use. Bitbucket Pipeline works in a similar way to Github Actions; with the Git version control system. You can choose either depending on which platform you use.&lt;br&gt;
The pipeline is a feature you do not want to miss here. With Pipeline, most of the SDLC (Software Development Life Cycle) can be completely automated. So an easier alternative to Jenkins (though with limited features), would be Bitbucket Pipeline.&lt;br&gt;
Bitbucket uses Docker images to run your builds. The images can also be varied in each step, thereby making it easier to separate each step of SDLC.&lt;/p&gt;
&lt;h4&gt;
  
  
  Pros:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;It is, of course, easier than doing it manually, or even using Jenkins (if your concern is easiness).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Cons:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;It is slower than Jenkins since it uses Docker images.&lt;/li&gt;
&lt;li&gt;It can’t share artefacts across Pipelines.&lt;/li&gt;
&lt;li&gt;Pipeline works off a docker image. Hence you get a fresh image each time it is updated, so unless cached, no data will be preserved from the previous pipeline. However, even if cached, the data will be lost after 7 days. This means any files that are not brought from a remote location will be lost, which doesn’t fare well for large tests (with an immense number of inputs or baseline fields.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h6&gt;
  
  
  Below is a step-by-step example of how you can use Bitbucket Pipelines + Heroku to do automated Continuous Integration and Deployment:
&lt;/h6&gt;

&lt;ol&gt;
&lt;li&gt;Go to bitbucket.com and create a new repo (you may skip this if you already have a repo for your project)
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffycvesc3vq5h9h8onleg.png" alt="Creating a repo on BitBucket"&gt;
&lt;/li&gt;
&lt;li&gt;Push your project's code to bitbucket.&lt;/li&gt;
&lt;li&gt;Set up a cloud provider, Which in my case is going to be Heroku. [New to Heroku as well? No worries, just follow through to the end…)

&lt;ul&gt;
&lt;li&gt;Go to Heroku.com → Create Project:
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxk5flsyrd9xzi3k7axtc.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;Set Up the Environment variables within Heroku: (Project → Settings → Config Vars):
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl7p73c271vr78kjgrvkv.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;Once you make your Project compatible with Heroku (Check &lt;a href="https://dev.toHeroku%20Docs"&gt;https://devcenter.heroku.com/categories/reference&lt;/a&gt;), Let’s Configure the Bitbucket Settings.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Within Bitbucket → Project → Repository Settings → Repository Variables, add all your Environment variables for the app.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frby2kugliozmrn2awseo.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;dd the following two variables on bitbucket:
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;HEROKU_APP_NAME: &amp;lt;'Name of Your Heroku App'&amp;gt;&lt;br&gt;
HEROKU_API_KEY: &amp;lt;'API Key for Your Heroku Account'&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can get the API Key from Heroku → Profiles → API Key&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setting Up the Pipeline:

&lt;ul&gt;
&lt;li&gt;Go to Bitbucket → Pipelines → select your language and continue from there.
&lt;em&gt;Here's an example:&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;python:3.7.2&lt;/span&gt;

&lt;span class="na"&gt;pipelines&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
 &lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
   &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
       &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Testing The WebApp&lt;/span&gt;
       &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
         &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;pip install -r requirements.txt&lt;/span&gt;
         &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./manage.py test&lt;/span&gt;

   &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
       &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Build Process&lt;/span&gt;
       &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
         &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;git archive --format=tar.gz master -o sample-app.tar.gz&lt;/span&gt;
       &lt;span class="na"&gt;artifacts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
         &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sample-app.tar.gz&lt;/span&gt;

   &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
       &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deploying  to production Using Heroku&lt;/span&gt;
       &lt;span class="na"&gt;deployment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;production&lt;/span&gt;
       &lt;span class="na"&gt;caches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
         &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;pip&lt;/span&gt;
       &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
         &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;git push -f https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git $BITBUCKET_BRANCH&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu3urfl9rgcgy7icabqtc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu3urfl9rgcgy7icabqtc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Once you have configured the pipeline, commit/push the changes. Now, within the pipeline tab, you can find the logs for your running and/or completed pipelines.

&lt;ul&gt;
&lt;li&gt;If the Test, Build and Deploy Process is Successful, You will Get a Green Tick Saying Successful:
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsqvyski9qkrcm5cp4b85.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;If the Test, Build, and Deploy Process are unsuccessful, You will Get a Red error Saying “Failed”: 
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9odgydguguz2l9adreje.png" alt="Alt Text"&gt;
*If the code passed the test and there were no Build Errors, the deployment will continue, and as such, the new code will be live. You will now be able to see your website using your Domain Name or a subdomain given by Heroku:
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8m30qms56zmh4vyzu950.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Travis-CI/ Circle-CI
&lt;/h2&gt;

&lt;p&gt;Travis-CI is a well-known hosted CI service in the community for...well, many reasons. One of the prime reasons being that it is free for open-source projects, which means you only have to pay for private projects. It’s Continuous Integration Environment also provides multiple runtimes i.e. Node.JS, PHP, Python versions, data stores and so on. So, when hosting on this platform, the testing of your libraries against multiple runtimes/ data stores can easily be accomplished without bearing the burden of installing them locally.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Travis is an easy-to-set-up platform. Add some basic build instructions to your project, commit the code...and Voila! Your website is live.&lt;/li&gt;
&lt;li&gt;A large number of services and databases like MySQL, PostgreSQL, Elasticsearch, Redis, Riak, RabbitMQ, Memcached are already installed and waiting to be enabled in the configuration.&lt;/li&gt;
&lt;li&gt;Travis supports a lot of deployment platforms such as Heroku, Cloud Foundry, OpenShift, cloud Control, Nedejitsu, etc.&lt;/li&gt;
&lt;li&gt;Travis CI is a mature platform as of now, and most, if not all the common complaints have been improved. This includes documentation and logs with colour support...[Nice, isn’t it?]&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Cons:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Though it is free for Open Source Projects, there is a heavy price to pay for a paid plan -- $69/month being the steppingstone.&lt;/li&gt;
&lt;li&gt;The repos can’t be directly modified on Travis [which you can if you are paying...], so it is quite bothersome to go to the file in the repository every time [even] a small tweak has to be made.&lt;/li&gt;
&lt;li&gt;Setting up the build matrix on travis.yml file is quite difficult.&lt;/li&gt;
&lt;li&gt;For the free plan, due to limited infrastructures, build queues get very long at times.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Okay, since we have discussed so much about Travis-CI, starting another thread for Circle-CI would be a bit redundant – they are essentially the same in most of the aspects. However, if your goal is a small project, you would want to opt for Circle-CI, whereas Travis-CI is more preferred for open source projects which require testing in different environments.&lt;/p&gt;

&lt;h6&gt;
  
  
  How to CI-CD with Travis-CI? Here are the steps:
&lt;/h6&gt;

&lt;ol&gt;
&lt;li&gt;Create a GitHub repository, set up Travis-CI account and create a new Heroku Project. It is quite like what we did in Bitbucket pipelines.
*Note: By default; Travis will deploy your Project to Heroku’s app with an app name same as the GitHub repo name. You can change this default behaviour in the configuration file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While Working with bitbucket, It’s already shown how you can set up a Heroku project. It’s the same steps here as well, so I won’t be redundant.*&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Once you create and link Travis-CI to your GitHub account you will be able to see all the repositories from your GitHub. All repos will be shown in Travis but Any repository that has .tavis.yml file will be included in Travis-CI builds:
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs2f4wd6tbmj2qzcmd30j.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;In your project’s root directory create a .travis.yml file and add the following config (for Python).
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;language&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;python&lt;/span&gt;
    &lt;span class="s"&gt;python&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3.8"&lt;/span&gt;
    &lt;span class="c1"&gt;# command to install dependencies&lt;/span&gt;
&lt;span class="err"&gt;    &lt;/span&gt;&lt;span class="na"&gt;install&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;pip install -r requirements.txt&lt;/span&gt;


    &lt;span class="c1"&gt;# command to run tests&lt;/span&gt;
    &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./manage.py test&lt;/span&gt;


    &lt;span class="c1"&gt;# command to deploy to heroku&lt;/span&gt;
    &lt;span class="na"&gt;deploy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Heroku&lt;/span&gt;
      &lt;span class="na"&gt;api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;$HEROKU_API_KEY&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note that this is not the only way to write the config file, but since I read this method in the Travis-CI docs I will be writing like their recommended format. You can find your language-specific references in their docs&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In your Travis-CI account, go to the repo’s setting and add the environment variables. You will need to add the $HEROKU_API_KEY environment variable as you did with bitbucket pipelines. Go to settings -&amp;gt; Variables -&amp;gt; Add variables.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxoub5kp7qqp96iixgku7.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;Now you can push your repository to GitHub, once you push it Travis-CI will automatically start the process and you can see the logs within Travis-CI as.&lt;/li&gt;
&lt;li&gt;Once the Build Completes:

&lt;ul&gt;
&lt;li&gt;If Succeed You will see Text saying #[Number] passed in green. Your website should go live then.&lt;/li&gt;
&lt;li&gt;If the build failed, then you will see Text saying #[Number] failed in red. Below is an example of Deployment failure due to Improperly configured API_KEY: The failure may arise during Testing as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By default, email notifications are sent to the committer and the commit author when they are members of the repository, that is they have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;push or admin permissions for public repositories.&lt;/li&gt;
&lt;li&gt;pull, push or admin permissions for private repositories.
Emails are sent when, on the given branch:&lt;/li&gt;
&lt;li&gt;a build was just broken or still is broken.&lt;/li&gt;
&lt;li&gt;a previously broken build was just fixed.
You can also configure additional Notification Options like Slack or IRC, etc by adding additional parameters to your configuration file (.travis.yml):
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;notifications&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;slack&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;on_success&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Refer to their &lt;a href="https://docs.travis-ci.com/user/notifications/" rel="noopener noreferrer"&gt;docs&lt;/a&gt; for more info&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Automated cloud platforms
&lt;/h2&gt;

&lt;p&gt;Finally, for a complete and easy automated solution, we can opt for one of the many Automated Cloud Platforms. [Among which, I personally prefer &lt;a href="https://hostman.com/" rel="noopener noreferrer"&gt;Hostman&lt;/a&gt;, but we'll, that's completely subjective.] Basically, most of the behind-the-curtains works of coding and such are already done for you, so that you can deploy your code right from your git repository.&lt;br&gt;
All the worries regarding setting up a cloud server, web server, and similar tedious tasks are not for you to worry about.&lt;br&gt;
For the most part, you will be provided with free SSL and CDN for up-to-date security and many other perks. Being cheaper than other services and much easier to use, the majority of the usage is covered by these platforms. So unless you have a dedicated team ready to go full throttle for Manual testing or want to pay for other automated systems such as Jenkins (which has plenty of manual work to do, still), the most intelligent choice is to go for Automated Cloud Platforms like Hostman.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;It is very easy to set up.&lt;/li&gt;
&lt;li&gt;It is completely automated, so not many manual operations are on the menu.&lt;/li&gt;
&lt;li&gt;All the operational issues will be taken care of by providers like Hostman.&lt;/li&gt;
&lt;li&gt;After setting it up once, there is no need to manage it at regular intervals. You can wholly focus on writing awesome codes.&lt;/li&gt;
&lt;li&gt;It supports Automatic Git Deployment out of the box, so you don’t need to configure.&lt;/li&gt;
&lt;li&gt;No Vendor Lock In.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Cons:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The features might be limited as compared to other platforms such as Jenkins.&lt;/li&gt;
&lt;li&gt;As of now, the Languages and Frameworks out of the box are a bit limited. As an example, Hostman supports 22 Frameworks. But providers like Jenkins supports more than 100 plugins and more can be built, if necessary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Updates solve most of the problems these days, so we are optimistic about how future updates can migrate the number of cons toward the pros section.&lt;/em&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  Meanwhile, let’s have a look at an easy way to set up your website for Automated Continuous Integration and Deployment:
&lt;/h6&gt;

&lt;ol&gt;
&lt;li&gt;Create a repo on Github or BitBucket and push your code.&lt;/li&gt;
&lt;li&gt;Now open up the &lt;a href="https://dashboard.hostman.com" rel="noopener noreferrer"&gt;Hostman Dashboard&lt;/a&gt; and click on the &lt;code&gt;+Create&lt;/code&gt; button on the top left:
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr7kt1tk6mg1p4ldfato8.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;Select the type of website you want to host. In my case, it is a backend for Django hence I will select the backend app:
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fthsrjx83mwtlx0yq5tqr.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;It will Now ask me to choose a repository, I am going to select my repo, hosted on GitHub account, linked to my hostman account. &lt;em&gt;You can also provide the link to your repo without adding your GitHub account, but make sure that it's a public repo&lt;/em&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhxe52bv02jlus61umvzf.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;Select the server's specs you want. You can easily scale later on.&lt;/li&gt;
&lt;li&gt;After selecting the Repo, It will ask me to customize the app. Input the correct build command and start command depending upon the language you've used. In my case, I'm deploying a Django project, so here's my config:&lt;/li&gt;
&lt;li&gt;Build command: &lt;code&gt;Python manage.py collectstatic --noinput &amp;amp;&amp;amp; python manage.py test
&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Start command: &lt;code&gt;gunicorn &amp;lt;projectname&amp;gt;.wsgi&lt;/code&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fio2nn3jn3n5qug24dna5.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Deploy&lt;/code&gt; and wait for the deployment to complete.

&lt;ul&gt;
&lt;li&gt;If your project passes the test, you will receive an email or a Slack message saying build successful. You can also view this info in the Dashboard.&lt;/li&gt;
&lt;li&gt;If your project fails the test, you will receive an email or a Slack message saying build unsuccessful. You can also view this info in the Dashboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If your build was successful, your website will be live instantly. You can configure your environment variables from the Dashboard itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tabular Comparison Between All Deployment Methods:
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Comparison Type/ Development Method&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Travis-CI/Circle-CI&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Cloud + Jenkins&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Bitbucket Pipelines/Github Actions&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Automated Cloud Platforms&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge needed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Average&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Average&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flexibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Free for Open Source Projects, Medium for Private ones.&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Learning Curve&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>devops</category>
      <category>webdev</category>
      <category>testing</category>
      <category>python</category>
    </item>
  </channel>
</rss>
