<?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: Aditya Arpan Sahoo</title>
    <description>The latest articles on DEV Community by Aditya Arpan Sahoo (@arpanaditya).</description>
    <link>https://dev.to/arpanaditya</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%2F677590%2F19ec310b-6748-4d14-9b05-c1c1655f0947.jpg</url>
      <title>DEV Community: Aditya Arpan Sahoo</title>
      <link>https://dev.to/arpanaditya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arpanaditya"/>
    <language>en</language>
    <item>
      <title>My experience as a Software Engineer at DPS</title>
      <dc:creator>Aditya Arpan Sahoo</dc:creator>
      <pubDate>Sat, 30 Nov 2024 09:31:25 +0000</pubDate>
      <link>https://dev.to/arpanaditya/my-experience-as-a-software-engineer-at-dps-3p9a</link>
      <guid>https://dev.to/arpanaditya/my-experience-as-a-software-engineer-at-dps-3p9a</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;In this blog, I have tried to summarize my voyage from an average student developer to completing 3 months at &lt;a href="https://www.dpschool.io/" rel="noopener noreferrer"&gt;Digital Product School&lt;/a&gt; as a Software Engineer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  About Myself
&lt;/h2&gt;

&lt;p&gt;Hello everyone, I am Aditya Arpan, a recent graduate from ITER, SOA University, Bhubaneswar with Computer Science major. I love hackathons. I’m also a community and DevOps enthusiast. Since childhood, I was interested in web technologies. After joining college, I spent a lot of time googling about various programs and opportunities and applying for them while learning and building simultaneously. I also met a lot of folks over LinkedIn and Twitter and learned from their journeys. It helped me to gain many experiences regarding student programs, hackathons, communities, and open-source.&lt;/p&gt;

&lt;p&gt;Working with Digital Product School has been one of the most wholesome and fulfilling experiences that I have had on a professional level this year. It has been a career-defining opportunity for me and it is truly my privilege to document and present my journey with DPS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Applying For The Role
&lt;/h2&gt;

&lt;p&gt;I heard about DPS Fellowship through a friend who was working there as a full-time Software Engineer. As I was looking for professional exposure and industry experience, I saw this as a great opportunity to get more involved in the Software Engineering domain. Out of curiosity, I sent a mail to DPS Team with my resume and portfolio to see whether I will be a good fit. The response has eliminated all my doubts and given me the confidence to pursue the Software Engineering Track (&lt;em&gt;Thanks to the team for this&lt;/em&gt;). After that, I joined &lt;a href="https://www.linkedin.com/events/askdps6980879129285902336" rel="noopener noreferrer"&gt;#askDPS&lt;/a&gt; which is a zoom meeting with the DPS Core Team where you get a chance to interact with them directly, ask questions and get all information you need before you proceed with your application.&lt;/p&gt;

&lt;p&gt;After filling out the application form, which primarily asked for my personal details along with my resume and a detailed cover letter, I got back to my normal student life meanwhile waiting for the result.&lt;/p&gt;

&lt;p&gt;Then on March 2021, I got a call for an interview after my application got shortlisted. The interview was very smooth. It was more like a discussion rather than a typical interview. I asked a lot of questions about “life at DPS” to my interviewer out of curiosity. It was pretty fun. After about a week, I got the acceptance letter and it was a great day for me since it was the first time ever that I was accepted into a fellowship/internship program.&lt;/p&gt;

&lt;h2&gt;
  
  
  Program Structure
&lt;/h2&gt;

&lt;p&gt;The Digital Product School (DPS) is a 3-month full-time fellowship program (&lt;em&gt;open to students and working professionals across the globe&lt;/em&gt;) that teaches not only problem-solving processes using design-thinking, agile and lean principles, and techniques, but also the ways to perform them in reality. It is organized by the Digital Mobility Hub of UnternehmerTUM GmbH, Munich.&lt;/p&gt;

