<?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: Oscar Nevárez</title>
    <description>The latest articles on DEV Community by Oscar Nevárez (@insan3).</description>
    <link>https://dev.to/insan3</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%2F115099%2F1ae74054-8e4d-4690-ac26-fd3ab885f634.jpg</url>
      <title>DEV Community: Oscar Nevárez</title>
      <link>https://dev.to/insan3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/insan3"/>
    <language>en</language>
    <item>
      <title>Asciinema actions</title>
      <dc:creator>Oscar Nevárez</dc:creator>
      <pubDate>Tue, 30 Nov 2021 15:42:56 +0000</pubDate>
      <link>https://dev.to/insan3/asciinema-actions-bga</link>
      <guid>https://dev.to/insan3/asciinema-actions-bga</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bOZAtkZB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ja0okslju77h2jboame0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bOZAtkZB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ja0okslju77h2jboame0.png" alt="Asciinema+Markdown+GithubActions=AWESOMENESS" width="880" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;So I had this idea of turning code blocks within markdown files into gifs. That's what this Github Action does :D!&lt;/p&gt;

&lt;h4&gt;
  
  
  Introducing action
&lt;/h4&gt;

&lt;p&gt;Turns this&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="c"&gt;#Here we go!&lt;/span&gt;
npm i &lt;span class="nt"&gt;-g&lt;/span&gt; @org/awesome-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;into this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tzgVrdX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://github.com/oscarnevarezleal/awesome-project/raw/main/.asciicast/block-1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tzgVrdX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://github.com/oscarnevarezleal/awesome-project/raw/main/.asciicast/block-1.gif" alt="a block of code transformed into a gif image" width="590" height="59"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Usage
&lt;/h4&gt;

&lt;p&gt;There are actually two actions working here.&lt;/p&gt;

&lt;p&gt;1) &lt;a href="https://github.com/oscarnevarezleal/asccinema/actions/asccicast"&gt;asccicast&lt;/a&gt; parses a mardown file and produces description files that helps to traverse its content.&lt;/p&gt;

