<?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: Django Africa</title>
    <description>The latest articles on DEV Community by Django Africa (@djangoafrica).</description>
    <link>https://dev.to/djangoafrica</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%2Forganization%2Fprofile_image%2F1742%2F667292bb-dc63-4569-a437-a5c6fd77edfb.png</url>
      <title>DEV Community: Django Africa</title>
      <link>https://dev.to/djangoafrica</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/djangoafrica"/>
    <language>en</language>
    <item>
      <title>Continuous Integration and Delivery with Django and AWS CodePipeline</title>
      <dc:creator>Desmond</dc:creator>
      <pubDate>Sun, 16 Feb 2020 06:45:19 +0000</pubDate>
      <link>https://dev.to/djangoafrica/continuous-integration-and-delivery-with-django-and-aws-codepipeline-369j</link>
      <guid>https://dev.to/djangoafrica/continuous-integration-and-delivery-with-django-and-aws-codepipeline-369j</guid>
      <description>&lt;p&gt;Before we get started let's have a brief understanding of Continuous Integration and Continuous Delivery&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous integration&lt;/strong&gt; is a DevOps software development practice where developers regularly merge their code changes into a central repository, after which automated builds and tests are run. &lt;br&gt;
Continuous integration most often refers to the build or integration stage of the software release process and entails both an automation component (e.g. a CI or build service) and a cultural component (e.g. learning to integrate frequently). The key goals of continuous integration are to find and address bugs quicker, improve software quality, and reduce the time it takes to validate and release new software updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Delivery&lt;/strong&gt; is a DevOps software development practice where code changes are automatically built, tested, and prepared for a release to production. It expands upon continuous integration by deploying all code changes to a testing environment and/or a production environment after the build stage. When continuous delivery is implemented properly, developers will always have a deployment-ready build artifact that has passed through a standardized test process. &lt;/p&gt;

&lt;p&gt;Continuous delivery lets developers automate testing beyond just unit tests so they can verify application updates across multiple dimensions before deploying to customers. These tests may include UI testing, load testing, integration testing, API reliability testing, etc. This helps developers more thoroughly validate updates and pre-emptively discover issues. With the cloud, it is easy and cost-effective to automate the creation and replication of multiple environments for testing, which was previously difficult to do on-premises.&lt;/p&gt;

&lt;p&gt;To cut things short continuous integration is the build and unit testing stage of the software release process. Every revision committed triggers an automated build and test.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Continuous Integration:&lt;/strong&gt;&lt;br&gt;
    1. Improves Developer Productivity&lt;br&gt;
    2. Find and Address Bugs quicker&lt;br&gt;
    3. Deliver updates Faster&lt;/p&gt;

&lt;p&gt;Here's a link to the repository for this course &lt;a href="https://github.com/Nyamador/ci-cd-django.git" rel="noopener noreferrer"&gt;CI-CD-DJANGO-AWS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All this app does is to return a JSON response when you hit an endpoint.&lt;/p&gt;

&lt;p&gt;What services will we use?&lt;br&gt;
1.AWS Elastic Beanstalk (In order to keep deployment of our app as simple as possible we'll use Elastic Beanstalk which requires less configuration)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AWS Codepipeline&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AWS code pipeline is a fully managed CI delivery service that helps you automate your release pipelines for fast and reliable application and infrastructure updates. It automates builds, tests, and deploy phases of release processes every time there is a code change, based on the release model you define.&lt;/p&gt;

&lt;p&gt;Enough talk 🥱! Let's get started.&lt;/p&gt;
&lt;h3&gt;
  
  
  PREPARING OUR APPLICATION
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;NB: All services we'll use can be used with the AWS Free Tier. You can register for the free tier here&lt;a href="https://aws.amazon.com/free/" rel="noopener noreferrer"&gt;AWS Free Tier&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Login to your AWS console &lt;a href="https://console.aws.amazon.com/console/home?nc2=h_ct&amp;amp;src=header-signin" rel="noopener noreferrer"&gt;AWS CONSOLE&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the search console type Elastic Beanstalk and open its dashboard.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fiix8bchcodsag8q8r4n4.gif" 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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fiix8bchcodsag8q8r4n4.gif" alt="Elastic Beanstalk"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on the &lt;code&gt;Get Started&lt;/code&gt; button on the &lt;strong&gt;Elastic Beanstalk Dashboard&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3hylnbr6caynykd52ast.gif" 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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3hylnbr6caynykd52ast.gif" alt="Elastic Beanstalk Get Started "&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We'll then go ahead and create our application. Before we can upload our app we need to make it compatible with AWS.&lt;/p&gt;

&lt;p&gt;a. To do that we'll create a folder in our Django project called &lt;br&gt;
&lt;code&gt;.ebextensions/&lt;/code&gt;.(The directory where manage.py is)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;b. Create a file called &lt;code&gt;django.config&lt;/code&gt; and add the following:&lt;br&gt;
      &lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;As simple as that we can now go ahead and deploy our app. We just have&lt;/p&gt;

&lt;p&gt;**NB: Immediately after deployment, we'll edit Django's configuration to add the domain name that Elastic Beanstalk will assign our application to Django's &lt;code&gt;ALLOWED_HOSTS&lt;/code&gt; in our &lt;code&gt;settings file&lt;/code&gt;. Then we'll redeploy your application. This is a Django security requirement, designed to prevent HTTP Host header attacks.In the second part we'll go through the process of configuring codepipeline for our Continuous Integration process. &lt;/p&gt;

</description>
      <category>python</category>
      <category>devops</category>
      <category>django</category>
      <category>aws</category>
    </item>
    <item>
      <title>Introduction to CI/CD with Django</title>
      <dc:creator>Desmond</dc:creator>
      <pubDate>Sat, 01 Feb 2020 18:43:43 +0000</pubDate>
      <link>https://dev.to/djangoafrica/introduction-to-ci-cd-with-django-3742</link>
      <guid>https://dev.to/djangoafrica/introduction-to-ci-cd-with-django-3742</guid>
      <description>&lt;p&gt;This Series would be in two parts .In order to follow this series easily, the first part would be on &lt;strong&gt;Preparing Your Django Application For Deployment&lt;/strong&gt; and the Second part would focus on &lt;strong&gt;Continuous Integration and Delivery with Amazon Web Services&lt;/strong&gt;. Stay Tuned&lt;/p&gt;

</description>
      <category>django</category>
      <category>python</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