&lt;p&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%2Fyj7tsgivivk0yywnj1cb.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%2Fyj7tsgivivk0yywnj1cb.png" alt="Batch #16" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our batch (&lt;em&gt;batch #16&lt;/em&gt;) started on May 9, 2021. All of us (&lt;em&gt;the Core Team and the participants&lt;/em&gt;) met together online for the very first time. As the cohort was in hybrid mode, DPS organized a &lt;strong&gt;refreshing hike on the Bavarian Alps&lt;/strong&gt; for the on-site participants(&lt;em&gt;Too bad! I missed this. I’m still having the FOMO&lt;/em&gt;). With this, we had an amazing opening session and met our Track Heads, got assigned to a team, met my teammates, made some new friends in random breakout rooms, and a lot more.&lt;/p&gt;

&lt;p&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%2Fqu4azidetlbftsa087vz.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%2Fqu4azidetlbftsa087vz.png" alt="Various Tracks" width="626" height="623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For those who are wondering about tracks, this program consists of 6 tracks i.e. &lt;strong&gt;Interaction Designers(IxD), Software Engineers(SE), AI Engineers(AI), Product Manager(PM), Agile Team Coach(ATC), Product Marketing and Communications Manager(PMC)&lt;/strong&gt;. All the participants in a batch were divided into groups with each team consisting of 1 PM, 1 AI Engineer, 2-3 SE, 1 IxD, and 1 ATC. All the teams are either classified as a “&lt;strong&gt;Company Team&lt;/strong&gt;” which is responsible to find solutions for DPS Partner Companies or a “&lt;strong&gt;Wild Team&lt;/strong&gt;” which is free to propose a solution to any valid problem of their choice (&lt;em&gt;usually these teams find solutions for problems existing in DPS&lt;/em&gt;). In the end, I was assigned to a company team “&lt;strong&gt;Sharespacers&lt;/strong&gt;” having 6 members in total, 1 PM, 1 IxD, 3 SE, and 1 ATC.&lt;/p&gt;

&lt;p&gt;The DPS 3-month program is divided into 12 weeks and each week has a goal (&lt;em&gt;which is called the weekly design sprint&lt;/em&gt;). Each team tries to achieve a weekly goal and presents it on-screen to everyone (&lt;em&gt;usually presentation slides explaining the problem-solving approach, Figma prototypes, or even a mockup of their final MVP — Minimum Viable Product&lt;/em&gt;). Each team is also assigned a mentor who along with providing guidance, and mentorship takes care of things like each member is going in the right direction. As DPS is a very inclusive and diverse community, you get to work with team members with different backgrounds, cultures, and religions (&lt;em&gt;also timezones&lt;/em&gt; :-)) which was indeed very challenging to understand each other in this short duration.&lt;/p&gt;

&lt;p&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%2Fjvfr2dp9dzvzlk8jt3ax.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%2Fjvfr2dp9dzvzlk8jt3ax.png" alt="Team Sharespace" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first few weeks were full of workshops and training sessions where we were introduced to several tools such as &lt;em&gt;lean DPS canvas&lt;/em&gt;, &lt;em&gt;AI-deation&lt;/em&gt;, &lt;em&gt;research canvas&lt;/em&gt;, &lt;em&gt;guerilla research&lt;/em&gt;, &lt;em&gt;scrums&lt;/em&gt;, &lt;em&gt;sprints&lt;/em&gt;, &lt;em&gt;bomb boards&lt;/em&gt;, &lt;em&gt;usability testing methods&lt;/em&gt;, &lt;em&gt;A/B testing&lt;/em&gt;, &lt;em&gt;retrospectives&lt;/em&gt;, &lt;em&gt;sprint reviews&lt;/em&gt; and so on. The next few months were pretty clear for us to start working dedicatedly. We are involved in &lt;em&gt;Team Discussions&lt;/em&gt;, &lt;em&gt;Pair Programming&lt;/em&gt;, &lt;em&gt;Brainstorming&lt;/em&gt;, &lt;em&gt;Stakeholder Mapping&lt;/em&gt;, &lt;em&gt;Weekly Track Meetings&lt;/em&gt;, and the most important part of our program — conducting &lt;em&gt;User Interviews&lt;/em&gt; and getting feedback. To help the team grow and avoid discrepancies, each team has a weekly retrospective hosted by a team mentor. In addition to this, each team member also has an opportunity to have a 1 on 1 chat with the team mentor and with each track head. Although I was working remotely, I was still getting the vibe of being in a proper agile environment. I was able to get out of my comfort zone and bring discipline to my daily routine to manage everything (&lt;em&gt;which was very challenging for me&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;We also had weekly track meetings. It was “&lt;strong&gt;SE Weekly&lt;/strong&gt;” in my case, where all of the Software Engineers along with our Track Head (&lt;em&gt;Daniel or Bela&lt;/em&gt;) has fun conversations and learning sessions about different technologies (&lt;em&gt;which might be useful for our project later at some point in time, example: containerization&lt;/em&gt;) and problem-solving. We also talked about the difficulties that we’re facing as developers and how to solve them.&lt;/p&gt;

