<?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: Satyakoidala</title>
    <description>The latest articles on DEV Community by Satyakoidala (@satyakoidala).</description>
    <link>https://dev.to/satyakoidala</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%2F949748%2F87a3144a-afec-477e-9771-a916d5c135e4.png</url>
      <title>DEV Community: Satyakoidala</title>
      <link>https://dev.to/satyakoidala</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/satyakoidala"/>
    <language>en</language>
    <item>
      <title>Git Merge vs. Git Rebase: A Beginner's Guide</title>
      <dc:creator>Satyakoidala</dc:creator>
      <pubDate>Mon, 23 Sep 2024 07:28:58 +0000</pubDate>
      <link>https://dev.to/satyakoidala/git-merge-vs-git-rebase-a-beginners-guide-3cki</link>
      <guid>https://dev.to/satyakoidala/git-merge-vs-git-rebase-a-beginners-guide-3cki</guid>
      <description>&lt;p&gt;When working with Git, you'll often find yourself merging or rebasing branches. These two commands are similar in that they integrate changes from one branch into another, but they achieve this in different ways. Let's break down the key differences and when to use each.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git Merge
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What it does:
&lt;/h3&gt;

&lt;p&gt;Combines the changes from one branch into another by creating a new commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Git creates a new commit that represents the combined changes of the two branches.&lt;/li&gt;
&lt;li&gt;This new commit is added to the history of the target branch.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to use it:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;When you want to preserve the history of both branches.&lt;/li&gt;
&lt;li&gt;When you're merging a feature branch back into the main branch.&lt;/li&gt;
&lt;li&gt;When you're resolving conflicts between branches.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# bash
git checkout main
git merge feature-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Git Rebase
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What it does:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Replays the commits from one branch onto another, creating a linear history.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How it works:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Git takes the commits from the source branch and replays them onto the target branch, one by one.&lt;/li&gt;
&lt;li&gt;If there are conflicts, you'll need to resolve them before continuing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to use it:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;When you want to keep a clean, linear history.&lt;/li&gt;
&lt;li&gt;When you're preparing a feature branch for a pull request.&lt;/li&gt;
&lt;li&gt;When you're fixing a bug in an old commit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# bash
git checkout feature-branch
git rebase main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Differences
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqlqydn67ejjun7dslyyb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqlqydn67ejjun7dslyyb.png" alt="git merge vs rebase" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Understand the implications:
&lt;/h3&gt;

&lt;p&gt;Before using either command, make sure you understand how it will affect your project's history.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use rebase for clean history:
&lt;/h3&gt;

&lt;p&gt;If you want a clean, linear history, rebase is often the preferred choice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use merge for preserving history:
&lt;/h3&gt;

&lt;p&gt;If you need to preserve the history of both branches, merge is the better option.&lt;/p&gt;

&lt;h4&gt;
  
  
  Be cautious with rebase:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Rebasing can rewrite history, so be careful when using it on public branches (shared branches). &lt;/li&gt;
&lt;li&gt;If you need to &lt;strong&gt;undo a rebase&lt;/strong&gt;, you can use &lt;code&gt;git reflog&lt;/code&gt; to find the old commit and reset to it.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;By understanding the differences between Git merge and Git rebase, you can choose the right command for your specific use case and maintain a clean and organized Git history.&lt;/p&gt;

&lt;p&gt;For a more definitive guide, you can check out this awesome &lt;a href="https://youtu.be/zOnwgxiC0OA?si=-dXtJlEz0Gfccvrz" rel="noopener noreferrer"&gt;YouTube tutorial&lt;/a&gt; which I have found helpful in mastering the concepts.&lt;/p&gt;

&lt;p&gt;Thank you! Happy Learning!! &lt;/p&gt;

</description>
      <category>git</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Essential Git Commands: A Developer’s Guide</title>
      <dc:creator>Satyakoidala</dc:creator>
      <pubDate>Sun, 21 Apr 2024 12:37:47 +0000</pubDate>
      <link>https://dev.to/satyakoidala/essential-git-commands-a-developers-guide-4cd2</link>
      <guid>https://dev.to/satyakoidala/essential-git-commands-a-developers-guide-4cd2</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome, fellow developers! In today’s post, we’ll delve into the powerful world of Git commands. Whether you’re managing version control, collaborating with a team, or ensuring code integrity, Git remains an indispensable tool in our arsenal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up Your Environment
&lt;/h2&gt;

