<?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: Shashank Mishra</title>
    <description>The latest articles on DEV Community by Shashank Mishra (@shashank-mishra-dev).</description>
    <link>https://dev.to/shashank-mishra-dev</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%2F2489253%2F64615ac7-fbee-48a1-98b9-df372155b4d1.png</url>
      <title>DEV Community: Shashank Mishra</title>
      <link>https://dev.to/shashank-mishra-dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shashank-mishra-dev"/>
    <language>en</language>
    <item>
      <title>Part 4 : Create azure-pipelines.yml and setting environment variables</title>
      <dc:creator>Shashank Mishra</dc:creator>
      <pubDate>Thu, 28 Nov 2024 11:10:41 +0000</pubDate>
      <link>https://dev.to/shashank-mishra-dev/part-4-create-azure-pipelinesyml-and-setting-environment-variables-47m6</link>
      <guid>https://dev.to/shashank-mishra-dev/part-4-create-azure-pipelinesyml-and-setting-environment-variables-47m6</guid>
      <description>&lt;p&gt;In this part, I’ll walk you through creating azure-pipelines.yml file which is used to define and configure Azure Pipelines, which is Microsoft's CI/CD (Continuous Integration/Continuous Delivery) service. It provides a declarative way to describe how your application should be built, tested, and deployed. The file resides in your source code repository and allows you to automate and manage your pipeline workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Create azure-pipelines.yml file
&lt;/h2&gt;

&lt;p&gt;Please create a new file named azure-pipeline.yml(if does not exist already) on root level of your project directory and update/paste the content with below mentioned code snippet :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;trigger:
  - main
pr:
  autoCancel: true
  branches:
    include:
      - main
  drafts: true
stages:
  - stage: Build
    displayName: Build the web application
    jobs:
      - job: BuildJob
        displayName: Build job
        pool:
          vmImage: ubuntu-latest
        steps:
          - task: NodeTool@0
            inputs:
              versionSpec: 20.x
            displayName: Install Node.js
          - script: |
              npm install
              npm run build
            displayName: Build Artifacts
          - script: |
              npm run release:semantic-release
            displayName: Semantic Release
            env:
              GH_TOKEN: $(gitToken)
              GITHUB_TOKEN: $(gitToken)
          - script: |
              echo $(nextRelease)
            displayName: 'Show next version'
          - bash: echo "##vso[task.setvariable variable=nextReleaseVersion;isOutput=true]$(nextRelease)"
            name: MyOutputVar
            displayName: 'Set output variable'
  - stage: Dev
    displayName: Deploy to the dev environment
    dependsOn: Build
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
    jobs:
      - deployment: Deploy
        environment: dev
      - job: DevBuildJob
        displayName: Deploy to Dev
        pool:
          vmImage: ubuntu-latest
        variables:
          nextReleaseVersion: $[stageDependencies.Build.BuildJob.outputs['MyOutputVar.nextReleaseVersion']]
        steps:
          - task: NodeTool@0
            inputs:
              versionSpec: 20.x
            displayName: Install Node.js
          - script: |
              echo "Output Variable $(nextReleaseVersion)"
            displayName: Display next release version
          - script: |
              npm install
              npm run build 
            displayName: Build Artifacts For Dev Deployment
          - bash: echo "##vso[task.setvariable variable=nextReleaseVersion;isOutput=true]$(nextReleaseVersion)"
            name: MyOutputVar
            displayName: 'Set output variable'
  - stage: Staging
    displayName: Deploy to the staging environment
    dependsOn: Dev
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
    jobs:
      - deployment: Deploy
        environment: stage
      - job: Build
        displayName: Build job
        pool:
          vmImage: ubuntu-latest
        variables:
          nextReleaseVersion: $[stageDependencies.Dev.DevBuildJob.outputs['MyOutputVar.nextReleaseVersion']]
        steps:
          - task: NodeTool@0
            inputs:
              versionSpec: 20.x
            displayName: Install Node.js
          - script: |
              echo "Output Variable $(nextReleaseVersion)"
            displayName: Display next release version
          - script: |
              npm install
              npm run build
            displayName: Build Artifacts For Stage Deployment

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: Create deployment environment for pipeline
&lt;/h2&gt;

