<?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>Forem: Ayman Zahran</title>
    <description>The latest articles on Forem by Ayman Zahran (@aymanzahran).</description>
    <link>https://forem.com/aymanzahran</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%2F410967%2F38a5a607-9d43-49fe-8374-96b3986f7381.jpeg</url>
      <title>Forem: Ayman Zahran</title>
      <link>https://forem.com/aymanzahran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/aymanzahran"/>
    <language>en</language>
    <item>
      <title>Building CDK Construct Library, CDK App and CDK Pipelines using Projen</title>
      <dc:creator>Ayman Zahran</dc:creator>
      <pubDate>Mon, 21 Mar 2022 12:44:36 +0000</pubDate>
      <link>https://forem.com/aws-builders/building-cdk-construct-library-cdk-app-and-cdk-pipelines-using-projen-41d</link>
      <guid>https://forem.com/aws-builders/building-cdk-construct-library-cdk-app-and-cdk-pipelines-using-projen-41d</guid>
      <description>&lt;h4&gt;
  
  
  Part1 (&lt;a href="https://github.com/AymanZahran/projen-cdk-tutorial-part-1" rel="noopener noreferrer"&gt;CDK Construct Library&lt;/a&gt;)
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://opensource.org/licenses/Apache-2.0" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2FLicense-Apache%25202.0-yellowgreen.svg" alt="License"&gt;&lt;/a&gt;&lt;a href="https://gitpod.io/#https://github.com/AymanZahran/projen-cdk-tutorial-part-1" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2FGitpod-ready--to--code-blue%3Flogo%3Dgitpod" alt="Gitpod ready-to-code"&gt;&lt;/a&gt;&lt;a href="https://github.com/AymanZahran/projen-cdk-tutorial-part-1/actions/workflows/build.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/AymanZahran/projen-cdk-tutorial-part-1/actions/workflows/build.yml/badge.svg" alt="build"&gt;&lt;/a&gt;&lt;a href="https://github.com/AymanZahran/projen-cdk-tutorial-part-1/actions/workflows/release.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/AymanZahran/projen-cdk-tutorial-part-1/actions/workflows/release.yml/badge.svg" alt="release"&gt;&lt;/a&gt;&lt;a href="https://hub.docker.com/r/jsii/superchain" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2Fdocker-jsii%252Fsuperchain-brightgreen%3Flogo%3Ddocker" alt="docker"&gt;&lt;/a&gt;&lt;a href="https://badge.fury.io/js/fastfargate" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbadge.fury.io%2Fjs%2Ffastfargate.svg" alt="npm version"&gt;&lt;/a&gt;&lt;a href="https://badge.fury.io/py/fastfargate" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbadge.fury.io%2Fpy%2Ffastfargate.svg" alt="PyPI version"&gt;&lt;/a&gt;&lt;a href="https://badge.fury.io/nu/fastfargate" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbadge.fury.io%2Fnu%2Ffastfargate.svg" alt="NuGet version"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Part2 (&lt;a href="https://github.com/AymanZahran/projen-cdk-tutorial-part-2" rel="noopener noreferrer"&gt;CDK App&lt;/a&gt;)
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://opensource.org/licenses/Apache-2.0" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2FLicense-Apache%25202.0-yellowgreen.svg" alt="License"&gt;&lt;/a&gt;&lt;a href="https://gitpod.io/#https://github.com/AymanZahran/projen-cdk-tutorial-part-2" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2FGitpod-ready--to--code-blue%3Flogo%3Dgitpod" alt="Gitpod ready-to-code"&gt;&lt;/a&gt;&lt;a href="https://github.com/AymanZahran/projen-cdk-tutorial-part-2/actions/workflows/build.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/AymanZahran/projen-cdk-tutorial-part-2/actions/workflows/build.yml/badge.svg" alt="build"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Part3 (&lt;a href="https://github.com/AymanZahran/projen-cdk-tutorial-part-3" rel="noopener noreferrer"&gt;CDK Pipelines App&lt;/a&gt;)
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://opensource.org/licenses/Apache-2.0" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2FLicense-Apache%25202.0-yellowgreen.svg" alt="License"&gt;&lt;/a&gt;&lt;a href="https://gitpod.io/#https://github.com/AymanZahran/projen-cdk-tutorial-part-3" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fbadge%2FGitpod-ready--to--code-blue%3Flogo%3Dgitpod" alt="Gitpod ready-to-code"&gt;&lt;/a&gt;&lt;a href="https://github.com/AymanZahran/projen-cdk-tutorial-part-3/actions/workflows/build.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/AymanZahran/projen-cdk-tutorial-part-3/actions/workflows/build.yml/badge.svg" alt="build"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 1
&lt;/h2&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%2Fprojen-cdk-tutorial.s3.amazonaws.com%2Fprojen-cdk-tutorial-part-1.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%2Fprojen-cdk-tutorial.s3.amazonaws.com%2Fprojen-cdk-tutorial-part-1.png" alt="projen-cdk-tutorial-part-1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;p&gt;1- Add Github Secrets&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;TWINE_USERNAME
TWINE_PASSWORD
NPM_TOKEN
NUGET_API_KEY
MAVEN_USERNAME
MAVEN_PASSWORD
MAVEN_STAGING_PROFILE_ID
MAVEN_GPG_PRIVATE_KEY
MAVEN_GPG_PRIVATE_KEY_PASSPHRASE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2- Create Project locally or launch using &lt;a href="https://gitpod.io/#https://github.com/AymanZahran/projen-cdk-tutorial-part-1" rel="noopener noreferrer"&gt;Gitpod-Part-1&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;projen-cdk-tutorial-part-1
&lt;span class="nb"&gt;cd &lt;/span&gt;projen-cdk-tutorial-part-1
code &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;pj&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"npx projen"&lt;/span&gt;
pj new awscdk-construct
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3- Configure Project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Add your code to .projenrc, This is the only file that will be modified. During projen it will scaffold your whole project including what you are reading right now &lt;span class="o"&gt;!&lt;/span&gt; :&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4- Execute projen&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5- Commit &amp;amp; Push&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Commit"&lt;/span&gt;
git push
&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%2Fuploads%2Farticles%2F4bf4m3aquzok8x4q1b9i.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%2Fuploads%2Farticles%2F4bf4m3aquzok8x4q1b9i.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&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%2Fuploads%2Farticles%2Fi1qgpdf1ermxnudir0by.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%2Fuploads%2Farticles%2Fi1qgpdf1ermxnudir0by.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 2
&lt;/h2&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%2Fprojen-cdk-tutorial.s3.amazonaws.com%2Fprojen-cdk-tutorial-part-2.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%2Fprojen-cdk-tutorial.s3.amazonaws.com%2Fprojen-cdk-tutorial-part-2.png" alt="projen-cdk-tutorial-part-2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;p&gt;1- Add Gitpod Secrets&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;AWS_ACCOUNT_NUMBER
AWS_DEFAULT_REGION
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2- Create Project locally or launch using &lt;a href="https://gitpod.io/#https://github.com/AymanZahran/projen-cdk-tutorial-part-2" rel="noopener noreferrer"&gt;Gitpod-Part-2&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;projen-cdk-tutorial-part-2
&lt;span class="nb"&gt;cd &lt;/span&gt;projen-cdk-tutorial-part-2
code &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;cdk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"npx cdk"&lt;/span&gt;
awscdk-app-ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3- Configure Project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Add your code to .projenrc, This is the only file that will be modified. During projen it will scaffold your whole project including what you are reading right now &lt;span class="o"&gt;!&lt;/span&gt; :&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4- Execute projen&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5- Commit &amp;amp; Push&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Commit"&lt;/span&gt;
git push
&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%2Fuploads%2Farticles%2F2zrsb16jjg3c84pubymz.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%2Fuploads%2Farticles%2F2zrsb16jjg3c84pubymz.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6- Deploy the ECS Stack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cdk bootstrap aws://&lt;span class="nv"&gt;$AWS_ACCOUNT_NUMBER&lt;/span&gt;/&lt;span class="nv"&gt;$AWS_DEFAULT_REGION&lt;/span&gt;
cdk deploy
&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%2Fuploads%2Farticles%2Fvd0igmn6rdbp9pi6su7c.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%2Fuploads%2Farticles%2Fvd0igmn6rdbp9pi6su7c.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 3
&lt;/h2&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%2Fprojen-cdk-tutorial.s3.amazonaws.com%2Fprojen-cdk-tutorial-part-3.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%2Fprojen-cdk-tutorial.s3.amazonaws.com%2Fprojen-cdk-tutorial-part-3.png" alt="projen-cdk-tutorial-part-3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;p&gt;1- Add Gitpod Secrets&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;AWS_ACCOUNT_NUMBER
AWS_DEFAULT_REGION
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2- Create Project locally or launch using &lt;a href="https://gitpod.io/#https://github.com/AymanZahran/projen-cdk-tutorial-part-3" rel="noopener noreferrer"&gt;Gitpod-Part-3&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;projen-cdk-tutorial-part-3
&lt;span class="nb"&gt;cd &lt;/span&gt;projen-cdk-tutorial-part-3
code &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;cdk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"npx cdk"&lt;/span&gt;
awscdk-app-ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3- Configure Project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Add your code to .projenrc, This is the only file that will be modified. During projen it will scaffold your whole project including what you are reading right now &lt;span class="o"&gt;!&lt;/span&gt; :&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4- Execute projen&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5- Commit &amp;amp; Push&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Commit"&lt;/span&gt;
git push
&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%2Fuploads%2Farticles%2Fs1hv8ksa0iutu9npn62j.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%2Fuploads%2Farticles%2Fs1hv8ksa0iutu9npn62j.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6- Deploy CDK Pipelines&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cdk bootstrap aws://&lt;span class="nv"&gt;$AWS_ACCOUNT_NUMBER&lt;/span&gt;/&lt;span class="nv"&gt;$AWS_DEFAULT_REGION&lt;/span&gt;
cdk deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;7- Deploy ECS Stack via CDK Pipelines&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add codecommit &lt;span class="s2"&gt;"&amp;lt;YOUR_CODECOMMIT_REPO&amp;gt;"&lt;/span&gt;
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Commit"&lt;/span&gt;
git push codecommit master
&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%2Fuploads%2Farticles%2Fcehh7zg86i5b6fv9119s.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%2Fuploads%2Farticles%2Fcehh7zg86i5b6fv9119s.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&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%2Fuploads%2Farticles%2Fq0gs1vo6uftt5iwftbav.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%2Fuploads%2Farticles%2Fq0gs1vo6uftt5iwftbav.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&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%2Fuploads%2Farticles%2Fqun0fwwempa79ov32bfm.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%2Fuploads%2Farticles%2Fqun0fwwempa79ov32bfm.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&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%2Fuploads%2Farticles%2Fm9skwn7kj3igyds133lc.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%2Fuploads%2Farticles%2Fm9skwn7kj3igyds133lc.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html" rel="noopener noreferrer"&gt;CDK Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/cdk/api/v2/" rel="noopener noreferrer"&gt;CDK API Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cdkworkshop.com/" rel="noopener noreferrer"&gt;CDK Workshop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cdkpatterns.com/" rel="noopener noreferrer"&gt;CDK Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://constructs.dev/" rel="noopener noreferrer"&gt;CDK Construct Hub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/solutions/latest/constructs/welcome.html" rel="noopener noreferrer"&gt;AWS Solutions Constructs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/projen/projen" rel="noopener noreferrer"&gt;Projen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://projen.io/api/API.html" rel="noopener noreferrer"&gt;Projen API Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://projen.io/awscdk-construct.html" rel="noopener noreferrer"&gt;Projen AWS CDK Construct Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://projen.io/awscdk-apps.html" rel="noopener noreferrer"&gt;Projen AWS CDK Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/seeebiii/projen-test" rel="noopener noreferrer"&gt;Publish CDK Constructs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AymanZahran/projen-cdk-tutorial-part-1" rel="noopener noreferrer"&gt;projen-cdk-tutorial-part-1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AymanZahran/projen-cdk-tutorial-part-2" rel="noopener noreferrer"&gt;projen-cdk-tutorial-part-2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AymanZahran/projen-cdk-tutorial-part-3" rel="noopener noreferrer"&gt;projen-cdk-tutorial-part-3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cdk</category>
      <category>projen</category>
      <category>aws</category>
    </item>
    <item>
      <title>Build You Kubernetes Playground in less than 5 minute for FREE!!</title>
      <dc:creator>Ayman Zahran</dc:creator>
      <pubDate>Thu, 10 Mar 2022 11:38:02 +0000</pubDate>
      <link>https://forem.com/aymanzahran/build-you-kubernetes-playground-in-less-than-5-minute-for-free-58il</link>
      <guid>https://forem.com/aymanzahran/build-you-kubernetes-playground-in-less-than-5-minute-for-free-58il</guid>
      <description>&lt;p&gt;As a Kubernetes Administrator, Developer or Security Specialist. You may need to launch Clusters, Pods, Services, PVs, PVCs and other objects on the fly for testing purposes. This &lt;a href="https://github.com/AymanZahran/KubernetesGitpodWorkspace" rel="noopener noreferrer"&gt;Repo &lt;/a&gt; will help you to launch Kubernetes Clusters, Execute kubectl Commands and Apply Kubernetes Manifest files in less than 5 minute from you browser on any platform (PC, Laptop, Tablet, Ipad or even from you SmartPhone) for FREE!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linode.com/" rel="noopener noreferrer"&gt;Linode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gitpod.io/" rel="noopener noreferrer"&gt;Gitpod&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Steps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Sign up for a new account in &lt;a href="https://www.linode.com/" rel="noopener noreferrer"&gt;Linode&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Get 100$ free credit&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Create a new &lt;a href="https://www.linode.com/products/kubernetes/" rel="noopener noreferrer"&gt;Linode Kubernetes Engine (LKE)&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to Kubernetes -&amp;gt; Create Cluster -&amp;gt; Add 3 Dedicated 4 GB Nodes&lt;/li&gt;