&lt;p&gt;At the end of the 3-month program, DPS expects a comprehensive solution in the form of a “&lt;strong&gt;Minimum Viable Prototype/Product (MVP)&lt;/strong&gt;”. It can also be a digital product that is well-coded/designed and well-presented.&lt;/p&gt;

&lt;p&gt;The only thing I missed during this program, was being at our office in Munich. My colleagues are engaged in various games, fun activities, cooked food, outings, and have lunch together while those who were working remotely are getting FOMOs. I even missed the Final Day Spring/Final Product Review where everyone was together for the last time.&lt;/p&gt;

&lt;p&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%2Fn5h0sdvyvc0axfgj4uq7.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%2Fn5h0sdvyvc0axfgj4uq7.png" alt="Final Product Review batch #16" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The D-Day!
&lt;/h2&gt;

&lt;p&gt;Finally, it's the day when we had to show the MVP we made for our partner company, in front of everyone at DPS, along with stakeholders. It was our final sprint review where we presented the tool which we have built over the span of 3 months with a pretty good advertisement intro video and a video walkthrough of our MVP. I met a lot of resourceful folks, CEOs, and other officials. Some of them are interested in our product and specifically set meetings to go through the specifics which was a really proud moment for our team. It feels like all our hard work has paid off. Watch out final sprint review (Batch #16) &lt;a href="https://www.youtube.com/watch?v=h1DIfm32UTQ" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Takeaways
&lt;/h2&gt;

&lt;p&gt;For me, it was the first and best experience I've ever had. I can't able to explain how beginner-friendly this program is and the amount of exposure it provides. I still can't believe how fast those 12 weeks passed. Started with strangers on the team, and ended up being friends. We all started working together, played a lot of games, had conflicts, understood each other's problems and days off, did vibe together, and concluded our journey with an MVP.&lt;/p&gt;

&lt;p&gt;I learned how to ideate, and create a user story map before making a product and taking feedback to improve further. Even through delivering a product under stress and time constraints was challenging for me as a college student (&lt;em&gt;while attending college classes simultaneously&lt;/em&gt;), it has greatly improved my skills professionally. I learned to give feedback and also take them positively if any, make my points clear depsite of conflicts, and collaborate in making a product that can impact a lot of lives including ours. I learned React Js, docker, containerization in just a week which is insane, and some other new technologies and tools which boosted my skillset a lot. I learned to work with individuals having different backgrounds, cultures, and regions. I also learned how to work in a team, how to assist and collaborate, how to think, ideate your thoughts, and work efficiently. I also learned how big organizations work and how to deliver a product under stressful environments and within time constraints. I worked with some of the great minds around the world, learned a lot from them, and experienced diversity. I cannot even thank DPS enough for providing me with one of the best experiences of my life.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Thanks to my Team (&lt;em&gt;Sharespacers&lt;/em&gt;): Aylin, Ejike, Madhu, Marvin, and Nayeon.&lt;/p&gt;