&lt;p&gt;Create two environments and add approvals/checks by clicking buttons highlighted in screenshot : &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcf1ig4pfqjr5l5ev8sk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcf1ig4pfqjr5l5ev8sk2.png" alt="Image description" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Setting environment variables from UI
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;To set secrets in the web interface, follow these steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to the Pipelines page, select the appropriate pipeline, and then select Edit.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Locate the Variables for this pipeline.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvqn1qxf6575hzwcqq6a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvqn1qxf6575hzwcqq6a.png" alt="Image description" width="800" height="148"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add or update the variable.&lt;br&gt;
Need to add two variables for now mainly : &lt;br&gt;
&lt;strong&gt;gitToken&lt;/strong&gt; : To store personal access token of github.&lt;br&gt;
&lt;strong&gt;husky&lt;/strong&gt; : To disable husky for pipeline to commit changelogs and publish release, otherwise commitizen interactive session will start and pipeline will never end.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu7mbtbp2wb0cxzgbw35c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu7mbtbp2wb0cxzgbw35c.png" alt="Image description" width="426" height="840"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the option to Keep this value secret to store the variable in an encrypted manner.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save the pipeline.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 4: Commit and push changes to github repo
&lt;/h2&gt;

&lt;p&gt;As of now you have configured azure devops pipeline ecosystem and updated azure-pipelines.yml file that you need to push to github repo. Please create a feature branch from main branch and commit your changes and create a pull request targeting your main branch. Ideally if nothing goes wrong, PR trigger will be executed. Our azure pipeline and azure-pipelines.yml file are configured in such a way that we will notice following points : &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;As soon as any PR is created, only Build stage will be executed. Deployment stage will be executed only if reference branch is &lt;strong&gt;"main"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;As soon as we merge the PR, build stage will again be executed and stop on dev deployment stage for approval/check added on dev environment. Same will haapern with stage deployment environment.&lt;/li&gt;
&lt;li&gt;In all the stages we have are showing the next release version based on commit history, that we can use accordingly in deployment and upcoming stages to create version set of build artifacts.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2zvp2bxvollu0yc9p3s.png" alt="Image description" width="800" height="319"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note : Specially for this series , we keep azure pipeline configuration simple, you can make it as complex as possible based on your project requirements. &lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up: The Final Piece of the Puzzle 🎉
&lt;/h2&gt;

&lt;p&gt;Congratulations on making it through the final part of this blog series! We've covered everything from setting up the basics to building a robust auto-incrementing semantic versioning pipeline using Commitizen, npm semantic-release, and Azure Pipelines.&lt;/p&gt;

&lt;p&gt;This journey was about more than just automation—it was about empowering your development process with consistent versioning, streamlined releases, and reduced manual effort. I hope this series has equipped you with the knowledge and tools to create smarter pipelines for your projects.&lt;/p&gt;

&lt;p&gt;Thank you for following along, and I’d love to hear about how you’ve applied these techniques in your workflows. If you have any questions, feedback, or success stories, feel free to share them in the comments or connect with me!&lt;/p&gt;

&lt;p&gt;Until next time, happy coding and seamless releasing! 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Part 3 : Initialize and configure semantic release with releaserc</title>
      <dc:creator>Shashank Mishra</dc:creator>
      <pubDate>Thu, 28 Nov 2024 07:11:48 +0000</pubDate>
      <link>https://dev.to/shashank-mishra-dev/part-3-initialize-and-configure-semantic-release-with-releaserc-3ijo</link>
      <guid>https://dev.to/shashank-mishra-dev/part-3-initialize-and-configure-semantic-release-with-releaserc-3ijo</guid>
      <description>&lt;p&gt;In this part, I’ll walk you through initializing and configuring semantic release using .releaserc configuration file. This will help in analyzing your Git commit history and following the Conventional Commits specification, it determines the next semantic version (major, minor, or patch) for your project. It also generates release notes, publishes the package, and creates Git tags automatically.&lt;/p&gt;