&lt;p&gt;Assuming you have a Git repository hosted remotely (such as on GitHub), let’s explore the essential commands. Here’s the basic structure of your repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/origin (remote origin)
   |-- &amp;lt;master/develop/main branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Cloning the Repository
&lt;/h2&gt;

&lt;p&gt;To get started, clone the remote repository to your local machine. GitHub provides two secure protocols for this purpose:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTTPS Protocol&lt;/strong&gt;: Authenticate using your Git login credentials.&lt;br&gt;
&lt;strong&gt;SSH Protocol&lt;/strong&gt;: Utilize SSH keys for secure authentication.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Clone the repository
git clone &amp;lt;remote_repository_link&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating and Switching Branches
&lt;/h2&gt;

&lt;p&gt;Stay up-to-date with the remote head by creating a local branch that tracks it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Create a new local branch
git checkout -b &amp;lt;new_local_branch&amp;gt; &amp;lt;upstream/remote_head_branch&amp;gt;

# Switch to a specific branch
git checkout &amp;lt;branch_name&amp;gt;

# List available branches
git branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Keeping Your Workspace Fresh
&lt;/h2&gt;

&lt;p&gt;Before starting work, ensure a clean slate by pulling the latest changes from the remote repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Pull changes from the remote
git pull origin &amp;lt;remote_head_branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Committing Your Work
&lt;/h2&gt;

&lt;p&gt;As a developer, wrapping up your day with a git commit is a habit. First, stage your changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Add changes to the staging area
git add "&amp;lt;filename1&amp;gt;" "&amp;lt;filename2&amp;gt;"

# Or add all modified files
git add .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, commit your changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Commit with a descriptive message
git commit -m "__commit__msg__"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can stack any number of commits before you push into the remote origin and create a Pull Request (PR).&lt;/p&gt;

&lt;h2&gt;
  
  
  Pushing to the Remote Repository
&lt;/h2&gt;

&lt;p&gt;When your task is complete, push your commits to the remote repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Push to the remote
git push origin &amp;lt;working_branchname&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It returns a PR-initiating link, you can use it to create your PR.&lt;/p&gt;

&lt;h2&gt;
  
  
  Undoing a Commit
&lt;/h2&gt;

&lt;p&gt;Mistakes happen! To undo a commit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Undo the last commit (or nth last commit)
git reset HEAD~[1,n]

# Keep changes staged while undoing the commit
git reset --soft HEAD~[1,n]

# Delete the entire commit (use with caution)
git reset --hard HEAD~[1,n]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Comparing Different Heads
&lt;/h2&gt;

&lt;p&gt;Git makes it easy to compare commits, branches, or changes. Learn more in this &lt;a href="https://www.git-tower.com/learn/git/faq/git-compare-two-branches"&gt;blog&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;# Compare the last commit with uncommitted changes
git diff

# Compare a specific file
git diff -- &amp;lt;filename&amp;gt;

# Compare between branches or commits
git diff &amp;lt;name/hash1&amp;gt;..&amp;lt;name/hash2&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Copying Commits with Cherry-Pick
&lt;/h2&gt;

&lt;p&gt;Copying commits from one branch to another is a common task. The &lt;code&gt;git cherry-pick&lt;/code&gt; command allows you to selectively apply specific commits to a different branch. Here’s how:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Make sure you're on the target branch
git checkout &amp;lt;target_branch&amp;gt;

# Cherry-pick the desired commit
git cherry-pick &amp;lt;to_be_copied_commit_hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Checking Branch Status
&lt;/h2&gt;

&lt;p&gt;To assess the status of your local branch relative to its upstream (usually the remote head), use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Check branch status
git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Exploring Commit History
&lt;/h2&gt;

&lt;p&gt;Understanding your git commit history is essential. To view the complete log of commits in reverse chronological order, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# View commit log
git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deleting a Branch
&lt;/h2&gt;

&lt;p&gt;If the branch is no longer needed! Delete it!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Delete a branch
git branch -D &amp;lt;branchname&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;These commands form the backbone of Git usage. While minor syntactic differences may exist across Git versions, mastering these essentials will serve you well throughout your development journey.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

&lt;p&gt;Feel free to customize this guide to suit your specific needs. If you have any questions or need further assistance, don’t hesitate to ask!&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
    </item>
    <item>
      <title>CI pipeline for ReactJS apps using GitHub actions</title>
      <dc:creator>Satyakoidala</dc:creator>
      <pubDate>Wed, 14 Jun 2023 17:31:20 +0000</pubDate>
      <link>https://dev.to/satyakoidala/ci-pipeline-for-reactjs-apps-using-github-actions-1k7</link>
      <guid>https://dev.to/satyakoidala/ci-pipeline-for-reactjs-apps-using-github-actions-1k7</guid>
      <description>&lt;p&gt;Hey folks,&lt;/p&gt;