&lt;p&gt;And my special gratitude to the talented DPS Core Team: Annina, Afi, Basti, Bela, Daniel, Lorenz, Marcus, Natt, Samreen, Steffen.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>developers</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Hackathon 101</title>
      <dc:creator>Aditya Arpan Sahoo</dc:creator>
      <pubDate>Sat, 30 Nov 2024 08:00:28 +0000</pubDate>
      <link>https://dev.to/arpanaditya/hackathon-101-4f4f</link>
      <guid>https://dev.to/arpanaditya/hackathon-101-4f4f</guid>
      <description>&lt;p&gt;(Ever wonder what the term “Hackathon” mean? All of your friends have been participating and winning very attractive prizes but you are not? Well, this is something that you should read.)&lt;/p&gt;

&lt;p&gt;I’m sure that many of you have heard the term “Hackathon” and the first picture that came to your mind was hacking into someone’s system using a terminal.&lt;/p&gt;

&lt;p&gt;But let me assure you, “We don’t do that here.”&lt;/p&gt;

&lt;p&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%2Flyrjsg0m5dn1ng3x83xq.jpg" 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%2Flyrjsg0m5dn1ng3x83xq.jpg" alt="We don't do that here" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hackathon is all about solving a problem within a certain period of time. It can be within 24 or 48 hours to a couple of weeks. It varies in different hackathons. All you have to do is form a team, and build a solution to the problem statement within that time limit. The solution can be a website, an application, or even a prototype explaining your idea. And then finally present your project/idea in front of judges.&lt;/p&gt;

&lt;p&gt;See, it’s that simple. But it isn’t. Developing a solution and building a website or application within a short period of time is also a very challenging task. You don’t know what are some unexpected problems or errors that you might be dealing with. Your project can be perfect but may give you some errors while deploying or hosting it(which is very time-consuming if you’re using some other hosting platforms other than GitHub Pages).&lt;/p&gt;

&lt;p&gt;Hackathon also makes you push your limits, generate creative ideas and solutions, learn time management, and work in a team. Before that, you might be sitting on your couch binge-watching movies/series, but in hackathons, you’ll be working all day and night long without sleep which is very exciting and tiring too. Don’t worry, the organizing team has got your back. For that, they have many workshops, gaming sessions, fun, and interactive sessions to cheer you up. During these moments, you will realize your superpowers of which you weren’t aware.&lt;/p&gt;

&lt;p&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%2F5b23sdstohriyrdvd8gu.jpg" 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%2F5b23sdstohriyrdvd8gu.jpg" alt="Team Work" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In every hackathon, there are an Organizing team, Sponsors, Mentors, and participants(aka hackers 🤓😎). The organizing team takes care of the whole system during the entire span. Sponsors are organizations who invest money and also look out for the best talents (who knows you might get a job/internship offer from the sponsors). Mentors are experienced folks who are always there to help and guide you throughout the hackathon, you can reach out to mentors if you face any technical difficulties or you have any doubts regarding your presentation. They’ll be more than happy to assist.&lt;/p&gt;

&lt;p&gt;You’ll learn a lot more in those 24 hours than you have imagined. It’s a great place to do networking. Networking is the best thing about hackathons which I love the most. I have met a lot of resourceful people and made friends too. Hackathons also open the doors to many developer communities. Join those communities and get involved in the discussions, and events and you’ll get a lot of exposure and opportunities that you haven’t imagined.&lt;/p&gt;

&lt;p&gt;Do you want to have all the fun here only? By reading? You should probably check out many past, ongoing, and upcoming hackathons on platforms like &lt;a href="https://devfolio.co/" rel="noopener noreferrer"&gt;Devfolio&lt;/a&gt;, &lt;a href="https://devpost.com/" rel="noopener noreferrer"&gt;Devpost&lt;/a&gt;, and &lt;a href="https://mlh.io/" rel="noopener noreferrer"&gt;MLH&lt;/a&gt;. You should go for it no matter what. Then you’ll realize what you’ve been missing. There’s no guarantee that you will win your first hackathon, so what? You have experience now and perform better in the next one. Eventually, your desk will be filled up with a lot of attractive prizes and swags. You just have to keep a growth mindset and take care of your health.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thank you so much for reading and happy hacking!
&lt;/h3&gt;