&lt;p&gt;By the end of this guide, you’ll have a fully functioning semantic release workflow that will also create a variable in your azure pipeline for holding the value next release version based on commit message history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install semantic-release and required Plugins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.a Install semantic-release and semantic-release plugins as a dev dependency:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;npm install --save-dev semantic-release&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install --save-dev @semantic-release/changelog @semantic-release/git @semantic-release/release-notes-generator @semantic-release/github semantic-release-ado&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.b Create a &lt;code&gt;.releaserc&lt;/code&gt; file in your project’s root directory&lt;/strong&gt;&lt;br&gt;
Here’s an example configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "branches": [
    {
      "name": "main",
      "prerelease": false
    }
  ],
  "plugins": [
    [
      "@semantic-release/commit-analyzer",
      {
        "preset": "conventionalcommits"
      }
    ],
    [
      "@semantic-release/release-notes-generator",
      {
        "preset": "conventionalcommits"
      }
    ],
    [
      "@semantic-release/changelog",
      {
        "changelogFile": "docs/CHANGELOG.md"
      }
    ],
    [
      "@semantic-release/git",
      {
        "assets": [
          "dist/**/*.{js,css}",
          "docs",
          "package.json"
        ],
        "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
      }
    ],
    "@semantic-release/github",
    "semantic-release-ado"
  ]
}

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;1.c Add Semantic Release Script&lt;/strong&gt;&lt;br&gt;
Add a script to your &lt;code&gt;package.json&lt;/code&gt;:&lt;br&gt;
&lt;code&gt;"release:semantic-release": "npx semantic-release"&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary of Plugin Functions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;@semantic-release/commit-analyzer:&lt;/strong&gt; Analyzes commit messages to determine the next version (major, minor, patch).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;@semantic-release/release-notes-generator:&lt;/strong&gt; Generates release notes based on commits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;@semantic-release/changelog:&lt;/strong&gt; Updates the CHANGELOG.md file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;@semantic-release/github:&lt;/strong&gt; Creates a GitHub release with changelogs and assets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;@semantic-release/git:&lt;/strong&gt; Commits updated files (like CHANGELOG.md and package.json).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;@semantic-release-ado:&lt;/strong&gt; Generates version number that will be stored on a variable available to downstream steps on the job. By default this variable is named &lt;strong&gt;nextRelease&lt;/strong&gt;, but the name can be configured in the plugin options. &lt;a href="https://www.npmjs.com/package/semantic-release-ado" rel="noopener noreferrer"&gt;Read more&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;By following these steps, you’ve successfully configured sementic release in order to determine the next semantic version (major, minor, or patch) for your project. It also generates release notes, publishes the package, and creates Git tags automatically.&lt;/p&gt;

&lt;p&gt;Stay tuned for more guides to help you optimize your pipelines and development practices. Happy coding! 🚀&lt;/p&gt;

</description>
      <category>semanticrelease</category>
      <category>semanticreleaseado</category>
      <category>pipeline</category>
      <category>cicd</category>
    </item>
    <item>
      <title>Part 2 : Configure Commitizen using Husky tool for automate version and structured commit message</title>
      <dc:creator>Shashank Mishra</dc:creator>
      <pubDate>Thu, 28 Nov 2024 05:45:09 +0000</pubDate>
      <link>https://dev.to/shashank-mishra-dev/part-2-configure-commitizen-using-husky-tool-for-automate-version-and-structured-commit-message-1e58</link>
      <guid>https://dev.to/shashank-mishra-dev/part-2-configure-commitizen-using-husky-tool-for-automate-version-and-structured-commit-message-1e58</guid>
      <description>&lt;p&gt;In this part, I’ll walk you through configure &lt;strong&gt;Commitizen&lt;/strong&gt; using Husky tool for automate version (major, minor, patch) and structured git commit message. We will use this automate generated version in upcoming semantic release step pipeline&lt;/p&gt;