&lt;p&gt;In this post, we will understand and gain knowledge about "How to create basic CI pipeline for your React App using GitHub Actions?". &lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Basic understanding of Git &amp;amp; GitHub.&lt;/li&gt;
&lt;li&gt;Basic understanding of JSON notation.&lt;/li&gt;
&lt;li&gt;Any react application source code made with your efforts🤓. (You can contribute to others code as well 😉) &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧐 Firstly, what are GitHub Actions and what is CI?
&lt;/h2&gt;

&lt;p&gt;To simply put, these are set of actions that are triggered on Git events like push, pull request and are executed in the sequence mentioned through the workflow file.&lt;/p&gt;

&lt;p&gt;CI (Continuous Integration) is the process building and testing the code for every commit made on your chosen branches. It ensures that everything in the code is working fine after the commit is merged just like in your local machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  😯 That's bit too much, now what is the workflow file??
&lt;/h2&gt;

&lt;p&gt;It is the actual file, that is responsible for defining the actions on git events for continuous integration and deployment. You can customize your workflow file to work with any your own personalized CI/CD server deployed on tools like Jenkins, Ansible, Travis CI, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  😓😢 Didn't have personalized CI/CD server to serve the CI purpose??
&lt;/h2&gt;

&lt;p&gt;Don't worry my friend! GitHub actions comes to rescue. You don't need to have any personalized CI server anymore. When a workflow file is detected by git, it starts working on with it. Identifying that there is no personalized CI server defined in workflow file, GitHub actions starts deploying machines from its own marketplace and begins running the actions mentioned by you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Yay!😊 Now that we have got the basic understanding of theory behind our idea. Let's start understanding the workflow file for CI pipeline for react-app.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Follow through your project structure and make necessary changes or adjustments to your workflow file later. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This is my project structure at high-level. Inside the react-app folder, it is like any other react-project like yours.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hdo9s0CG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6n6a2tz5h2roj5t83avc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hdo9s0CG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6n6a2tz5h2roj5t83avc.png" alt="Project Structure" width="242" height="147"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always keep your workflows folder like mine, in the root level of the folder. So create a &lt;code&gt;.github&lt;/code&gt; folder, inside of which create another folder as &lt;code&gt;workflows&lt;/code&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inside workflows folder, create a workflow file with any name using &lt;code&gt;.yml&lt;/code&gt; extension. Add the following code to the workflow file.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node

name: Node.js CI for SplitWise React App

on:
    push:
        branches: ["develop"]
    pull_request:
        branches: ["develop"]

jobs:
    build:
        runs-on: ubuntu-latest

        defaults:
            run:
                working-directory: ./react-app/

        strategy:
            matrix:
                node-version: [14.x, 16.x]

        steps:
            - uses: actions/checkout@v3
            - name: Use Node.js ${{ matrix.node-version }}
              uses: actions/setup-node@v3
              with:
                  node-version: ${{ matrix.node-version }}
                  cache: "npm"
                  cache-dependency-path: "./react-app/package-lock.json"

            - run: |
                  npm i
                  npm run build
                  npm run test

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  What is Yaml file?? 🫠
&lt;/h2&gt;

&lt;p&gt;Yaml (.yml) file syntax is inspired from JSON notation. It's kind of similar to expanded JSON notation without brackets. The space indentation in yaml file serves the purpose of brackets in JSON file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's understand the workflow file line by line. 🤔
&lt;/h2&gt;

&lt;p&gt;All the keys in the workflow file are standard keywords for CI pipeline. They are all self-described, but I will try to help you understand in my way.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;name&lt;/strong&gt;: defines the name of the pipeline&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;on&lt;/strong&gt;: defines the rules for git events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;push/pull_request&lt;/strong&gt;: defines the git events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;branches&lt;/strong&gt;: defines a value or list of branch names or branch name patterns that uses this workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;jobs&lt;/strong&gt;: defines the jobs for pipeline to run on git events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;build&lt;/strong&gt;: custom defined name for build job.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;runs-on&lt;/strong&gt;: defines a value or list OS machines that are deployed into server instances.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;defaults&lt;/strong&gt;: takes in nested rules or objects, for overriding default values.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;run&lt;/strong&gt;: defines the run task parameters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;working-directory&lt;/strong&gt;: under run task, we are mentioning the working directory in our folder structure. In general, it will be the root directory.
In my case, I have two variants of the same application, python console app and react web app. I want this workflow to work only for react-app, hence the path &lt;code&gt;./react-app/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;strategy&lt;/strong&gt;: defines the rules for the same job with multiple software versions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;matrix&lt;/strong&gt;: defines the structure to list the software versions over the same job.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;node-version&lt;/strong&gt;: custom key to list node versions, to be used later in common job steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;steps&lt;/strong&gt;: defines the start of steps in the later lines of code. Hyphen syntax is used to index each step under a job.