</description>
      <category>webdev</category>
      <category>hackathon</category>
      <category>beginners</category>
      <category>basic</category>
    </item>
    <item>
      <title>Automating Releases with Semantic Versioning and GitHub Actions</title>
      <dc:creator>Aditya Arpan Sahoo</dc:creator>
      <pubDate>Sat, 30 Nov 2024 06:38:14 +0000</pubDate>
      <link>https://dev.to/arpanaditya/automating-releases-with-semantic-versioning-and-github-actions-2a06</link>
      <guid>https://dev.to/arpanaditya/automating-releases-with-semantic-versioning-and-github-actions-2a06</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Automating versioning and releases is essential for maintaining a smooth and consistent development workflow. By combining &lt;strong&gt;Semantic Versioning&lt;/strong&gt; (SemVer) with &lt;strong&gt;GitHub Actions&lt;/strong&gt;, you can automatically manage version bumps, changelogs, and releases whenever changes are pushed to your repository. This eliminates manual tasks, improves productivity, and ensures a reliable release process. This process is a part of the broader CI/CD workflow, ensuring consistent and error-free releases.&lt;/p&gt;

&lt;p&gt;In this guide, we’ll walk through setting up a GitHub Actions workflow that automates the release process using Semantic Versioning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Setup
&lt;/h2&gt;

&lt;p&gt;Before diving into the implementation, let's look at the key components we'll be using to build our automation workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Semantic Versioning: This is a versioning system that follows the format &lt;code&gt;MAJOR.MINOR.PATCH&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;GitHub Actions: A CI/CD tool provided by GitHub that allows you to automate your workflows directly from your GitHub repository.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Packages we'll be using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;semantic-release&lt;/code&gt;: A fully automatic version management and release publishing tool.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@semantic-release/changelog&lt;/code&gt;: Automatically generates and updates changelogs based on commit messages.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@semantic-release/commit-analyzer&lt;/code&gt;: Analyzes commits and determines the next version based on commit messages.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@semantic-release/git&lt;/code&gt;: Pushes changes made by the semantic-release (like the changelog) back to your Git repository.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@semantic-release/github&lt;/code&gt;: Creates GitHub releases and adds release notes automatically.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Semantic Versioning?
&lt;/h2&gt;

&lt;p&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%2Fatjyqnwxomwyi5z17nk6.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%2Fatjyqnwxomwyi5z17nk6.png" alt="SemVer" width="800" height="514"&gt;&lt;/a&gt;&lt;br&gt;
Semantic versioning (often abbreviated as SemVer) is a versioning scheme that aims to make it clear whether changes in your project are backward compatible, introduce breaking changes, or simply fix bugs. A typical SemVer version number looks like this: &lt;code&gt;MAJOR.MINOR.PATCH&lt;/code&gt; (e.g. v1.4.8).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MAJOR&lt;/strong&gt; version is incremented when you make incompatible API changes that breaks the current feature.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MINOR&lt;/strong&gt; version is incremented when you add functionality in a backward-compatible manner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PATCH&lt;/strong&gt; version is incremented when you make backward-compatible bug fixes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(Note: backward-compatible means the ability to be used with older/previous versions.)&lt;/p&gt;

&lt;p&gt;Each update to the project can be classified into one of these categories, and semantic-release automates this process by updating the version automatically based on commit messages.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Role of GitHub Actions in Continuous Deployment
&lt;/h2&gt;

&lt;p&gt;GitHub Actions allows you to automate workflows directly in your GitHub repository. These workflows can run on various GitHub events like code pushes, pull requests, and more. In this blog, we’ll use GitHub Actions to automate our release process, from building to pushing version updates to the repository.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Automate Release?
&lt;/h2&gt;

