"My First Week at Nevotek: Internship Insights and Experiences | Atakan Gül Blog | Technology Insights"

My First Week at Nevotek: Internship Insights and Experiences

In my first week as an intern, I worked on building a CI/CD pipeline with Azure DevOps and Jira. It was a hands-on learning experience where I set up my tools, faced technical challenges, and gained p continue reading...

Avatar

Atakan G.

Aug 22, 2024

Implementing a CI/CD Pipeline with Azure DevOps and Jira: My First Week as an Intern

This week marked the start of my internship, and I was immediately thrown into the deep end with a challenging project: creating a CI/CD pipeline integrated with Jira using Azure DevOps.


It was a week full of learning, problem-solving, and a few headaches along the way. Here's a breakdown of what I worked on, the challenges I faced, and the insights I gained.

Setting Up the Development Environment

I began by setting up my development environment on a Lenovo laptop. Coming from a Linux background, working on Windows required some adjustments, especially when it came to using the Windows command prompt. To maintain my preferred Linux workflow, I set up a virtual machine (VM) running Linux, which allowed me to run Linux commands and scripts while still leveraging the native Windows tools.

Here's what my setup included:

  1. Docker: Installed on both Windows and the Linux VM, allowing for seamless container management across both environments.
  2. Azure CLI: Set up on both platforms, ensuring I could manage Azure resources from either environment as needed.
  3. Visual Studio Code: My go-to editor, enhanced with extensions for Docker, Azure, and remote development.


Implementing a Local Agent

One unexpected challenge I encountered was a limitation in my Azure for Students subscription, which didn’t allow me to use parallelism in Azure Pipelines. This was a significant roadblock because parallelism is essential for running multiple pipeline tasks concurrently.


To work around this, I had to implement a local agent to run DevOps tasks on a different machine. Setting up the local agent involved configuring it to communicate with Azure DevOps and ensuring it could execute the pipeline tasks just like a cloud-hosted agent. This solution enabled me to continue developing the pipeline without being hindered by the subscription limitations.


The CI/CD Pipeline Architecture

The main task of the week was designing and implementing a CI/CD pipeline with the following workflow:

  1. Code commits to Azure Repos: Developers push their code to the Azure Repos repository.
  2. CI pipeline initiation: After a review and merge to the master branch, the CI pipeline kicks off automatically.
  3. Artifact creation: The CI process builds an artifact ready for testing.
  4. Blue-green deployment: The artifact is deployed to a development environment in Azure Web Apps, following a blue-green deployment strategy.
  5. Testing: Linting and basic unit tests are run to ensure code quality.
  6. Artifact push to ACR: If tests pass, the artifact is pushed to Azure Container Registry (ACR).
  7. Staging deployment: ACR triggers the automatic deployment to the staging environment.
  8. Jira issue creation: The pipeline creates a Jira issue to notify the tester that the build is ready for testing.
  9. Issue resolution: Once the tester marks the Jira issue as resolved, the pipeline continues to the next stage.
  10. Environment swap: The CD part swaps the staging and production environments, completing the blue-green deployment.
  11. Manager approval: Before the changes go live in production, the deployment requires manager approval.


Technical Hurdles

Setting up this pipeline wasn't without its challenges. Here are a few of the technical hurdles I encountered:

  1. Service Connections: Configuring service connections and service principals in Azure was trickier than expected. It required digging deep into Azure's authentication mechanisms and setting the correct permissions to allow seamless integration between Azure DevOps, ACR, and Azure Web Apps.
  2. Azure Web App Configuration: Ensuring the Azure Web App exposed the correct port for the application involved a fair bit of trial and error. Debugging these issues was time-consuming but crucial for the pipeline's success.
  3. Jira Integration: Integrating the pipeline with Jira for automated issue creation turned out to be more complex than anticipated. The API integration required precise configuration to ensure the pipeline and Jira communicated effectively.

What I Learned

This project provided a hands-on introduction to real-world DevOps practices. Key takeaways include:

  1. Blue-Green Deployment Strategy: Implementing a blue-green deployment strategy was a new experience for me. It's one thing to understand the theory, but actually setting it up gave me a much deeper understanding of its benefits and challenges.
  2. Service Integration: I learned the complexities involved in integrating multiple services into a cohesive CI/CD pipeline. Each component needs to be meticulously configured to ensure smooth communication and operation.
  3. Local Agent Setup: Working around the Azure for Students subscription limitation by setting up a local agent taught me how to adapt to constraints and find alternative solutions, a valuable skill in any DevOps role.


Next Steps

The pipeline is functional, but there's still work to be done. My next steps include optimizing the pipeline for performance, adding more comprehensive testing stages, and improving the Jira integration to provide more detailed and automated information.


For anyone working on similar projects, I recommend getting familiar with Azure’s authentication mechanisms and spending time understanding how the different services in your pipeline communicate. It’s these details that can make or break the smooth operation of a CI/CD pipeline.

My First Week at Nevotek: Internship Insights and Experiences

Published at Thursday, August 22, 2024
Avatar

Atakan G.

2
0
145

Comments

No comments yet.

Top Recommendations
Our most popular posts

Must-Know Free APIs for Developers
Must-Know Free APIs for Developers
Atakan G. Jul 12, 2024 1 Comments
Why I Started Blogging
Why I Started Blogging
Atakan G. Jul 12, 2024 0 Comments