&lt;ul&gt;
&lt;li&gt;Each step can be named or ignored.&lt;/li&gt;
&lt;li&gt;Each step can be manually defined like the &lt;code&gt;run&lt;/code&gt; step or&lt;/li&gt;
&lt;li&gt;Each step can use existing defined templates defined in the GitHub actions marketplace like in step 2.&lt;/li&gt;
&lt;li&gt;actions/checkout@v3 is necessary to ensure that the jobs are ran on the selected branches.&lt;/li&gt;
&lt;li&gt;actions/setup-node@v3 is used to setup the node in each job with different versions from matrix.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;with&lt;/strong&gt;: defines the rules used for defining multiple jobs over the same steps (like for ensuring software compatibility with multiple dependency software versions).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;node-version&lt;/strong&gt;: a pre-defined keyword for defining the node version needed by actions/setup-node@v3 to setup on the run.
We use &lt;code&gt;${{ variable }}&lt;/code&gt; syntax to stuff values into yaml file. Here, I have used it for picking node-versions from matrix and thereby creating multiple jobs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cache&lt;/strong&gt;: defines the cache module. Since it is react-app, it uses &lt;code&gt;npm&lt;/code&gt; for cache.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cache-dependency-path&lt;/strong&gt;: it defines the file path for cache and dependency module or package versions. Generally, it is served by package-lock.json or yarn-lock.json file and it will be available in the root directory of the project.
In my case, there is slight change in the location package-lock.json file, so I have updated the proper path for it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;run&lt;/strong&gt;: under steps, it is predefined key that takes a command to execute in the server (ubuntu) against software image defined in the matrix (node) for the specific job.

&lt;ul&gt;
&lt;li&gt;You can use pipe (|) operator in the first line, to write multiple series of commands to execute on the same the run.&lt;/li&gt;
&lt;li&gt;If any run command fails, the next series of commands in the order will be prevented from execution.&lt;/li&gt;
&lt;li&gt;And come on! You know the commands necessary for building a react-app. 👍😉 &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Everything is ready with our CI pipeline, now it's time to check it action. 😎
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;With all your changes in your local machine, stage them and make a commit.&lt;/li&gt;
&lt;li&gt;Push the commit to your remote origin repository.&lt;/li&gt;
&lt;li&gt;Head over to GitHub and open your repository. There on the top local nav menu, click on &lt;code&gt;Actions&lt;/code&gt; tab.&lt;/li&gt;
&lt;li&gt;You should see your workflow file getting used for CI against your commit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ATOY7J5I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rt7k02vikjpx267ff7r3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ATOY7J5I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rt7k02vikjpx267ff7r3.png" alt="My GitHub Actions for CI pipeline" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: I have been working to fix the errors in my project 🤞. Your project should be doing fine 👍. &lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts 😶‍🌫️
&lt;/h2&gt;

&lt;p&gt;I have shared my knowledge to the best on creating a CI pipeline for building jobs for every code commit with basic and important rules. Please, feel free to share your thoughts and your experiences in the comment section. Happy Coding!! 🤗&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>beginners</category>
      <category>githubactions</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to get started with your first Open Source Contribution??</title>
      <dc:creator>Satyakoidala</dc:creator>
      <pubDate>Tue, 04 Apr 2023 08:37:21 +0000</pubDate>
      <link>https://dev.to/satyakoidala/how-to-get-started-with-your-first-open-source-contribution-1epp</link>
      <guid>https://dev.to/satyakoidala/how-to-get-started-with-your-first-open-source-contribution-1epp</guid>
      <description>&lt;p&gt;Hey Dev folks, we all knew the urge to kickstart a development project out of someone else idea which we really like and we often coin it as &lt;code&gt;Open Source Contribution&lt;/code&gt;. We knew that we want to do it and there are plenty of thoughts wandering in your mind about what to do? and what to use?.  &lt;/p&gt;