&lt;p&gt;Automating releases offers several benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Consistency&lt;/strong&gt;: No manual steps for incrementing versions or tagging releases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficiency&lt;/strong&gt;: Reduced time spent on repetitive tasks like updating changelogs, version numbers, and creating Git tags.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error-Free&lt;/strong&gt;: Eliminates human errors during the release process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability&lt;/strong&gt;: The process is repeatable and can be reused across different repositories.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Automated Versioning with &lt;code&gt;semantic-release&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;semantic-release&lt;/code&gt; is a powerful tool that automates version management based on your commit messages. It relies on the commit message convention known as Conventional Commits. Here’s how it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Breaking changes&lt;/strong&gt; (such as &lt;code&gt;feat!:&lt;/code&gt; or &lt;code&gt;fix!:&lt;/code&gt; in commit messages) will trigger a major version bump.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  fix!: update deprecated API endpoint
  [v1.5.2 -&amp;gt; v2.0.0]

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

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;New features&lt;/strong&gt; (e.g., &lt;code&gt;feat:&lt;/code&gt; in commit messages) will trigger a minor version bump.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  feat: add new user login feature
  [v2.0.5 -&amp;gt; v2.1.0]

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

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bug fixes&lt;/strong&gt; (e.g., &lt;code&gt;fix:&lt;/code&gt; in commit messages) will trigger a patch version bump.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  fix: update documentation
  [v4.2.7 -&amp;gt; v4.2.8]

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

&lt;/div&gt;

&lt;h2&gt;
  
  
  Generating the Changelog
&lt;/h2&gt;

&lt;p&gt;As part of the &lt;code&gt;semantic-release&lt;/code&gt; process, a changelog is automatically generated. Here's an example of what the changelog looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# [4.0.0](&amp;lt;https://github.com/arpanaditya/semantic-versioning-action/compare/v3.1.0...v4.0.0&amp;gt;) (2024-11-26)