&lt;p&gt;2) &lt;a href="https://github.com/oscarnevarezleal/asccinema/actions/asciicast2gif"&gt;asciicast2gif&lt;/a&gt; use json files produced by &lt;a href="https://github.com/oscarnevarezleal/asccinema/actions/asccicast"&gt;asccicast&lt;/a&gt; and turn them into GIF files. this action also accepts JSON files from &lt;a href="https://asciinema.org/"&gt;asciinema.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's a online &lt;a href="https://github.com/oscarnevarezleal/awesome-project"&gt;demo&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ci&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;dev'&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# This workflow contains a single job called "build"&lt;/span&gt;
  &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# The type of runner that the job will run on&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;

    &lt;span class="c1"&gt;# Steps represent a sequence of tasks that will be executed as part of the job&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="c1"&gt;# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&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;Asccinema generation&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;asccinema&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oscarnevarezleal/asciinema-actions/actions/asccicast@dev&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;generate -s README.template.md -o README.md&lt;/span&gt;
          &lt;span class="na"&gt;config&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.asciinema.json&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;Theme block &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oscarnevarezleal/asciinema-actions/actions/asciicast2gif@dev&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tango&lt;/span&gt;
          &lt;span class="na"&gt;rows&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
          &lt;span class="na"&gt;scale&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
          &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;block-0.*"&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;Theme block &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oscarnevarezleal/asciinema-actions/actions/asciicast2gif@dev&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;solarized-dark&lt;/span&gt;
          &lt;span class="na"&gt;rows&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
          &lt;span class="na"&gt;scale&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
          &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;block-1.*"&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;Theme block &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oscarnevarezleal/asciinema-actions/actions/asciicast2gif@dev&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;monokai&lt;/span&gt;
          &lt;span class="na"&gt;rows&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
          &lt;span class="na"&gt;scale&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
          &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;block-2.*"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stefanzweifel/git-auto-commit-action@v4&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="c1"&gt;# Optional, but recommended&lt;/span&gt;
          &lt;span class="c1"&gt;# Defaults to "Apply automatic changes"&lt;/span&gt;
          &lt;span class="na"&gt;commit_message&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Automated Change&lt;/span&gt;

          &lt;span class="c1"&gt;# Optional. Used by `git-commit`.&lt;/span&gt;
          &lt;span class="c1"&gt;# See https://git-scm.com/docs/git-commit#_options&lt;/span&gt;
          &lt;span class="na"&gt;commit_options&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;--no-verify&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;--signoff'&lt;/span&gt;

          &lt;span class="c1"&gt;# Optional glob pattern of files which should be added to the commit&lt;/span&gt;
          &lt;span class="c1"&gt;# Defaults to all (.)&lt;/span&gt;
          &lt;span class="c1"&gt;# See the `pathspec`-documentation for git&lt;/span&gt;
          &lt;span class="c1"&gt;# - https://git-scm.com/docs/git-add#Documentation/git-add.txt-ltpathspecgt82308203&lt;/span&gt;
          &lt;span class="c1"&gt;# - https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefpathspecapathspec&lt;/span&gt;
          &lt;span class="na"&gt;file_pattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.asciicast/*.gif&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*.md"&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;My recomended workflow is to keep a markdown template ( the one containing the code fences ) e.g &lt;code&gt;README.template.md&lt;/code&gt; so the final process results in a modified version of that file &amp;gt; &lt;code&gt;README.md&lt;/code&gt;. Keeping both files in the repository will guarantee consistency and prevent any content missmatch.&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Maintainer Must-Haves / Wacky Wildcards&lt;/p&gt;
&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/oscarnevarezleal"&gt;
        oscarnevarezleal
      &lt;/a&gt; / &lt;a href="https://github.com/oscarnevarezleal/asciinema-actions"&gt;
        asciinema-actions
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
asccinema-action&lt;/h1&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/oscarnevarezleal/asciinema-actions"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://asciinema.org/"&gt;https://asciinema.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>actionshackathon21</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>FORKS.md with GitHub Actions</title>
      <dc:creator>Oscar Nevárez</dc:creator>
      <pubDate>Fri, 19 Nov 2021 17:30:22 +0000</pubDate>
      <link>https://dev.to/insan3/forksmd-with-github-actions-33h9</link>
      <guid>https://dev.to/insan3/forksmd-with-github-actions-33h9</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;Have you ever had a repository so loved by the community and you wonder which of the forks is more actively maintained than yours but there are hundreds of them already? [...] Yeah, me neither. But I know this is a common question with big open source projects.&lt;/p&gt;

&lt;p&gt;This Github Action generates a FORKS.md file that keep track of all forks and, aditionally how far or behind are of the original project. Sweet indeed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Maintainer Must-Haves &amp;amp; DIY Deployments&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/oscarnevarezleal"&gt;
        oscarnevarezleal
      &lt;/a&gt; / &lt;a href="https://github.com/oscarnevarezleal/vitraya-ramunong"&gt;
        vitraya-ramunong
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The Tree of Souls (Na'vi name: Vitraya Ramunong [1]) is a giant willow tree that is said to be the closest connection to Eywa on Pandora
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
vitraya-ramunong&lt;/h1&gt;
&lt;p&gt;This Github Action &lt;strong&gt;generates&lt;/strong&gt; or &lt;strong&gt;updates&lt;/strong&gt; a FORK.md file to contain a list of all forks of a repository and, additionally how far or behind are they from upstream branch.&lt;/p&gt;
&lt;p&gt;Check out &lt;a href="https://github.com/oscarnevarezleal/vitraya-ramunong/USAGE.md"&gt;the docs&lt;/a&gt; to know more.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;                                                         &lt;span class="pl-c1"&gt;.&lt;/span&gt;
                                              &lt;span class="pl-c1"&gt;.&lt;/span&gt;         &lt;span class="pl-k"&gt;;&lt;/span&gt;
                 &lt;span class="pl-c1"&gt;.&lt;/span&gt;              &lt;span class="pl-c1"&gt;.&lt;/span&gt;              &lt;span class="pl-k"&gt;;&lt;/span&gt;%     &lt;span class="pl-k"&gt;;;&lt;/span&gt;   
                   ,           ,                &lt;span class="pl-c1"&gt;:&lt;/span&gt;&lt;span class="pl-k"&gt;;&lt;/span&gt;%  %&lt;span class="pl-k"&gt;;&lt;/span&gt;   
                    &lt;span class="pl-c1"&gt;:&lt;/span&gt;         &lt;span class="pl-k"&gt;;&lt;/span&gt;                   &lt;span class="pl-c1"&gt;:&lt;/span&gt;&lt;span class="pl-k"&gt;;&lt;/span&gt;%&lt;span class="pl-k"&gt;;&lt;/span&gt;&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;     .,   &lt;/span&gt;
&lt;span class="pl-s"&gt;           ,.        %;     %;            ;        %;&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;    ,&lt;span class="pl-k"&gt;;&lt;/span&gt;
             &lt;span class="pl-k"&gt;;&lt;/span&gt;       &lt;span class="pl-k"&gt;;&lt;/span&gt;%&lt;span class="pl-k"&gt;;&lt;/span&gt;  %%&lt;span class="pl-k"&gt;;&lt;/span&gt;        ,     %&lt;span class="pl-k"&gt;;&lt;/span&gt;    &lt;span class="pl-k"&gt;;&lt;/span&gt;%&lt;span class="pl-k"&gt;;&lt;/span&gt;    ,%&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;              %;       %;%;      ,  ;       %;  ;%;   ,%;&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt; 
               &lt;span class="pl-k"&gt;;&lt;/span&gt;%&lt;span class="pl-k"&gt;;&lt;/span&gt;      %&lt;span class="pl-k"&gt;;&lt;/span&gt;        &lt;span class="pl-k"&gt;;&lt;/span&gt;%&lt;span class="pl-k"&gt;;&lt;/span&gt;        % &lt;span class="pl-k"&gt;;&lt;/span&gt;%&lt;span class="pl-k"&gt;;&lt;/span&gt;  ,%&lt;span class="pl-k"&gt;;&lt;/span&gt;&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;                `%;.     ;%;     %;&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;         &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;`&lt;/span&gt;&lt;span class="pl-k"&gt;;&lt;/span&gt;%%&lt;span class="pl-k"&gt;;&lt;/span&gt;.%&lt;span class="pl-k"&gt;;&lt;/span&gt;&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-s"&gt;                 `:;%.    ;%%. %@;        %; ;@%;%&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;                    &lt;span class="pl-pds"&gt;`&lt;/span&gt;&lt;/span&gt;:%&lt;span class="pl-k"&gt;;&lt;/span&gt;&lt;span class="pl-c1"&gt;.&lt;/span&gt;  &lt;span class="pl-c1"&gt;:&lt;/span&gt;&lt;span class="pl-k"&gt;;&lt;/span&gt;bd%&lt;span class="pl-k"&gt;;&lt;/span&gt;          %&lt;span class="pl-k"&gt;;&lt;/span&gt;@%&lt;span class="pl-k"&gt;;&lt;/span&gt;&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;                      `@%:.  :;%.         ;@@%;&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;   
                        &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;`&lt;/span&gt;@%.  &lt;span class="pl-pds"&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class="pl-k"&gt;;&lt;/span&gt;@%.      &lt;span class="pl-k"&gt;;&lt;/span&gt;@@%&lt;span class="pl-k"&gt;;&lt;/span&gt;         
                          &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;`&lt;/span&gt;@%%. &lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/oscarnevarezleal/vitraya-ramunong"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Tech
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Github Actions&lt;/li&gt;
&lt;li&gt;GH CLI&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Github actions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;actions/checkout@v2&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>actionshackathon21</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Headless CMS using Github Issues and Github Actions</title>
      <dc:creator>Oscar Nevárez</dc:creator>
      <pubDate>Mon, 15 Nov 2021 05:04:35 +0000</pubDate>
      <link>https://dev.to/insan3/headless-cms-using-github-issues-and-github-actions-3bh8</link>
      <guid>https://dev.to/insan3/headless-cms-using-github-issues-and-github-actions-3bh8</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Headless CMS using Hugo, Github Issues and Github Actions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every time a new issue is created, a new post is created as well.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;main&lt;/em&gt; branch holds the content in markdown format. See &lt;code&gt;content&lt;/code&gt; folder&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;gh-pages&lt;/em&gt; branch contains the distributable html site.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Maintainer Must-Haves &amp;amp; DIY Deployments&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/oscarnevarezleal"&gt;
        oscarnevarezleal
      &lt;/a&gt; / &lt;a href="https://github.com/oscarnevarezleal/gh-cms"&gt;
        gh-cms
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Headless CMS using Github Issues and Github Actions
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Gh-Cms&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Headless CMS using Hugo, Github Issues and Github Actions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
How?&lt;/h2&gt;
&lt;p&gt;Every time a new issue is created, a new post is created as well.&lt;/p&gt;
&lt;h2&gt;
Branch structure&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;main&lt;/em&gt; branch holds the content in markdown format. See &lt;code&gt;content&lt;/code&gt; folder&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;gh-pages&lt;/em&gt; branch contains the distributable html site.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Bonus feature&lt;/h2&gt;
&lt;p&gt;Serve your content before publish it using ngrok.Take a look at &lt;code&gt;.github/workflows/gh-serve.yml&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
Tech&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Hugo&lt;/li&gt;
&lt;li&gt;Github Actions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Github actions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;actions/checkout@v2&lt;/li&gt;
&lt;li&gt;peaceiris/actions-hugo@v2&lt;/li&gt;
&lt;li&gt;stefanzweifel/git-auto-commit-action@v4&lt;/li&gt;
&lt;li&gt;oscarnevarezleal/ngrok-tunneling-action@dev&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/oscarnevarezleal/gh-cms"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://oscarnevarezleal.github.io/gh-cms"&gt;live demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a new post by submitting a &lt;a href="https://github.com/oscarnevarezleal/gh-cms/issues"&gt;new issue&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Tech
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Hugo&lt;/li&gt;
&lt;li&gt;Github Actions&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Github actions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;actions/checkout@v2&lt;/li&gt;
&lt;li&gt;peaceiris/actions-hugo@v2&lt;/li&gt;
&lt;li&gt;stefanzweifel/git-auto-commit-action@v4&lt;/li&gt;
&lt;li&gt;oscarnevarezleal/ngrok-tunneling-action@dev&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>actionshackathon21</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Issue Chill Action</title>
      <dc:creator>Oscar Nevárez</dc:creator>
      <pubDate>Thu, 11 Nov 2021 18:57:51 +0000</pubDate>
      <link>https://dev.to/insan3/issue-chill-action-1766</link>
      <guid>https://dev.to/insan3/issue-chill-action-1766</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/oscarnevarezleal"&gt;
        oscarnevarezleal
      &lt;/a&gt; / &lt;a href="https://github.com/oscarnevarezleal/issue-chill"&gt;
        issue-chill
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Issue Chill Action&lt;/h1&gt;
&lt;h2&gt;
About&lt;/h2&gt;
&lt;p&gt;This action reads a GitHub Issue and outputs its Sentiment Analysis, so you can detect whether its content is redacted in a way that make it sound positive or negative.&lt;/p&gt;
&lt;h2&gt;
Example&lt;/h2&gt;
&lt;p&gt;Create a &lt;code&gt;.github/workflows/issue-sentiment.yml&lt;/code&gt; file in your repository with the following content
Make sure to replace  and  with your repository values.&lt;/p&gt;
&lt;div class="highlight highlight-source-yaml position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; .github/workflows/issue-sentiment.yml&lt;/span&gt;
&lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Issue Sentiment Analysis&lt;/span&gt;
&lt;span class="pl-ent"&gt;on&lt;/span&gt;:
  &lt;span class="pl-ent"&gt;issues&lt;/span&gt;:
    &lt;span class="pl-ent"&gt;types&lt;/span&gt;: &lt;span class="pl-s"&gt;[opened, edited]&lt;/span&gt;

&lt;span class="pl-ent"&gt;jobs&lt;/span&gt;:  
  &lt;span class="pl-ent"&gt;add-comment&lt;/span&gt;:
    &lt;span class="pl-ent"&gt;runs-on&lt;/span&gt;: &lt;span class="pl-s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="pl-ent"&gt;permissions&lt;/span&gt;:
      &lt;span class="pl-ent"&gt;issues&lt;/span&gt;: &lt;span class="pl-s"&gt;write&lt;/span&gt;
    &lt;span class="pl-ent"&gt;steps&lt;/span&gt;:
      - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Sentiment Analysis&lt;/span&gt;
        &lt;span class="pl-ent"&gt;id&lt;/span&gt;: &lt;span class="pl-s"&gt;sa&lt;/span&gt;
        &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;oscarnevarezleal/issue-chill@master&lt;/span&gt;
        &lt;span class="pl-ent"&gt;env&lt;/span&gt;:
          &lt;span class="pl-ent"&gt;GITHUB_TOKEN&lt;/span&gt;: &lt;span class="pl-s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
        &lt;span class="pl-ent"&gt;with&lt;/span&gt;:
          &lt;span class="pl-ent"&gt;owner&lt;/span&gt;: &lt;span class="pl-s"&gt;&amp;lt;org&amp;gt;&lt;/span&gt;
          &lt;span class="pl-ent"&gt;repo&lt;/span&gt;: &lt;span class="pl-s"&gt;&amp;lt;repo&amp;gt;&lt;/span&gt;
          &lt;span class="pl-ent"&gt;issue&lt;/span&gt;: &lt;span class="pl-s"&gt;${{ github.event.issue.number }}&lt;/span&gt;

      - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Add positive comment&lt;/span&gt;
        &lt;span class="pl-ent"&gt;if&lt;/span&gt;: &lt;span class="pl-s"&gt;${{ startsWith(steps.sa.outputs.IS_50_POS, 'true') }} &lt;/span&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 60, 70, 80 and 90 also available&lt;/span&gt;
        &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;peter-evans/create-or-update-comment@a35cf36e5301d70b76f316e867e7788a55a31dae&lt;/span&gt;
        &lt;span class="pl-ent"&gt;with&lt;/span&gt;:
          &lt;span class="pl-ent"&gt;issue-number&lt;/span&gt;: &lt;span class="pl-s"&gt;${{ github.event.issue.number }}&lt;/span&gt;
          &lt;span class="pl-ent"&gt;body&lt;/span&gt;: &lt;span class="pl-s"&gt;|&lt;/span&gt;
&lt;span class="pl-s"&gt;            This issue&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/oscarnevarezleal/issue-chill"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Maintaner Must-Haves&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Usage
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .github/workflows/issue-sentiment.yml&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;Issue Sentiment Analysis&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;issues&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;opened&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;edited&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  
  &lt;span class="na"&gt;add-comment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;issues&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&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;Sentiment Analysis&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sa&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oscarnevarezleal/issue-chill@master&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;org&amp;gt;&lt;/span&gt;
          &lt;span class="na"&gt;repo&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;repo&amp;gt;&lt;/span&gt;
          &lt;span class="na"&gt;issue&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ github.event.issue.number }}&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;Add positive comment&lt;/span&gt;
        &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ startsWith(steps.sa.outputs.IS_50_POS, 'true') }}&lt;/span&gt; &lt;span class="c1"&gt;# 60, 70, 80 and 90 also available&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;peter-evans/create-or-update-comment@a35cf36e5301d70b76f316e867e7788a55a31dae&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;issue-number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ github.event.issue.number }}&lt;/span&gt;
          &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;This issue is available for anyone to work on. **Make sure to reference this issue in your pull request.** :sparkles: Thank you for your contribution! :sparkles:&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;Add negative reaction&lt;/span&gt;
        &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ startsWith(steps.sa.outputs.IS_70_NEG, 'true') }}&lt;/span&gt; &lt;span class="c1"&gt;# 50, 60, 70, 80 and 90 also available&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;peter-evans/create-or-update-comment@a35cf36e5301d70b76f316e867e7788a55a31dae&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;issue-number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ github.event.issue.number }}&lt;/span&gt;
          &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;Please refer to the Code Of Conduct.&lt;/span&gt;
            &lt;span class="s"&gt;&amp;gt; "This Aggression Will Not Stand, Man."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

</description>
      <category>actionshackathon21</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Movie Maker</title>
      <dc:creator>Oscar Nevárez</dc:creator>
      <pubDate>Thu, 11 Nov 2021 16:52:28 +0000</pubDate>
      <link>https://dev.to/insan3/movie-maker-2ib4</link>
      <guid>https://dev.to/insan3/movie-maker-2ib4</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;This project uses GithubActions to assemble a random movie clip every hour or so. Each of the frames is an image taken from the Unsplash Dataset.&lt;/p&gt;

&lt;p&gt;The movie clip is available in the form of an artifact available in the release section.&lt;/p&gt;

&lt;p&gt;There is no release history. The artifacts are replaced every time the workflow runs. Making the movie clip unique.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Wacky Wildcards&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/oscarnevarezleal"&gt;
        oscarnevarezleal
      &lt;/a&gt; / &lt;a href="https://github.com/oscarnevarezleal/movie-maker"&gt;
        movie-maker
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Movie maker&lt;/h1&gt;
&lt;div class="highlight highlight-source-shell position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; +---------------------------------+&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; |                                 |&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; +---------------------------------+&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; |                                 |&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; |             Action!             |&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; |                                 |&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; +---------------------------------+&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
About&lt;/h2&gt;
&lt;p&gt;This project uses GithubActions to assemble a random movie clip every hour or so. Each of the frames is an image taken from the &lt;a href="https://github.com/unsplash/datasets"&gt;Unsplash Dataset&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The movie clip is available in the form of an artifact available in the &lt;a href="https://github.com/oscarnevarezleal/movie-maker/releases"&gt;release section&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is no release history.The artifacts are replaced every time the workflow runs. Making the movie clip unique.&lt;/p&gt;
&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/devteam/join-us-for-the-2021-github-actions-hackathon-on-dev-4hn4" rel="nofollow"&gt;2021 GitHub Actions Hackathon&lt;/a&gt; on &lt;a href="https://dev.to" rel="nofollow"&gt;DEV&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Actions used&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;actions/checkout@v2&lt;/li&gt;
&lt;li&gt;actions/cache@v2&lt;/li&gt;
&lt;li&gt;FedericoCarboni/setup-ffmpeg@v1&lt;/li&gt;
&lt;li&gt;actions/upload-artifact@v2&lt;/li&gt;
&lt;li&gt;ncipollo/release-action@v1&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Tech&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.ffmpeg.org/" rel="nofollow"&gt;FfMpeg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/unsplash/datasets"&gt;Unsplash Dataset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/features/actions"&gt;Github Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/oscarnevarezleal/movie-maker"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Actions used
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;actions/checkout@v2&lt;/li&gt;
&lt;li&gt;actions/cache@v2&lt;/li&gt;
&lt;li&gt;FedericoCarboni/setup-ffmpeg@v1&lt;/li&gt;
&lt;li&gt;actions/upload-artifact@v2&lt;/li&gt;
&lt;li&gt;ncipollo/release-action@v1&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Tech
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.ffmpeg.org/"&gt;FfMpeg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/unsplash/datasets"&gt;Unsplash Dataset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/features/actions"&gt;Github Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>actionshackathon21</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Create cloud-native buildpacks using Github Actions</title>
      <dc:creator>Oscar Nevárez</dc:creator>
      <pubDate>Sun, 24 Oct 2021 19:07:36 +0000</pubDate>
      <link>https://dev.to/insan3/create-cloud-native-buildpacks-using-github-actions-pbb</link>
      <guid>https://dev.to/insan3/create-cloud-native-buildpacks-using-github-actions-pbb</guid>
      <description>&lt;p&gt;I've been working with  &lt;a href="https://buildpacks.io/"&gt;CNB technology&lt;/a&gt; a lot during the last few months particularly with &lt;a href="https://buildpacks.io/docs/tools/pack/"&gt;pack&lt;/a&gt; and  &lt;a href="https://github.com/paketo-buildpacks/packit"&gt;PackIt library&lt;/a&gt;. Overall it's been a lot of fun and learning along the way, I'm not going to lie here, the learning curve seemed propelled by a rocket but turned out to be quite simple once you grab your head around the new terminology and  &lt;a href="https://buildpacks.io/docs/concepts/#:~:text=What%20are%20buildpacks%3F,to%20run%20on%20any%20cloud."&gt;concepts&lt;/a&gt; . Just like anything in tech.&lt;/p&gt;

&lt;p&gt;Once I understood the hows and whys then I was &lt;em&gt;buildpacking&lt;/em&gt; this and &lt;em&gt;buildpacking&lt;/em&gt; that, pretty soon I found myself doing repetitive jobs that were begging to be automized. I'm talking about simple script bundled into buildpacks for better distribution, organization, and versioning plus all the benefits CNB brings to the table. &lt;/p&gt;

&lt;p&gt;I decided to invest some time in the making of a more generic tool to help me with this problem.&lt;/p&gt;

&lt;p&gt;I needed a little &lt;em&gt;something&lt;/em&gt; that took a list of commands and turn them into a valid build pack. In my mind, I could see and almost touch the form and shapes of this new toy, how the sequence of events was executed to coordinate the creation of this &lt;em&gt;on the fly _buildpack&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Idea
&lt;/h2&gt;

&lt;p&gt;The easiest way to explain the process is with the diagram below.&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="c"&gt;# From a working PackIt project, parametrize and map input commands &lt;/span&gt;
&lt;span class="c"&gt;# taken from a YML file&lt;/span&gt;
┌───────────────────────┐
│      Base file        │ 
└───────────────────────┘
          ▼
&lt;span class="c"&gt;# Compile the modified project so once the build process kicks &lt;/span&gt;
&lt;span class="c"&gt;# https://buildpacks.io/docs/concepts/components/lifecycle/build/&lt;/span&gt;
&lt;span class="c"&gt;# our buildpack executes one by one the **commands**&lt;/span&gt;
┌────────────────────────┐
│      Build.go          │ 
└────────────────────────┘
          ▼
&lt;span class="c"&gt;# Pack it for distribution and release at will&lt;/span&gt;
┌────────────────────────┐
│    buildpack.cnb       │
└────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Whiteboard time
&lt;/h2&gt;

&lt;p&gt;What I first did was draft a very simple definition that allowed me to see how a regular user such as me, in this case, would like to define a list of commands. I decided to use YAML for this. Here's how a &lt;em&gt;command&lt;/em&gt; file looks like. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This isn't a Github Action file although I borrowed some of the key names (name and run)&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;laraboot-commander&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;commands&lt;/span&gt;&lt;span class="pi"&gt;:&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;Init&lt;/span&gt;
      &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
        &lt;span class="s"&gt;echo "Init 🔥"&lt;/span&gt;
        &lt;span class="s"&gt;pwd&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;NoOps&lt;/span&gt;
      &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
        &lt;span class="s"&gt;echo "Hello 🗺️"&lt;/span&gt;
        &lt;span class="s"&gt;ls -ltah&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;Install deps&lt;/span&gt;
      &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
        &lt;span class="s"&gt;echo "installing 🤖"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;This list could as well be defined as a list of "strings" but I foresee probably as a next step eventually I'd like to be able to pass extra parameters, environment variables, etc. Just like Github allows it. So the final definition looks something like the one below.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="c"&gt;// type Commander struct {&lt;/span&gt;
&lt;span class="c"&gt;//  WorkingDir string `yaml:"directory"`&lt;/span&gt;
&lt;span class="c"&gt;//  Commands   []struct {&lt;/span&gt;
&lt;span class="c"&gt;//      Name string `yaml:"name"`&lt;/span&gt;
&lt;span class="c"&gt;//      Run  string `yaml:"run"`&lt;/span&gt;
&lt;span class="c"&gt;//  } `yaml:"commands"`&lt;/span&gt;
&lt;span class="c"&gt;// }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I thought, what would be the inputs I'd like to accept for the creation of buildpacks from Gh pov? That was a question easy to answer. Being familiar with pack cli I decided to ask just for &lt;strong&gt;name&lt;/strong&gt; and &lt;strong&gt;version&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Detect
&lt;/h2&gt;

&lt;p&gt;For the scope of the project, let's agree the detection will always occur and the buildpack will always participate in the build plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build
&lt;/h2&gt;

&lt;p&gt;The build part was quick because honestly executing a bash command or script in GO might be the easiest thing to do. Nevertheless, I found some blocks along the road that I didn't foresee in my planning.&lt;/p&gt;

&lt;p&gt;Such as this one:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ERROR: failed to build: the launch, cache and build flags should be in the types table of /layers/xxx&lt;/code&gt;. Basically, if we're authoring a buildpack from a template then allowing the user to provide a name for it, the name provided has to be considered during the build process. We need to &lt;a href="https://gist.github.com/oscarnevarezleal/532f0614228f13c3c472661b263ea1c4"&gt;grab the name of a buildpack&lt;/a&gt;  directly from the &lt;code&gt;buildpack.toml&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Also, the constant unknown of where I am stood (what context or path) and why it fails while running:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Locally&lt;/li&gt;
&lt;li&gt;Locally with WSDL &amp;amp; ubuntu&lt;/li&gt;
&lt;li&gt;Same repo remotely with Github actions&lt;/li&gt;
&lt;li&gt;Another repository (consumer) using the Github action&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the end, I can say that for this being a quick prototype it actually works really good and might even be a more robust thing down the road.&lt;/p&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;Ok, how do we use this Github Action that creates buildpack for us? I'm glad you ask, couldn't be simpler.&lt;/p&gt;

&lt;p&gt;First, create your &lt;em&gt;commander&lt;/em&gt; file. It can contain several or just one command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;#commander.yml&lt;/span&gt;
&lt;span class="na"&gt;laraboot-commander&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;commands&lt;/span&gt;&lt;span class="pi"&gt;:&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;Init&lt;/span&gt;
      &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
        &lt;span class="s"&gt;echo "Hello World"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As a part of my workflow I will use 3 actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;setup-pack&lt;/code&gt; action. This will set up pack cli and other util tools. Check out the  &lt;a href="https://github.com/buildpacks/github-actions"&gt;repo&lt;/a&gt;  if you feel interested.&lt;/li&gt;
&lt;li&gt;Our &lt;em&gt;commander&lt;/em&gt; action&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;actions/upload-artifact@v2&lt;/code&gt;
&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="c1"&gt;# .github/workflows/worklfow.yml&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;buildpacks/github-actions/setup-pack@v4.1.0&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;pack-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.20.0&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;Gh action&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;laraboot-io/laraboot-commander/actions/commander@master&lt;/span&gt;
        &lt;span class="na"&gt;with&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;my-buildpack&lt;/span&gt;
          &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.0.2&lt;/span&gt;
          &lt;span class="na"&gt;file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;commander.yml&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;Upload dist&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&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;dist&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dist&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if everything works fine it will look like this:&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="s1"&gt;'create'&lt;/span&gt;  buildpack.toml
    &lt;span class="s1"&gt;'create'&lt;/span&gt;  bin/build
    &lt;span class="s1"&gt;'create'&lt;/span&gt;  bin/detect
Successfully created &lt;span class="s1"&gt;'my-buildpack'&lt;/span&gt;
Successfully created package &lt;span class="s1"&gt;'dist/my-buildpack.cnb'&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yEdr2juH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1635008914707/JR8QNPmYZ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yEdr2juH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1635008914707/JR8QNPmYZ.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then as a part of your workflow or in another project you might use this buildpack as follows:&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; &lt;span class="nt"&gt;-p&lt;/span&gt; app
pack build sample-app &lt;span class="nt"&gt;--path&lt;/span&gt; app &lt;span class="nt"&gt;--buildpack&lt;/span&gt; my-buildpack.cnb &lt;span class="nt"&gt;--builder&lt;/span&gt; cnbs/sample-builder:bionic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We've seen how to create a buildpack from a YML file using a custom GitHub action but the same can be replicated for any other CI runner easily. &lt;/p&gt;

&lt;p&gt;We're going to hear more and more about buildpacks in the years to come. It's a game-changer for developers and operators in an era of automation and continuous integration. The source code of this post is available  &lt;a href="https://github.com/oscarnevarezleal/my-custom-buildpack"&gt;here&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Where to go from here?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.github.com/en/actions/creating-actions/developing-a-third-party-cli-action"&gt;Developing a third party CLI action&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://aws.amazon.com/blogs/containers/creating-container-images-with-cloud-native-buildpacks-using-aws-codebuild-and-aws-codepipeline/"&gt;Creating container images with Cloud Native Buildpacks using AWS CodeBuild and AWS CodePipeline&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devops</category>
      <category>cloudnative</category>
      <category>buildpacks</category>
      <category>cicd</category>
    </item>
    <item>
      <title>10 minute tutorial - Create and deploy a Laravel application using a low-code approach</title>
      <dc:creator>Oscar Nevárez</dc:creator>
      <pubDate>Wed, 13 Oct 2021 16:38:18 +0000</pubDate>
      <link>https://dev.to/insan3/10-minute-tutorial-create-and-deploy-a-laravel-application-using-a-low-code-approach-28h7</link>
      <guid>https://dev.to/insan3/10-minute-tutorial-create-and-deploy-a-laravel-application-using-a-low-code-approach-28h7</guid>
      <description>&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;In this post, I want to show how quickly and easily &lt;a href="https://laraboot.io" rel="noopener noreferrer"&gt;Laraboot&lt;/a&gt; can help you create a solid start point for your next Laravel application including &lt;strong&gt;models&lt;/strong&gt;, CRUD &lt;strong&gt;routes&lt;/strong&gt;, and &lt;strong&gt;Jetstream&lt;/strong&gt; integration. Best of all, we won't have to write any code.&lt;/p&gt;

&lt;p&gt;Once we got the application ready we will use &lt;strong&gt;AWS ECR&lt;/strong&gt; to deploy it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Initialize and configure
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Make sure your system has the following requirements beforehand.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://www.docker.com/products/docker-desktop" rel="noopener noreferrer"&gt;Docker desktop&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://nodejs.org/es/" rel="noopener noreferrer"&gt;NodeJs&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html" rel="noopener noreferrer"&gt;AWS cli&lt;/a&gt;  (for deployment only)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Install laraboot
&lt;/h3&gt;

&lt;p&gt;Laraboot is installed through NPM. Check out the project &lt;a href="https://www.npmjs.com/package/@laraboot-io/cli" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -g @laraboot-io/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create new project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;laraboot new laraboot-demo-app &lt;span class="nt"&gt;--php-version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;8 &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;laraboot-demo-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Buildtasks
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Build tasks are just custom  &lt;a href="https://buildpacks.io/docs/concepts/components/buildpack/#:~:text=A%20buildpack%20is%20a%20set,buildpack." rel="noopener noreferrer"&gt;&lt;em&gt;buildpacks&lt;/em&gt;&lt;/a&gt; that create or modify a Laraboot project.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this post, we're going to use several build tasks. If you feel adventurous, you can dive into the  &lt;a href="https://laraboot.io/buildtasks/" rel="noopener noreferrer"&gt;build task directory&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The ones we require are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://laraboot.io/buildtask/core/laravel-foundation-provider" rel="noopener noreferrer"&gt;@core/laravel-foundation-provider&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://laraboot.io/buildtask/core/laravel-config" rel="noopener noreferrer"&gt;@core/laravel-config&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://laraboot.io/buildtask/core/laravel-model" rel="noopener noreferrer"&gt;@core/laravel-model&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://laraboot.io/buildtask/core/laravel-foundation-provider" rel="noopener noreferrer"&gt;@core/laravel-starterkit-buildpack&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We add them using laraboot cli like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;laraboot task add @core/laravel-foundation-provider &lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;file
laraboot task add @core/laravel-config &lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;file
laraboot task add @core/laravel-model &lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;file
laraboot task add @core/laravel-starterkit-buildpack &lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configure
&lt;/h3&gt;

&lt;p&gt;Let's first create our data model. For the purpose of this post let's imagine we have 2 models. Post and Comment. We'll create them using the &lt;code&gt;model&lt;/code&gt; command like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;laraboot model add Post
√ Would you like to define your model now? &lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt; · &lt;span class="nb"&gt;true&lt;/span&gt;
√ Field name? · content
√ Field &lt;span class="nb"&gt;type&lt;/span&gt;? · varchar
√ Is this field unique? &lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt; · &lt;span class="nb"&gt;false&lt;/span&gt;
√ Is this field primary key? &lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt; · &lt;span class="nb"&gt;false&lt;/span&gt;
√ Would you like to add a new field? &lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt; · &lt;span class="nb"&gt;false
&lt;/span&gt;Model Post was added
laraboot model add Comment
√ Would you like to define your model now? &lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt; · &lt;span class="nb"&gt;true&lt;/span&gt;
√ Field name? · content
√ Field &lt;span class="nb"&gt;type&lt;/span&gt;? · varchar
√ Is this field unique? &lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt; · &lt;span class="nb"&gt;false&lt;/span&gt;
√ Is this field primary key? &lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt; · &lt;span class="nb"&gt;false&lt;/span&gt;
√ Would you like to add a new field? &lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt; · &lt;span class="nb"&gt;false
&lt;/span&gt;Model Comment was added

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then configure &lt;strong&gt;Jetstream&lt;/strong&gt;. Add the following piece of content to the end of your &lt;code&gt;buildpack.yml&lt;/code&gt; file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# buildpack.yml&lt;/span&gt;
&lt;span class="na"&gt;laravel-starterkit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# Jetstream configuration&lt;/span&gt;
  &lt;span class="na"&gt;jetstream&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;teams&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;stack&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;livewire&lt;/span&gt;
  &lt;span class="c1"&gt;# Breeze configuration&lt;/span&gt;
  &lt;span class="na"&gt;breeze&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
    &lt;span class="na"&gt;stack&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;inertia&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Build
&lt;/h2&gt;

&lt;p&gt;Once configured, kick the build process. Mind that the build time depends on your system capabilities and whether if this is the first time you build a laraboot project. Subsequent builds are significantly faster.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;If everything goes as planned you should end up with an OCI-compliant image named &lt;code&gt;laraboot-demo-app&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preview
&lt;/h2&gt;

&lt;p&gt;Let's see how everything looks like by running our application locally&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;laraboot run --port=9000
&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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1634142760628%2FT_-HlPaaQ.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1634142760628%2FT_-HlPaaQ.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Awesomeness.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Deploy to AWS
&lt;/h2&gt;

&lt;p&gt;Next, we're going to use AWS as a cloud provider and AWS ECR as the service registry but you can as well deploy to the CR of your preference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create an ECR repository using AWS cli
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;You can skip this part if you already have an &lt;strong&gt;AWS ECR&lt;/strong&gt; repository.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are two ways ( maybe more ) to create an ECR repository, in this post we'll use &lt;code&gt;aws-cli&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# create an ecr repository
aws ecr create-repository \
    --repository-name laraboot-demo-app \
    --image-scanning-configuration scanOnPush=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will output something like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"repository"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"repositoryArn"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"arn:aws:ecr:us-east-1:xxxxxxxxxxxx:repository/laraboot-demo-app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"registryId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"xxxxxxxxxxxx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"repositoryName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"laraboot-demo-app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"repositoryUri"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/laraboot-demo-app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"createdAt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2021-10-13T10:45:53-05:00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"imageTagMutability"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MUTABLE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"imageScanningConfiguration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"scanOnPush"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"encryptionConfiguration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"encryptionType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AES256"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create an ECR repository through the AWS ECR console
&lt;/h3&gt;

&lt;p&gt;You can achieve the same by signing into the AWS console and heading to the &lt;a href="https://us-east-1.console.aws.amazon.com/ecr/repositories?region=us-east-1" rel="noopener noreferrer"&gt;ECR service console management&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on Create repository&lt;/li&gt;
&lt;li&gt;Fill out the blanks in the &lt;em&gt;General settings&lt;/em&gt; panel&lt;/li&gt;
&lt;li&gt;Click on Create repository&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deploy
&lt;/h3&gt;

&lt;p&gt;The steps to deploy our image are the following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sign in to the AWS ECR&lt;/li&gt;
&lt;li&gt;Tag our image&lt;/li&gt;
&lt;li&gt;Deploy
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
# replace xxxxxxxxxxxx with your AWS account id
# replace region if it's not us-east-1

# sign in to the ECR
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com

## tag our image
docker tag laraboot-demo-app:latest xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/laraboot-demo-app:latest

## push
docker push xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/laraboot-demo-app:latest

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;On this occasion, we use &lt;a href="https://laraboot.io/" rel="noopener noreferrer"&gt;Laraboot&lt;/a&gt;  to set up a new Laravel application without having to write any line of code. This application has been containerized and deployed to AWS ECR in a matter of minutes.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>aws</category>
      <category>php</category>
      <category>laraboot</category>
    </item>
    <item>
      <title>Bootstrap a cloud-native Laravel application with Jetstream support</title>
      <dc:creator>Oscar Nevárez</dc:creator>
      <pubDate>Tue, 12 Oct 2021 16:00:58 +0000</pubDate>
      <link>https://dev.to/insan3/bootstrap-a-cloud-native-laravel-application-with-jetstream-support-cll</link>
      <guid>https://dev.to/insan3/bootstrap-a-cloud-native-laravel-application-with-jetstream-support-cll</guid>
      <description>&lt;h2&gt;
  
  
  Preface
&lt;/h2&gt;

&lt;p&gt;Laravel Jetstream is a starter kit for Laravel and provides a starting point for a Laravel application. Jetstream provides the implementation for the application's login, registration, email verification, two-factor authentication, session management, API via Laravel Sanctum, and optional team management features.&lt;/p&gt;

&lt;p&gt;Although Laravel Jetstream requires NodeJS and PHP &amp;gt;= 8.0. On this occasion, we will bootstrap a Laravel application with Jetstream support using only laraboot CLI. &lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;We're going to need &lt;a href="https://www.npmjs.com/package/@laraboot-io/cli"&gt;laraboot&lt;/a&gt; . Being an NPM CLI tool we're going to have to install it globally by running the &lt;code&gt;npm&lt;/code&gt; install command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -g @laraboot-io/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;laraboot new app &lt;span class="nt"&gt;--php-version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;8.0.&lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Include required build tasks
&lt;/h2&gt;

&lt;p&gt;Jetstream support is provided by the task &lt;code&gt;@core/laravel-starterkit-buildpack&lt;/code&gt;. Let's add it to the mix and also add Paketo's NodeJs buildpack which take care of running all the &lt;code&gt;npm&lt;/code&gt; command for us during the buildtime.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;laraboot task add @core/laravel-starterkit-buildpack &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;file &lt;span class="nt"&gt;-vvv&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;laraboot task add nodejs &lt;span class="se"&gt;\ &lt;/span&gt;
&lt;span class="nt"&gt;--imageUri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;gcr.io/paketo-buildpacks/nodejs &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;external &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--prepend&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-vvv&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configure
&lt;/h2&gt;

&lt;p&gt;Buildtask configurations occur through the buildpack.yml file, should be already there in your project's root if the project was bootstrapped by laraboot. In case the file is not there we have to create it manually.&lt;/p&gt;

&lt;p&gt;The following is the configuration we will use. We had disabled Breeze and enabled Jetstream.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# buildpack.yml&lt;/span&gt;
&lt;span class="c1"&gt;# Enable Jetstream teams with livewire&lt;/span&gt;
&lt;span class="na"&gt;laravel-starterkit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# Jetstream configuration&lt;/span&gt;
  &lt;span class="na"&gt;jetstream&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;teams&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;stack&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;livewire&lt;/span&gt;
  &lt;span class="c1"&gt;# Breeze configuration&lt;/span&gt;
  &lt;span class="na"&gt;breeze&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;false&lt;/span&gt;
    &lt;span class="na"&gt;stack&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;inertia&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More information about the configuration of this task can be found &lt;a href="https://laraboot.io/buildtask/core/laravel-starterkit-buildpack"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Build
&lt;/h2&gt;

&lt;p&gt;Build our custom Laravel application couldn't be easier than run the following command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;laraboot build &lt;span class="nt"&gt;-vvv&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Run
&lt;/h2&gt;

&lt;p&gt;After the build process is complete we end up with an OCI image called &lt;code&gt;app&lt;/code&gt; which you can either run locally or deploy to the cloud using your favorite cloud provider.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;laraboot run --port=9000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Source code
&lt;/h2&gt;

&lt;p&gt;Absolutely? check it out at this  &lt;a href="https://github.com/oscarnevarezleal/laraboot-jetstream-demo/tree/main"&gt;repo&lt;/a&gt; &lt;/p&gt;

</description>
      <category>laravel</category>
      <category>laraboot</category>
    </item>
    <item>
      <title>Cloud-native Laravel</title>
      <dc:creator>Oscar Nevárez</dc:creator>
      <pubDate>Mon, 04 Oct 2021 17:02:06 +0000</pubDate>
      <link>https://dev.to/insan3/cloud-native-laravel-4o22</link>
      <guid>https://dev.to/insan3/cloud-native-laravel-4o22</guid>
      <description>&lt;h2&gt;
  
  
  What is Laraboot?
&lt;/h2&gt;

&lt;p&gt;Laraboot is a CLI tool that allows Laravel developers to bootstrap and configure a Laravel application using cloud-native technologies which make your developer experience a lot more enjoyable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;laraboot cli is distributed as a NPM project so make sure you have NodeJs installed then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -g @laraboot-io/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Dependencies
&lt;/h3&gt;

&lt;p&gt;We're also going to need &lt;code&gt;Docker&lt;/code&gt; installed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a new project
&lt;/h2&gt;

&lt;p&gt;Similar to the Laravel installer you can run laraboot new to initialize a Laravel application.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;laraboot new app --php-version=8.0 &amp;amp;&amp;amp; cd app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configure using core tasks
&lt;/h2&gt;

&lt;p&gt;Laraboot has this &lt;code&gt;task&lt;/code&gt; concept which resemble Heroku's &lt;code&gt;buildpacks&lt;/code&gt;, the &lt;code&gt;tasks&lt;/code&gt; participate during the build time allowing te construction of a Laravel application using a &lt;em&gt;low-code&lt;/em&gt; approach.&lt;/p&gt;

&lt;p&gt;Core tasks allow Laraboot to configure your Laravel application without writing any code.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tip: you can run laraboot task search * --core-only to discover all the available core tasks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We are going to use two of those tasks in this occasion &lt;code&gt;model&lt;/code&gt; and &lt;code&gt;config&lt;/code&gt; these tasks will help us to configure presicely those aspects of the framework.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# this first one is the foundation for other tasks.
laraboot task add @core/laravel-foundation-provider --format=file

laraboot task add @core/laravel-model --format=file
laraboot task add @core/laravel-config --format=file

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Data model
&lt;/h2&gt;

&lt;p&gt;Let's create some models, the most common of the examples I've seen in the Laravel forums involve a &lt;code&gt;Post&lt;/code&gt; and a &lt;code&gt;Comment&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;laraboot model add Post
√ Would you like to define your model now? (y/N) · true
√ Field name? · content
√ Field type? · varchar
√ Is this field unique? (y/N) · false
√ Is this field primary key? (y/N) · false
√ Would you like to add a new field? (y/N) · false
Model **Post** was added

laraboot model add Comment
√ Would you like to define your model now? (y/N) · true
√ Field name? · content
√ Field type? · varchar
√ Is this field unique? (y/N) · false
√ Is this field primary key? (y/N) · false
√ Would you like to add a new field? (y/N) · false
Model **Comment** was added
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configuration is preserved in file &lt;code&gt;laraboot.json&lt;/code&gt; and it will be read during the build process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure our application
&lt;/h2&gt;

&lt;p&gt;Something every Laravel developer is familiar with is the configuration of a new application. Laravel provides a simple file configuration system. Over time however, you may find yourself repeating the same exact configuration over and over again.&lt;/p&gt;

&lt;p&gt;With Laraboot you only have to do it once, the configuration presset is stored in file and can be reused in another project.&lt;/p&gt;

&lt;p&gt;Let's see how:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Change the application name 
#  with a list of environment variables to look up for 
#  before using default value "App"

laraboot config set config.app/name App -e APP_NAME -e APPNAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;During the build process Laraboot will use &lt;code&gt;@core/laravel-model&lt;/code&gt; task to automatically map every configuration set via CLI to Laravel config files.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this case the file modified will be &lt;code&gt;config/app.php&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;laraboot build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We’re ready to build the application. In this step, Laraboot will use the source code and will transform it using build tasks to finally create an OCI image. Please mind the process might take a while especially if this is the first time you run the build command.&lt;/p&gt;

&lt;p&gt;If everything goes on without any problem you should have your Laravel project initialized with additional code generated especially for your project in the way you configure it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What did just happened?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Under the hook Laraboot use laravel installer to initialize a new project&lt;/li&gt;
&lt;li&gt;Using the configured tasks it configured your Laravel application&lt;/li&gt;
&lt;li&gt;Each task used during the build process contribute to the final OCI image&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Run
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;laraboot run --port=900
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Boom! we have our application running. Head to &lt;a href="http://localhost:9000"&gt;http://localhost:9000&lt;/a&gt; and you’ll see a familiar welcome page.&lt;/p&gt;

&lt;p&gt;At this time you might figured it out already. Our OCI image is ready to be used, not to mention deployed. Images are named and tagged using your application name, in this case &lt;code&gt;demo&lt;/code&gt;. Check it out&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We used laraboot to create and configure a Laravel application using cloud-first principles. It tooks us some minutes to go from scratch to a custom state from which we can continue the development process as regular. Laraboot &lt;code&gt;tasks&lt;/code&gt; are extremely useful to bootstrap a Laravel application, this time we only used two of them.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>laraboot</category>
    </item>
  </channel>
</rss>