&lt;p&gt;But, most people commonly forget the basic question of how to get started? in the first place. I was in the same dilemma in my initial stages of open source development. So, here I am listing out an easy process to start your first open source contribution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Following are the steps that I have followed before my first open source contribution,
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt;&lt;br&gt;
Learn and practice building any basic skills in the area of your choice of IT career that has potential real life problems. (I chose web development and there is always a scope to learn)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt;&lt;br&gt;
Learn about basic &lt;code&gt;git&lt;/code&gt; commands, &lt;code&gt;GitHub&lt;/code&gt; repositories and their purpose in &lt;code&gt;Open Source Contributions&lt;/code&gt;. (If you know the reason, you will never forget it)&lt;/p&gt;

&lt;p&gt;Learn more about git in &lt;a href="https://git-scm.com/doc"&gt;https://git-scm.com/doc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt;&lt;br&gt;
Next, lookout for GitHub issues in the GitHub community and choose one. &lt;/p&gt;

&lt;p&gt;You can search for technology topics or keywords in &lt;code&gt;GitHub search&lt;/code&gt;, and in the results you can choose any repository to your likes and checkout the issues section for the repo for any open issues for contribution.&lt;/p&gt;

&lt;p&gt;Or if you are in the right season of the year, you might end up in the &lt;code&gt;Hacktoberfest Event&lt;/code&gt; (occurs in October, a great place to learn about git and open source contributions). &lt;/p&gt;

&lt;p&gt;You can start by just searching using the &lt;code&gt;#hacktoberfest2022&lt;/code&gt; or &lt;code&gt;#hacktoberfest&lt;/code&gt; keywords in the GitHub search.&lt;/p&gt;

&lt;p&gt;(For more details on hacktoberfest, checkout &lt;a href="https://opensource.com/article/22/10/how-to-contribute-hacktoberfest"&gt;https://opensource.com/article/22/10/how-to-contribute-hacktoberfest&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt;&lt;br&gt;
After step 3, start interacting with the GitHub repository owner in the issue thread. (Always remember, early bird catches the fly. There might be other developers who are competing for the same issue)&lt;/p&gt;

&lt;p&gt;Be the first to interact and ask the owner to assign the issue to you, so that your contribution is reserved for consideration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; &lt;br&gt;
After you got yourself an issue to work on, start working on it. Try to satisfy the needs of the issue. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Lastly, try to satisfy yourself with your development, because the passion and efforts you put in reciprocates each other and leaves you a positive mindset.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once, if you are done with your changes, follow the necessary git steps and make your first PR.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt;&lt;br&gt;
After creating PR, do not forget mention the created PR details in the issue thread as well and update the thread requesting the code owner to review the code.&lt;/p&gt;

&lt;p&gt;Wait for the review. If your code manages to pull off the issue, your changes will be accepted and merged. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Voila! and Congratulations!! You have made your first open source contribution.&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;It is always good to see your changes in live page, you are lucky to get a repo with live deployment after your changes are merged.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Actions towards my first Open Source Contribution are as below.
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Luckily, I had started during the season of Hacktoberfest2022. But, I had covered steps 1 &amp;amp; 2 prior at hand, so all that is left for me is to select an issue and work on it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;So, I have searched for the issues using hacktoberfest2022 keyword and found my first beginner-friendly issue (try to choose the issue of your knowledge or technical expertise). You can refer to my first interactions with GitHub issue owner here, &lt;a href="https://github.com/sceary-expert/Codeforces-Problem-of-The-Day/issues/5"&gt;https://github.com/sceary-expert/Codeforces-Problem-of-The-Day/issues/5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I have made the necessary changes and improvements, then created PR. Checkout my first Pull Request, &lt;a href="https://github.com/sceary-expert/Codeforces-Problem-of-The-Day/pull/7"&gt;https://github.com/sceary-expert/Codeforces-Problem-of-The-Day/pull/7&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thanks to my efforts, the code owner liked my approach and approved my changes, also deployed it to the live page.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sometimes, a good approach and passion for development leaves with you more opportunities.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I got more issues from the same code owner and repository. I have made UI improvements as well, along with codeforces API integration for the live page.&lt;/p&gt;

&lt;p&gt;Here is the live page URL after my changes got deployed, &lt;a href="https://codeforces-probem-of-the-day.netlify.app/"&gt;https://codeforces-probem-of-the-day.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In the end, it all starts with a first step. I hope you will get to know your first steps, if you came till here. &lt;strong&gt;Happy Coding! Happy Dev!!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;And always do not forget to be grateful to the one who gave you the opportunity. I would like to use this post to thank &lt;strong&gt;@sceary-expert&lt;/strong&gt; for the first opportunity.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