* feat!: major update from dev BREAKING CHANGE: major update from dev ([fac5eec](&amp;lt;https://github.com/arpanaditya/semantic-versioning-action/commit/fac5eec5533c1fe3432f96986403efcfadbc79ae&amp;gt;))

### BREAKING CHANGES

* major update from dev

# [3.1.0](&amp;lt;https://github.com/arpanaditya/semantic-versioning-action/compare/v3.0.1...v3.1.0&amp;gt;) (2024-11-26)

### Features

* minor update from dev ([606258b](&amp;lt;https://github.com/arpanaditya/semantic-versioning-action/commit/606258b3318929182319b29a6a81eae0fabb138b&amp;gt;))

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 1: Install the Required Packages
&lt;/h3&gt;

&lt;p&gt;We need to install the required packages as development dependencies. Run the following command to install them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev @semantic-release/changelog@6.0.3 @semantic-release/commit-analyzer@10.0.4 @semantic-release/git@10.0.1 @semantic-release/github@11.0.1 @semantic-release/release-notes-generator@11.0.7 semantic-release@24.2.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Create a GitHbu Actions Workflow
&lt;/h3&gt;

&lt;p&gt;Let’s create a &lt;code&gt;.github/workflows/release.yml&lt;/code&gt; file in your repository. This file will define the GitHub Actions workflow that will be triggered on every push to the repository.&lt;/p&gt;

&lt;p&gt;Here’s the basic structure of the &lt;code&gt;release.yml&lt;/code&gt; workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Release

on:
  push:
    branches:
      - main # Triggers when code is pushed to the main branch

jobs:
  release:
    permissions:
        contents: write
    runs-on: ubuntu-latest # Runs on an Ubuntu runner

    steps:
      # Step 1: Checkout the repository code
      - name: Checkout Repository
        uses: actions/checkout@v3

      # Step 2: Set up Node.js
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: "20.x" # Use the Node.js version required for your project

      # Step 3: Cache Node.js modules to speed up future builds
      - name: Cache Node.js modules
        uses: actions/cache@v3
        with:
          path: node_modules
          key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-modules-

      # Step 4: Install dependencies
      - name: Install Dependencies
        run: npm ci

      # Step 5: Run semantic-release
      - name: Run Semantic Release
        run: npx semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Provide the GitHub token for authentication
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Breakdown of the Workflow Steps
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Checkout the Repository&lt;/strong&gt;: This step checks out the latest code from the repository so that GitHub Actions can work with the latest changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set up Node.js&lt;/strong&gt;: This action ensures that the correct version of Node.js is set up on the runner. In our case, we’re using Node.js version 20.x .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cache Node.js Modules&lt;/strong&gt;: GitHub Action caches the node_modules directory to speed up future builds. This is crucial for larger projects where the installation of dependencies can take time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install Dependencies&lt;/strong&gt;: Using npm ci, this step installs the exact dependencies defined in the package-lock.json file, ensuring that the correct versions of packages are installed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run Semantic Release&lt;/strong&gt;: This step uses the semantic-release package to automatically determine the type of release (major, minor, patch) based on commit messages. It also updates the version in package.json , generates a changelog, and publishes the release.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;(Note: The GITHUB_TOKEN is a secure token automatically provided by GitHub for workflows running in your repository. You don’t need to manually create or add this token. It is preconfigured)&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Configure Semantic Release
&lt;/h3&gt;

&lt;p&gt;Next, we need to configure the &lt;code&gt;semantic-release&lt;/code&gt; package. Modify the &lt;code&gt;package.json&lt;/code&gt; file to match your project's branches and assets.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"release": {
"branches": [
  "main"
],
"plugins": [
  "@semantic-release/commit-analyzer",
  "@semantic-release/release-notes-generator",
  "@semantic-release/changelog",
  [
    "@semantic-release/github",
    {
      "assets": [
        {
          "path": "dist.zip",
          "label": "Distribution"
        }
      ]
    }
  ],
  [
    "@semantic-release/git",
    {
      "assets": [
        "package.json",
        "CHANGELOG.md"
      ],
      "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
    }
  ]
]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Commit message Conventions
&lt;/h3&gt;

&lt;p&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%2F7k9s6cy04016uczpfk6h.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%2F7k9s6cy04016uczpfk6h.png" alt="Commit message Conventions" width="800" height="265"&gt;&lt;/a&gt;&lt;br&gt;
Semantic release uses &lt;a href="https://github.com/angular/angular/blob/main/CONTRIBUTING.md#-commit-message-format" rel="noopener noreferrer"&gt;Angular Commit Message Conventions&lt;/a&gt; messages to determine the type of version bump (major, minor, patch). To follow this, you or your team should follow a Conventional Commit format:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fix: correct a bug&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feat: add a new feature&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feat!: breaking change
BREAKING CHANGE: change that introduces backward incompatibility&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We also can use tools like Commitizen &lt;a href="https://github.com/commitizen/cz-cli" rel="noopener noreferrer"&gt;Commitizen&lt;/a&gt;, and &lt;a href="https://github.com/conventional-changelog/commitlint" rel="noopener noreferrer"&gt;commitlint&lt;/a&gt; to enforce valid and consistent commit messages.&lt;/p&gt;

&lt;p&gt;By using these commit messages, &lt;code&gt;semantic-release&lt;/code&gt; will automatically determine whether to bump the version and generate the necessary changelogs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Push and Test the Workflow
&lt;/h3&gt;

&lt;p&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%2F37qikhwuugyl2z6a8lcg.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%2F37qikhwuugyl2z6a8lcg.png" alt="Workflow Screenshot" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have set up the workflow and configuration files, push the changes to your GitHub repository. This will trigger the GitHub Actions workflow based on the on_push event.&lt;/p&gt;

&lt;p&gt;The action will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Install the necessary dependencies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run Semantic Release to analyze your commits, bump the version, generate release notes, and update the changelog.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new GitHub release and tag.&lt;br&gt;
You can monitor the progress of the workflow in the Actions tab of your GitHub repository.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Automating releases with Semantic Versioning and GitHub Actions streamlines your development workflow, ensuring consistent, error-free versioning, changelogs, and releases. By integrating semantic-release and GitHub Actions, you eliminate manual tasks, reduce human error, and enhance productivity, allowing your team to focus on writing code rather than managing releases. This setup provides a scalable, reliable, and efficient way to handle versioning and publishing, ultimately improving the quality and transparency of your project’s development cycle.&lt;/p&gt;

</description>
      <category>github</category>
      <category>githubactions</category>
      <category>automation</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