&lt;p&gt;By the end of this guide, you’ll have a fully functioning git commit workflow to have structured commit message with automate version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Configure Husky
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Navigate to your project root directory&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1.a Add Husky to your project using npm or Yarn:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;npm install --save-dev husky&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;1.b Run the following command to set up Husky in your project:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;npx husky install&lt;/code&gt;&lt;br&gt;
This command will create a &lt;strong&gt;.husky directory&lt;/strong&gt; at root level of your project and will contain configuration files of husky hooks(&lt;strong&gt;pre-commit, pre-commit-message&lt;/strong&gt; etc). We will add pre-commit-message command later on once we will be done with configuring &lt;strong&gt;Commitizen&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2: Initialize and Configure Commitizen
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;2.a Install Commitizen as a development dependency:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;npm install --save-dev commitizen&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;2.b Choose and Install an Adapter&lt;/strong&gt;&lt;br&gt;
Adapters define the format of commit messages. For example, use cz-conventional-changelog to follow the Conventional Commits specification:&lt;br&gt;
&lt;code&gt;npm install --save-dev cz-conventional-changelog&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;2.c Configure Commitizen&lt;/strong&gt;&lt;br&gt;
Tell Commitizen which adapter to use by adding the &lt;code&gt;commitizen&lt;/code&gt;configuration to your &lt;code&gt;package.json&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "commitizen": {
    "path": "./node_modules/cz-conventional-changelog"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2.d Add commitizen command to pre-commit-message hook of husky&lt;/strong&gt;&lt;br&gt;
Navigate to .husky directory and search for prepare-commit-msg file inside it and replace the content with below mention snippet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

exec &amp;lt; /dev/console &amp;amp;&amp;amp; npx cz --hook || true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note : Git commands by default checks for .husky directory in your project's root level and run the hook accordingly.This will allow husky hook to execute the commitizen command and will open interactive session once you try to commit your changes.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27fnzsn50sykwmmjf0n5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27fnzsn50sykwmmjf0n5.png" alt="Image description" width="800" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;By following these steps, you’ve successfully configured commitizen with husky in order to achieve structured commit message with automate semantic version control.&lt;br&gt;
Stay tuned for more guides to help you optimize your pipelines and development practices. Happy coding! 🚀&lt;/p&gt;

</description>
      <category>commitizen</category>
      <category>husky</category>
      <category>gitcommit</category>
      <category>semanticversion</category>
    </item>
    <item>
      <title>Part 1 : How to Create and Configure a New Azure Pipeline with a GitHub Repository</title>
      <dc:creator>Shashank Mishra</dc:creator>
      <pubDate>Wed, 27 Nov 2024 12:56:39 +0000</pubDate>
      <link>https://dev.to/shashank-mishra-dev/part-1-how-to-create-and-configure-a-new-azure-pipeline-with-a-github-repository-41g1</link>
      <guid>https://dev.to/shashank-mishra-dev/part-1-how-to-create-and-configure-a-new-azure-pipeline-with-a-github-repository-41g1</guid>
      <description>&lt;p&gt;In this part, I’ll walk you through creating a new Azure Pipeline, connecting it to a GitHub repository, and configuring the integration with an Azure application installed on your GitHub repository.&lt;/p&gt;

&lt;p&gt;By the end of this guide, you’ll have a fully functioning Azure Pipeline connected to your GitHub repo, ready to automate your builds and deployments. 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisite
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Must have Azure Devops account (Recommended : having at least one organization created within with name same as that of your Github user name)&lt;/li&gt;
&lt;li&gt;Must have Github Account&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Create a New GitHub Repository
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Create a New Repository:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Login to your Github account and click the New button.&lt;/li&gt;
&lt;li&gt;Provide a repository name (e.g., semantic-version-template).&lt;/li&gt;
&lt;li&gt;Choose between Public or Private visibility.&lt;/li&gt;
&lt;li&gt;Initialize the repository with a README and .gitignore according to language used or leave it empty if you plan to push existing code.&lt;/li&gt;
&lt;li&gt;Click Create Repository.&lt;/li&gt;
&lt;li&gt;GitHub will show you a URL for the repository  &lt;code&gt;https://github.com/&amp;lt;username&amp;gt;/&amp;lt;repository-name&amp;gt;.git&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note : Make sure repo must have main branch created in it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create a New React App Using CRA
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Install NodeJs&lt;/strong&gt;&lt;br&gt;
Ensure you have Node.js installed on your system. You can download it from nodejs.org.&lt;br&gt;
To verify Node.js and npm are installed:&lt;br&gt;
&lt;code&gt;node -v&lt;br&gt;
npm -v&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Create a New React App&lt;/strong&gt;&lt;br&gt;
Use the following command to create a new React app:&lt;br&gt;
&lt;code&gt;npx create-react-app &amp;lt;your_app_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Navigate to Your App's Directory:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;cd &amp;lt;your_app_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note : You can create project of your own interest.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3: Add the Remote Repository to Your Local Directory
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Add Remote Origin&lt;/strong&gt;&lt;br&gt;
Use the &lt;code&gt;git remote add&lt;/code&gt; command to link your local repository with the GitHub repository but make sure your in project directory : &lt;br&gt;
&lt;code&gt;git remote add origin https://github.com/&amp;lt;username&amp;gt;/&amp;lt;repository-name&amp;gt;.git&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;2. Verify the Remote&lt;/strong&gt;&lt;br&gt;
Confirm the remote has been added correctly:&lt;br&gt;
&lt;code&gt;git remote -v&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;origin  https://github.com/&amp;lt;username&amp;gt;/&amp;lt;repository-name&amp;gt;.git (fetch)
origin  https://github.com/&amp;lt;username&amp;gt;/&amp;lt;repository-name&amp;gt;.git (push)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Create Azure Devops project
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Navigate to Azure DevOps:&lt;/strong&gt;&lt;br&gt;
Go to Azure &lt;a href="https://dev.azure.com/" rel="noopener noreferrer"&gt;DevOps&lt;/a&gt; and log in.&lt;br&gt;
Note : As soon as you create an azure devops account it create a default organization for you.&lt;br&gt;
&lt;strong&gt;2. Create Azure Devops Project :&lt;/strong&gt; &lt;br&gt;
Click on New project button highlighted in screenshot below : &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fexd2a7x3yi83am6840.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fexd2a7x3yi83am6840.png" alt="Image description" width="800" height="178"&gt;&lt;/a&gt;&lt;br&gt;
Provide name, description, set visibility and click on Create button highlighted in screenshot below : &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7s05z3y2fr1sn1dpynm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7s05z3y2fr1sn1dpynm.png" alt="Image description" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Create a New Azure Pipeline and connect with Github repo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Create new pipeline:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1.a&lt;/strong&gt; In your Azure DevOps project, select newly create project navigate to &lt;strong&gt;Pipelines&lt;/strong&gt; menu in left side and click &lt;strong&gt;New Pipeline&lt;/strong&gt; button highlighted in screenshot below : &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhd1idmyya53vgfe58pkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhd1idmyya53vgfe58pkj.png" alt="Image description" width="800" height="399"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;1.b&lt;/strong&gt; Click on GitHub option&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81rsi0hekio7aa62vywy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81rsi0hekio7aa62vywy.png" alt="Image description" width="638" height="394"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;1.c&lt;/strong&gt; Select the repo which you want to create pipeline for : &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fir2slc1z35xftktlwm7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fir2slc1z35xftktlwm7c.png" alt="Image description" width="800" height="673"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;1.d&lt;/strong&gt; As soon as you select any repo, you will be redirected to configure tab where azure devops will try to connect with your repository and ask for authentication.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnsnx4fahgt1nlvbhyd97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnsnx4fahgt1nlvbhyd97.png" alt="Image description" width="762" height="694"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;1.e&lt;/strong&gt; After successful authentication azure devops will install &lt;strong&gt;Azure Pipeline App&lt;/strong&gt; on your Github repo.The Azure Pipelines GitHub App is an official GitHub application that integrates Azure Pipelines with GitHub repositories. It enables seamless CI/CD workflows by allowing Azure Pipelines to interact directly with your GitHub repositories. This app is used to automatically trigger builds, tests, and deployments in Azure Pipelines whenever changes are made in your GitHub repositories.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqvjjleje2me2zi3dqez3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqvjjleje2me2zi3dqez3.png" alt="Image description" width="694" height="562"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;1.f&lt;/strong&gt; After installing Azure Pipeline App, you can choose a template for &lt;code&gt;azure-pipeline.yml&lt;/code&gt; file for initial pipeline execution. That can be changed later on. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0n9p1nka8dcekzsj8o6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0n9p1nka8dcekzsj8o6.png" alt="Image description" width="604" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;By following these steps, you’ve successfully created a new GitHub repository, installed the Azure Pipelines app, and configured an Azure Pipeline to automate builds for your project.&lt;br&gt;
Stay tuned for more guides to help you optimize your pipelines and development practices. Happy coding! 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Introduction to Creating an Auto-Increment Semantic Versioning Pipeline with Commitizen, Semantic Release, and Azure Pipelines</title>
      <dc:creator>Shashank Mishra</dc:creator>
      <pubDate>Wed, 27 Nov 2024 03:28:55 +0000</pubDate>
      <link>https://dev.to/shashank-mishra-dev/introduction-to-creating-an-auto-increment-semantic-versioning-pipeline-with-commitizen-semantic-3m2c</link>
      <guid>https://dev.to/shashank-mishra-dev/introduction-to-creating-an-auto-increment-semantic-versioning-pipeline-with-commitizen-semantic-3m2c</guid>
      <description>&lt;p&gt;Hello, Dev Community! 👋&lt;/p&gt;

&lt;p&gt;I'm thrilled to introduce an upcoming series of posts where we'll dive deep into building an auto-increment semantic versioning pipeline using some of the most powerful tools available: Commitizen, Semantic Release, and Azure Pipelines. 🎉&lt;/p&gt;

&lt;p&gt;Managing versioning manually can be a hassle, especially as projects grow and teams expand. This series will be divided into four actionable and concise parts. In this series, I'll walk you through how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Part-1 :&lt;/strong&gt; Create and configure azure pipeline with multi environment release CI/CD pipeline with Github repo. &lt;a href="https://dev.to/shashank-mishra-dev/part-1-how-to-create-and-configure-a-new-azure-pipeline-with-a-github-repository-41g1"&gt;Read More&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Part-2 :&lt;/strong&gt; Enforce structured commit messages using Commitizen and automate version increments (major, minor, patch) based on commit messages. &lt;a href="https://dev.to/shashank-mishra-dev/part-2-configure-commitizen-using-husky-tool-for-automate-version-and-structured-commit-message-1e58"&gt;Read More&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Part-3 :&lt;/strong&gt; Automatically update changelogs, publish releases and identify new release version based on commit message using Semantic Release.&lt;a href="https://dev.to/shashank-mishra-dev/part-3-initialize-and-configure-semantic-release-with-releaserc-3ijo"&gt;Read More&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Part 4 :&lt;/strong&gt; Seamlessly integrate everything into an Azure DevOps pipeline for a robust CI/CD workflow to release versioned set build artifacts.&lt;a href="https://dev.to/shashank-mishra-dev/part-4-create-azure-pipelinesyml-and-setting-environment-variables-47m6"&gt;Read More&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who Is This Series For?
&lt;/h2&gt;

&lt;p&gt;Whether you're a seasoned developer or just getting started with CI/CD pipelines, this series is for anyone looking to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplify version management in projects.&lt;/li&gt;
&lt;li&gt;Automate changelog updates and publishing.&lt;/li&gt;
&lt;li&gt;Build a robust, scalable release process with Azure Pipelines.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Ready to Level Up!
&lt;/h2&gt;

&lt;p&gt;Stay tuned as we kick off this journey to modernize and streamline your release process. If you have any questions or topics you'd like covered in this series, feel free to drop a comment below.&lt;/p&gt;

&lt;p&gt;Let’s make versioning effortless! 💡&lt;/p&gt;

&lt;p&gt;Happy coding! 🖥️✨&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>commitizen</category>
      <category>azurepipeline</category>
      <category>semanticrelease</category>
    </item>
  </channel>
</rss>