&lt;li&gt;Enter the Cluster Label, Select the Region and Kubernetes Latest Stable Version&lt;/li&gt;
&lt;li&gt;Click Create Cluster&lt;/li&gt;
&lt;/ul&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%2Fuploads%2Farticles%2Fi1hvcqlnrxdkl7dv03kd.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%2Fuploads%2Farticles%2Fi1hvcqlnrxdkl7dv03kd.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Copy your KubeConfig Manifest file
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to Kubernetes -&amp;gt; Cluster Name -&amp;gt; View -&amp;gt; Copy&lt;/li&gt;
&lt;/ul&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%2Fuploads%2Farticles%2F96y3xmbghgzagcox5g46.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%2Fuploads%2Farticles%2F96y3xmbghgzagcox5g46.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Encode KubeConfig Manifest file
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Using online tool &lt;a href="https://www.base64encode.org/" rel="noopener noreferrer"&gt;base64encode&lt;/a&gt; -&amp;gt; Paste you KubeConfig base64 -&amp;gt; Click Encode&lt;/li&gt;
&lt;li&gt;Copy the KubeConfig base64 Manifest&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sign up for new account in &lt;a href="https://www.gitpod.io/" rel="noopener noreferrer"&gt;Gitpod&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Get a free 50 hours/month&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Add KubeConfig Variable
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to Gitpod Dashboard -&amp;gt; Settings -&amp;gt; Variables -&amp;gt; New Variable&lt;/li&gt;
&lt;li&gt;Enter the Variable Name K8S_CONFIG&lt;/li&gt;
&lt;li&gt;Enter the Value with the output of the KubeConfig base64 Manifest&lt;/li&gt;
&lt;li&gt;Enter the Scope */*&lt;/li&gt;
&lt;li&gt;Click Add Variable&lt;/li&gt;
&lt;/ul&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%2Fuploads%2Farticles%2F8205h6hteww05r3vtijb.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%2Fuploads%2Farticles%2F8205h6hteww05r3vtijb.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Gitpod Extenstion
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/gitpod-always-ready-to-co/dodmmooeoklaejobgleioelladacbeki" rel="noopener noreferrer"&gt;Google Chrome&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fork this Repo
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;It is better to have your own repo which will be cloned to the Gitpod workspace so go to the &lt;a href="https://github.com/AymanZahran/KubernetesGitpodWorkspace" rel="noopener noreferrer"&gt;Repo &lt;/a&gt; and Click on the fork button&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Create Gitpod Workspace
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;It is time to launch your Gitpod workspace so go to the &lt;a href="https://github.com/AymanZahran/KubernetesGitpodWorkspace" rel="noopener noreferrer"&gt;Repo &lt;/a&gt; and Click on the Gitpod button&lt;/li&gt;
&lt;li&gt;Wait for the workspace docker &lt;a href="https://www.docker.com/resources/what-container" rel="noopener noreferrer"&gt;container&lt;/a&gt; to be launched and &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;vscode&lt;/a&gt; to be loaded&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Execute Kubectl commands, Apply Kubernetes Manifest files and Have Fun!!
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitpod /workspace/KubernetesGitpodWorkspace (main) $ kubectl get nodes
NAME                          STATUS   ROLES    AGE     VERSION
lke54567-85543-6228b8a278cf   Ready    &amp;lt;none&amp;gt;   7m48s   v1.22.6
lke54567-85543-6228b8a28f6f   Ready    &amp;lt;none&amp;gt;   7m44s   v1.22.6
lke54567-85543-6228b8a2a531   Ready    &amp;lt;none&amp;gt;   7m44s   v1.22.6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Caution!! Cleanup your resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Don't forget to delete Gitpod Workspace!&lt;/li&gt;
&lt;li&gt;Don't forget to delete Linode LKE Cluster! (Delete NOT Poweroff)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>kubernetes</category>
      <category>kubectl</category>
      <category>linode</category>
      <category>gitpod</category>
    </item>
  </channel>
</rss>
