<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Integrating &#8211; Best DevOps</title>
	<atom:link href="https://www.bestdevops.com/tag/integrating/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bestdevops.com</link>
	<description>Lets Learn, Do it &#38; Share! Thats a Best DevOps!!!</description>
	<lastBuildDate>Wed, 14 Oct 2026 01:23:08 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>GitLab Updates Approach to Integrating DevOps Workflows</title>
		<link>https://www.bestdevops.com/gitlab-updates-approach-to-integrating-devops-workflows/</link>
					<comments>https://www.bestdevops.com/gitlab-updates-approach-to-integrating-devops-workflows/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Wed, 23 Jun 2021 06:53:29 +0000</pubDate>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[BestDevOps]]></category>
		<category><![CDATA[DeSanto]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevSecOps]]></category>
		<category><![CDATA[GitLab]]></category>
		<category><![CDATA[GitOps]]></category>
		<category><![CDATA[Integrating]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[Semgrep]]></category>
		<category><![CDATA[workflows]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=16781</guid>

					<description><![CDATA[Source:-https://devops.com/ GitLab today took the wraps off a major update to its continuous integration/continuous delivery (CI/CD) platform that embeds analytics [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Source:-https://devops.com/</p>
<p>GitLab today took the wraps off a major update to its continuous integration/continuous delivery (CI/CD) platform that embeds analytics tools in workflows to identify the root cause of inefficiencies, among other additional capabilities.</p>
<p>David DeSanto, senior director for product management at GitLab, said that capability is part of an ongoing effort to include value stream analytics within the core GitLab 14 platform as an alternative to acquiring and deploying a separate platform. There are also additional charts and dashboards that enable DevOps teams to uncover bottlenecks over time.</p>
<p>In addition, GitLab announced it is extending the security capabilities of the platform by adding integrations with open source Semgrep and Trivy vulnerability scanning tools as part of an effort to enable organizations to embrace DevSecOps best practices within workflows. GitLab has also added support for the fuzz testing tool it gained via the acquisitions of Fuzzit and Peach Tech to enable DevOps teams to test application security more thoroughly along with making available additional dashboards to track security metrics.</p>
<p>As part of an effort to enable organizations to better secure their software supply chains, GitLab has also added support for immutable pipeline definitions that can’t be altered without specific levels of permissions being granted. That capability also enables DevOps teams to more easily achieve compliance with any number of regulatory frameworks, noted DeSanto.</p>
<p>The company is also adding a pipeline editor that provides access to a visual tool for creating, managing and visualizing pipelines. That tool is designed to both make DevOps more accessible to novices and provide experienced DevOps teams with an alternative tool for managing pipelines in a way that doesn’t require them to write additional code.</p>
<p>Finally, as part of its comprehensive approach to DevOps, GitLab is also making available agent software for Kubernetes clusters to eliminate the need for organizations to acquire a separate DevOps platform to build and deploy cloud-native applications based on microservices constructed using containers. The company now provides IT organizations with the option of crafting a GitOps workflow for Kubernetes using either an agentless or agent-based approach.</p>
<p>Gitlab is betting that, as DevOps continues to evolve and mature, more organizations will prefer to replace the various tools they need to integrate themselves with a platform that lowers the total cost of DevOps. Gartner is forecasting that, by 2023, 40% of organizations will have switched from multiple point solutions to a DevOps value stream delivery platform to streamline application delivery, versus less than 10% using such a platform in 2020. Today, only 10% of organizations are employing such a platform, according to Gartner.</p>
<p>There should also be many more organizations employing DevOps workflows to build applications. Organizations of all sizes now realize how dependent they are on software to drive a wide range of digital business transformation initiatives. The rate at which that software can now be securely developed and updated, in many cases, goes to the heart of their ability to compete. The issue is finding a way to achieve that goal without constructing a platform that ultimately takes time and resources away from building secure software.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/gitlab-updates-approach-to-integrating-devops-workflows/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CI/CD vs. DevOps: Understanding the Real Difference</title>
		<link>https://www.bestdevops.com/stop-messing-up-with-ci-cd-vs-devops-and-learn-the-difference-finally/</link>
					<comments>https://www.bestdevops.com/stop-messing-up-with-ci-cd-vs-devops-and-learn-the-difference-finally/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 04 Feb 2020 05:59:37 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[Delivery]]></category>
		<category><![CDATA[Integrating]]></category>
		<category><![CDATA[IT-technolgoy]]></category>
		<category><![CDATA[Software-Market]]></category>
		<category><![CDATA[Testing]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=10363</guid>

					<description><![CDATA[DevOps and CI/CD are frequently used interchangeably, but they are distinct concepts. This guide explains what each term means, how they relate, and why the distinction matters for engineering teams.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ever since Patrick Debois coined the term &#8220;DevOps&#8221; in 2009, it has become one of the most discussed — and most misunderstood — concepts in software engineering. A closely related source of confusion is CI/CD. Many developers use the two terms interchangeably, yet they describe fundamentally different things. This article untangles the two concepts so you can use them precisely and apply them effectively in your organisation.</p>



<h2 class="wp-block-heading">What Is DevOps?</h2>



<p class="wp-block-paragraph">DevOps is a <strong>cultural and organisational movement</strong> — a combination of practices, ideas, tools, and processes designed to break down the traditional silos between software development and IT operations teams. Its core goal is to enable organisations to build, test, and release software faster, more reliably, and with higher quality.</p>



<p class="wp-block-paragraph">In Patrick Debois&#8217;s own framing, DevOps represents &#8220;a movement of people who think it&#8217;s time for a change in the IT industry — time to stop wasting money, time to start delivering great software, and building systems that scale and last.&#8221;</p>



<p class="wp-block-paragraph">Key attributes of a DevOps culture include:</p>



<ul class="wp-block-list">
<li><strong>Shared ownership</strong> — development and operations teams are jointly responsible for product quality and uptime.</li>
<li><strong>Continuous feedback loops</strong> — teams monitor production systems and feed insights back into the development process.</li>
<li><strong>Automation-first thinking</strong> — repetitive manual tasks (provisioning, testing, deployment) are automated wherever practical.</li>
<li><strong>Incremental delivery</strong> — software is shipped in small, frequent batches rather than large, infrequent releases.</li>
<li><strong>Collaborative tooling</strong> — teams share dashboards, on-call rotations, and post-mortems instead of working in isolation.</li>
</ul>



<p class="wp-block-paragraph">DevOps is not a specific tool, a job title, or a pipeline. It is a way of working — a cultural shift that must be adopted at the team and organisational level before any tooling decisions are made.</p>



<h3 class="wp-block-heading">Why DevOps Exists: The Historical Context</h3>



<p class="wp-block-paragraph">Historically, development teams wrote code and then &#8220;threw it over the wall&#8221; to operations teams who were responsible for deploying and running it. This handoff model created conflict, slow feedback, finger-pointing during outages, and long release cycles. DevOps emerged as a direct response to these friction points, encouraging the two groups to collaborate throughout the entire software lifecycle rather than only at handoff moments.</p>



<h3 class="wp-block-heading">DevOps in Practice: A Real-World Example</h3>



<p class="wp-block-paragraph">Facebook is a widely cited example of DevOps practices at scale. Its engineering approach has long emphasised code ownership, automation, incremental changes, and continuous improvement — all hallmarks of DevOps thinking. The company reportedly completed a migration of its infrastructure and back-end services to the Chef configuration management platform around 2015, allowing it to manage thousands of servers and push multiple code updates daily. Some of those Chef cookbooks were also made publicly available.</p>



<p class="wp-block-paragraph">This example illustrates that DevOps is not a single tool or pipeline — it is a philosophy that shapes how an entire engineering organisation operates.</p>



<h2 class="wp-block-heading">What Is CI/CD?</h2>



<p class="wp-block-paragraph">CI/CD stands for <strong>Continuous Integration / Continuous Delivery</strong> (and sometimes Continuous Deployment). It is a concrete set of engineering practices and automated workflows — often implemented as a &#8220;pipeline&#8221; — that enable teams to integrate, test, and release code changes frequently and reliably.</p>



<p class="wp-block-paragraph">Where DevOps is the culture, CI/CD is one of the most important <em>technical implementations</em> of that culture. Think of DevOps as the philosophy and CI/CD as a key part of the machinery that puts that philosophy into practice.</p>



<h3 class="wp-block-heading">Continuous Integration (CI)</h3>



<p class="wp-block-paragraph">Continuous Integration is the practice of developers merging their code changes into a shared repository frequently — ideally multiple times per day. Each merge triggers an automated build and a suite of automated tests. The goals are:</p>



<ul class="wp-block-list">
<li>Catch integration bugs early, before they compound.</li>
<li>Keep the main branch in a consistently deployable state.</li>
<li>Give developers rapid feedback on whether their change broke anything.</li>
</ul>



<p class="wp-block-paragraph">In their book <em>Continuous Delivery</em>, Jez Humble and David Farley recommend that developers check in to the main branch at least a couple of times a day. The longer a branch lives in isolation, the harder — and riskier — the eventual merge becomes.</p>



<h3 class="wp-block-heading">Continuous Delivery (CD)</h3>



<p class="wp-block-paragraph">Continuous Delivery extends CI by ensuring that every change that passes automated tests is also automatically prepared for release to production. Critically, the final push to production still requires a <strong>human decision</strong>. A staging or pre-production environment is typically used for user acceptance testing (UAT) or manual review before deployment is approved.</p>



<p class="wp-block-paragraph">The key benefit of Continuous Delivery is that releases become low-risk, routine events rather than high-stakes, infrequent ordeals. Because the software is always in a releasable state, the business can choose <em>when</em> to ship based on business needs rather than technical readiness.</p>



<h3 class="wp-block-heading">Continuous Deployment (also CD)</h3>



<p class="wp-block-paragraph">Continuous Deployment goes one step further: every change that passes all automated test stages is <strong>automatically pushed to production</strong> without any manual approval step. This requires a high level of confidence in the automated test suite, because there is no human gate before the change reaches users.</p>



<p class="wp-block-paragraph">Continuous Deployment is not appropriate for every organisation or every product. Regulated industries, for example, may require manual sign-off before production releases. However, for mature teams with comprehensive test coverage, it can dramatically accelerate the feedback loop between developers and end users.</p>



<h3 class="wp-block-heading">Summary: The Scope of Automation in Each Practice</h3>



<figure class="wp-block-table"><table><thead><tr><th>Practice</th><th>Automated Build &amp; Test</th><th>Automated Release Prep</th><th>Automated Production Deploy</th></tr></thead><tbody><tr><td>Continuous Integration</td><td>✅</td><td>❌</td><td>❌</td></tr><tr><td>Continuous Delivery</td><td>✅</td><td>✅</td><td>❌ (manual approval)</td></tr><tr><td>Continuous Deployment</td><td>✅</td><td>✅</td><td>✅</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">CI/CD in Practice: A Real-World Example</h3>



<p class="wp-block-paragraph">The ReactJS framework maintained by Facebook (now Meta) is a publicly visible example of CI/CD in action. The project&#8217;s GitHub repository includes status badges — such as CircleCI build status and code coverage reports via Coveralls — that reflect the results of their automated pipeline on every pull request. Clicking through those badges shows the individual steps of their CI process and how the pipeline is configured. This transparency also serves as a useful learning resource for teams building their own pipelines.</p>



<h2 class="wp-block-heading">CI/CD vs. DevOps: The Core Distinction</h2>



<p class="wp-block-paragraph">The confusion between CI/CD and DevOps is understandable — both aim to speed up and improve software delivery, and CI/CD is almost always present in a healthy DevOps organisation. But they operate at different levels:</p>



<ul class="wp-block-list">
<li><strong>DevOps is the culture and strategy.</strong> It defines how teams are structured, how they communicate, and what values guide their work. You cannot buy DevOps as a product or install it as a tool.</li>
<li><strong>CI/CD is a set of technical practices and automated pipelines.</strong> It is one of the most powerful enablers of a DevOps culture, but it is possible to run a CI/CD pipeline without having a genuine DevOps culture — and conversely, a DevOps culture encompasses much more than just CI/CD (including monitoring, incident management, infrastructure as code, and organisational design).</li>
</ul>



<p class="wp-block-paragraph">A useful analogy: DevOps is to CI/CD what Agile is to Scrum. Agile is a set of values and principles; Scrum is a specific framework that implements many of those principles. Similarly, DevOps is the broader cultural philosophy, and CI/CD is one of the most important concrete frameworks for living it out.</p>



<h2 class="wp-block-heading">Why the Distinction Matters</h2>



<p class="wp-block-paragraph">Getting this distinction right has practical consequences:</p>



<ul class="wp-block-list">
<li><strong>Tooling decisions:</strong> Choosing a CI/CD tool (Jenkins, GitHub Actions, GitLab CI, CircleCI, etc.) is a technical decision. Adopting DevOps requires leadership buy-in, team restructuring, and cultural change — no tool alone delivers it.</li>
<li><strong>Diagnosing problems:</strong> If your deployments are still slow and painful despite having a CI/CD pipeline, the root cause may be cultural — siloed teams, poor communication, lack of shared ownership — not a pipeline configuration problem.</li>
<li><strong>Setting expectations:</strong> Promising stakeholders that &#8220;we&#8217;re adopting DevOps&#8221; when you mean &#8220;we&#8217;re setting up a Jenkins pipeline&#8221; sets up a gap between expectation and reality that can undermine confidence in the initiative.</li>
</ul>



<h2 class="wp-block-heading">Key Takeaways</h2>



<ul class="wp-block-list">
<li>DevOps is a <strong>cultural and organisational philosophy</strong> that bridges the gap between development and operations to enable faster, higher-quality software delivery.</li>
<li>CI/CD is a <strong>set of engineering practices and automated pipelines</strong> — Continuous Integration, Continuous Delivery, and Continuous Deployment — that automate the building, testing, and releasing of software.</li>
<li>CI/CD is one of the most important technical pillars of a DevOps culture, but the two terms are not synonymous.</li>
<li>You can implement CI/CD without a full DevOps transformation, but you cannot achieve a true DevOps culture without some form of CI/CD automation.</li>
<li>The key differentiator among CI, Continuous Delivery, and Continuous Deployment is the <strong>degree of automation</strong> applied — particularly whether the final production deployment requires human approval.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/stop-messing-up-with-ci-cd-vs-devops-and-learn-the-difference-finally/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Getting Started with Visual Studio Code and Integrating with Azure DevOps</title>
		<link>https://www.bestdevops.com/getting-started-with-visual-studio-code-and-integrating-with-azure-devops/</link>
					<comments>https://www.bestdevops.com/getting-started-with-visual-studio-code-and-integrating-with-azure-devops/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 14 Sep 2019 08:04:23 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Integrating]]></category>
		<category><![CDATA[studio]]></category>
		<category><![CDATA[Visual]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=7735</guid>

					<description><![CDATA[Learn how to install Visual Studio Code, configure the Azure Repos extension, and connect to an Azure DevOps repository so you can clone, edit, commit, and sync code directly from your workstation.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you work in cloud administration, you are almost certainly writing or managing code at some level — whether that is a short PowerShell automation script, a set of ARM templates, or an entire infrastructure-as-code project. While the full Visual Studio IDE integrates natively with Azure DevOps, <strong>Visual Studio Code</strong> is a lighter, cross-platform alternative that supports source control, Azure Repos, and Azure DevOps tasks through its extension marketplace. This guide walks through installing VS Code, setting up the Azure Repos extension, and synchronising a repository with Azure DevOps.</p>



<h2 class="wp-block-heading">Prerequisites</h2>



<ul class="wp-block-list">
<li><strong>Visual Studio Code</strong> — available for Windows, macOS, and Linux from <a href="https://code.visualstudio.com/">code.visualstudio.com</a>.</li>
<li><strong>Team Foundation Server (TF) command-line client</strong> — included with Visual Studio 2017/2019 or available as a standalone download. Note the path to <code>tf.exe</code> after installation; you will need it when configuring the extension.</li>
<li>An active <strong>Azure DevOps organisation and project</strong> with at least one repository.</li>
</ul>



<h2 class="wp-block-heading">Setting Up the Environment</h2>



<h3 class="wp-block-heading">Installing Visual Studio Code</h3>



<p class="wp-block-paragraph">Download the VS Code installer for your platform and run it. The Windows installer wizard presents the following steps:</p>



<ol class="wp-block-list">
<li><strong>License Agreement</strong> — Accept the terms and click <strong>Next</strong>.</li>
<li><strong>Select Destination Location</strong> — The default path (<code>C:\Program Files\Microsoft VS Code</code>) is fine for most installations. Click <strong>Next</strong>.</li>
<li><strong>Select Start Menu Folder</strong> — Leave the default and click <strong>Next</strong>.</li>
<li><strong>Select Additional Tasks</strong> — Enable all optional tasks (such as adding VS Code to the PATH and registering it as the default editor for supported file types). These options make it easier to open files directly from Windows Explorer. Click <strong>Next</strong>.</li>
<li><strong>Ready to Install</strong> — Review your choices and click <strong>Install</strong>.</li>
<li><strong>Finish</strong> — Click <strong>Finish</strong>; VS Code launches automatically.</li>
</ol>



<p class="wp-block-paragraph">On macOS or Linux, extract the downloaded archive or use your package manager and launch the application from your Applications folder or terminal.</p>



<h3 class="wp-block-heading">Understanding the VS Code Interface</h3>



<p class="wp-block-paragraph">The VS Code interface has several key areas worth knowing before you install extensions:</p>



<ul class="wp-block-list">
<li><strong>Activity Bar</strong> (far left) — Icons for Explorer, Search, Source Control, Run &amp; Debug, and Extensions. Installed extensions can add their own icons here.</li>
<li><strong>Side Panel</strong> — Opens when you click an Activity Bar icon, showing the relevant tree view or tool panel.</li>
<li><strong>Editor Area</strong> (centre) — Where files open for editing.</li>
<li><strong>Status Bar</strong> (bottom) — Shows contextual information such as the active Git branch, line/column number, and extension status indicators.</li>
<li><strong>Panel</strong> (bottom, toggled with <kbd>Ctrl</kbd>+<kbd>`</kbd>) — Hosts the integrated terminal, Problems, Output, and Debug Console tabs.</li>
</ul>



<p class="wp-block-paragraph">The <strong>Command Palette</strong> (<kbd>F1</kbd> or <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>) is one of the most productive features in VS Code. It gives you instant keyboard-driven access to every editor command, extension action, and setting. Get into the habit of using it rather than hunting through menus.</p>



<h3 class="wp-block-heading">Locating tf.exe</h3>



<p class="wp-block-paragraph">The <code>tf.exe</code> command-line client bridges VS Code&#8217;s Azure Repos extension and the TFVC (Team Foundation Version Control) protocol. If you have Visual Studio 2017 installed, the executable is typically found at:</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">C</span>:\<span class="hljs-selector-tag">Program</span> <span class="hljs-selector-tag">Files</span> (<span class="hljs-selector-tag">x86</span>)\<span class="hljs-selector-tag">Microsoft</span> <span class="hljs-selector-tag">Visual</span> <span class="hljs-selector-tag">Studio</span>\2017\<span class="hljs-selector-tag">Enterprise</span>\<span class="hljs-selector-tag">Common7</span>\<span class="hljs-selector-tag">IDE</span>\<span class="hljs-selector-tag">CommonExtensions</span>\<span class="hljs-selector-tag">Microsoft</span>\<span class="hljs-selector-tag">TeamFoundation</span>\<span class="hljs-selector-tag">Team</span> <span class="hljs-selector-tag">Explorer</span>\<span class="hljs-selector-tag">tf</span><span class="hljs-selector-class">.exe</span></code></span></pre>


<p class="wp-block-paragraph">The exact path varies depending on your Visual Studio edition (Enterprise, Professional, Community) and version. Copy the full path; you will paste it into a VS Code setting in the next section.</p>




<p class="wp-block-paragraph"><strong>Note:</strong> If your repository uses Git rather than TFVC, you do not need <code>tf.exe</code>. Git is built into VS Code and into Azure DevOps by default. The <code>tf.exe</code> path is only required for TFVC workspaces.</p>




<h2 class="wp-block-heading">Enabling Integration with Azure DevOps</h2>



<h3 class="wp-block-heading">Installing the Azure Repos Extension</h3>



<p class="wp-block-paragraph">VS Code does not include Azure DevOps integration out of the box. You add it through the Extensions Marketplace:</p>



<ol class="wp-block-list">
<li>Click the <strong>Extensions</strong> icon in the Activity Bar, or press <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>X</kbd>.</li>
<li>In the search box, type <strong>Azure Repos</strong>.</li>
<li>Select the <strong>Azure Repos</strong> extension published by Microsoft from the results list.</li>
<li>Click <strong>Install</strong>.</li>
</ol>



<p class="wp-block-paragraph">After installation, the extension adds Azure DevOps–related commands to the Command Palette. You can verify this by opening the palette (<kbd>F1</kbd>) and typing <strong>Team</strong> to see the available commands.</p>



<h3 class="wp-block-heading">Configuring the TFVC Path (TFVC Repos Only)</h3>



<p class="wp-block-paragraph">If your Azure DevOps project uses TFVC, point the extension to the <code>tf.exe</code> binary you located earlier:</p>



<ol class="wp-block-list">
<li>Click the <strong>Manage</strong> gear icon in the lower-left corner of VS Code and select <strong>Settings</strong> (or press <kbd>Ctrl</kbd>+<kbd>,</kbd>).</li>
<li>In the Settings search box, type <code>tfvc.location</code>.</li>
<li>Paste the full path to <code>tf.exe</code> into the <strong>Tfvc: Location</strong> field.</li>
</ol>



<p class="wp-block-paragraph">Settings are saved automatically; no manual save step is required.</p>



<h2 class="wp-block-heading">Synchronising Your First Repository</h2>



<h3 class="wp-block-heading">Cloning the Repository</h3>



<ol class="wp-block-list">
<li>Open your Azure DevOps project in a browser and navigate to <strong>Repos</strong>.</li>
<li>Click the <strong>Clone</strong> button to open the clone dialog.</li>
<li>Select <strong>Clone in VS Code</strong> from the IDE options.</li>
<li>VS Code opens and displays a confirmation dialog asking permission to handle the Azure DevOps URL. Click <strong>Open</strong>.</li>
<li>A folder-picker dialog appears. Choose the local directory where you want the repository to be cloned, then click <strong>Select Repository Location</strong>.</li>
<li>VS Code clones the repository and displays a notification when the process is complete. Click <strong>Open</strong> in the notification to open the cloned folder.</li>
</ol>



<p class="wp-block-paragraph">All files and folders from the remote repository are now visible in the VS Code Explorer panel on the left.</p>



<h3 class="wp-block-heading">Signing In to Azure DevOps</h3>



<p class="wp-block-paragraph">Before you can push changes, authenticate with Azure DevOps from within VS Code:</p>



<ol class="wp-block-list">
<li>Open the Command Palette (<kbd>F1</kbd>) and type <strong>Team: Signin</strong>, then press <kbd>Enter</kbd>.</li>
<li>Choose your preferred authentication method:
<ul>
<li><strong>Provide an access token manually</strong> — Generate a Personal Access Token (PAT) in Azure DevOps under <em>User Settings → Personal Access Tokens</em> and paste it when prompted.</li>
<li><strong>Authenticate automatically</strong> — The extension generates a device code, opens a browser window, and asks you to enter the code and sign in with your Azure AD credentials.</li>
</ul>
</li>
<li>Follow the prompts to complete authentication.</li>
</ol>



<p class="wp-block-paragraph">Once authenticated, the Status Bar at the bottom of VS Code displays your Azure DevOps connection status.</p>



<h3 class="wp-block-heading">Making, Committing, and Pushing Changes</h3>



<ol class="wp-block-list">
<li>Open any file in the repository (for example, <code>README.md</code>), make a change, and save (<kbd>Ctrl</kbd>+<kbd>S</kbd>).</li>
<li>Click the <strong>Source Control</strong> icon in the Activity Bar (or press <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>G</kbd>). The modified file appears in the <em>Changes</em> list.</li>
<li>Click the <strong>✓ (checkmark)</strong> icon at the top of the Source Control panel to commit. VS Code may ask you to stage all changes first — confirm if prompted.</li>
<li>Enter a meaningful commit message in the Command Palette prompt and press <kbd>Enter</kbd>.</li>
<li>To push the commit to Azure DevOps, click the <strong>sync</strong> indicator in the Status Bar (it shows an upload/download arrow with a count of pending changes) or open the Command Palette and run <strong>Git: Push</strong>.</li>
</ol>



<p class="wp-block-paragraph">After the sync completes, open the repository in Azure DevOps in your browser and confirm that your commit appears in the repository history.</p>



<h2 class="wp-block-heading">Key Takeaways</h2>



<ul class="wp-block-list">
<li>Visual Studio Code is a free, cross-platform editor that works on Windows, macOS, and Linux.</li>
<li>The <strong>Azure Repos</strong> extension (published by Microsoft) adds Azure DevOps integration directly to the editor.</li>
<li>TFVC users need to configure the <code>tfvc.location</code> setting to point at the <code>tf.exe</code> binary. Git-based repos work with VS Code&#8217;s built-in Git support and do not require this step.</li>
<li>The <strong>Command Palette</strong> (<kbd>F1</kbd>) is the fastest way to run any editor or extension command.</li>
<li>Authentication can be handled via a Personal Access Token or an interactive device-code flow tied to your Azure AD account.</li>
</ul>



<p class="wp-block-paragraph">Once your environment is configured, VS Code becomes a capable, lightweight workstation for managing infrastructure-as-code, reviewing pull requests (via the Azure DevOps pull request extension), and running pipelines — all without leaving your editor.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/getting-started-with-visual-studio-code-and-integrating-with-azure-devops/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Integrating Codeship Pro and Docker with Percy Visual Testing</title>
		<link>https://www.bestdevops.com/integrating-codeship-pro-and-docker-with-percy-visual-testing/</link>
					<comments>https://www.bestdevops.com/integrating-codeship-pro-and-docker-with-percy-visual-testing/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Fri, 02 Jun 2017 07:21:01 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[BestDevOps]]></category>
		<category><![CDATA[Codeship Pro]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Integrating]]></category>
		<category><![CDATA[Percy]]></category>
		<category><![CDATA[Percy Visual Testing]]></category>
		<category><![CDATA[Pro]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=1711</guid>

					<description><![CDATA[Learn how to connect Percy visual testing to your Codeship Pro CI/CD pipeline using Docker, covering static sites, Ruby (Capybara), and Ember project setups.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Source: documentation.codeship.com</em></p>



<h2 class="wp-block-heading">What Is Percy?</h2>



<p class="wp-block-paragraph">Percy is a visual testing tool that integrates into your CI/CD pipeline to capture screenshots of your application, track visual changes between builds, and require explicit team approval before visual regressions are accepted. When combined with Codeship Pro and Docker, Percy lets you automate visual regression detection as a first-class step in your delivery workflow.</p>



<h2 class="wp-block-heading">Setting Up Percy with Codeship Pro</h2>



<p class="wp-block-paragraph">The integration relies on two components working together: Percy&#8217;s SDK (which varies by project type) installed inside your Docker image, and Percy&#8217;s API credentials passed in as encrypted environment variables in Codeship Pro.</p>



<h3 class="wp-block-heading">Setting Your Percy Environment Variables</h3>



<p class="wp-block-paragraph">When you create a new project inside Percy, the platform provides two credential values:</p>



<ul class="wp-block-list">
  <li><code>PERCY_TOKEN</code> — the API token that authenticates your builds with Percy.</li>
  <li><code>PERCY_PROJECT</code> — the unique identifier for your Percy project.</li>
</ul>



<p class="wp-block-paragraph">Both values must be added as encrypted environment variables in your <code>codeship-services.yml</code> file. Codeship Pro&#8217;s encrypted environment variable support ensures these secrets are never stored in plain text in your repository. Refer to the <a href="https://documentation.codeship.com/pro/builds-and-configuration/environment-variables/">Codeship Pro environment variables documentation</a> for instructions on encrypting and referencing these values.</p>



<h2 class="wp-block-heading">Integration by Project Type</h2>



<h3 class="wp-block-heading">Static Sites</h3>



<p class="wp-block-paragraph">For static HTML sites running inside Docker images on Codeship Pro, Percy provides a CLI tool distributed as a Ruby gem. Install it in your Dockerfile:</p>


<pre class="wp-block-code"><span><code class="hljs">RUN gem install percy-cli</code></span></pre>


<p class="wp-block-paragraph"><strong>Prerequisite:</strong> Your Docker image must include both Ruby and RubyGems. Without them, the gem installation step will fail.</p>



<p class="wp-block-paragraph">Once the gem is installed, add a Percy snapshot step to your <code>codeship-steps.yml</code> file:</p>


<pre class="wp-block-code"><span><code class="hljs">- service: your_service
  command: percy snapshot directory_to_snapshot</code></span></pre>


<p class="wp-block-paragraph">A few important details about this command:</p>



<ul class="wp-block-list">
  <li>Replace <code>your_service</code> with the name of the service defined in your <code>codeship-services.yml</code>.</li>
  <li>Replace <code>directory_to_snapshot</code> with the path to the directory containing your built static files.</li>
  <li>The target directory <strong>must contain HTML files</strong> — Percy uses them to render the snapshots.</li>
  <li>You can add multiple snapshot steps to cover multiple directories in one build.</li>
</ul>



<h3 class="wp-block-heading">Ruby Projects</h3>



<p class="wp-block-paragraph">For Ruby applications using Capybara, Minitest, RSpec, or similar test frameworks, Percy provides the <code>percy-capybara</code> gem. Add it to your Dockerfile:</p>


<pre class="wp-block-code"><span><code class="hljs">RUN gem install percy-capybara</code></span></pre>


<p class="wp-block-paragraph">Alternatively, add <code>percy-capybara</code> to your <code>Gemfile</code> and let Bundler manage the dependency — this is typically the cleaner approach for Ruby projects.</p>



<p class="wp-block-paragraph"><strong>Prerequisite:</strong> As with static sites, your Docker image must include both Ruby and RubyGems.</p>



<p class="wp-block-paragraph">After installation, you need to add Percy hooks directly into your test specs. The specific integration code — such as calling <code>Percy::Capybara.snapshot</code> within your tests — is documented in detail in the Percy documentation for each supported test framework. Your test suite is then invoked via the standard command step in <code>codeship-steps.yml</code>, and Percy captures snapshots automatically as tests run.</p>



<h3 class="wp-block-heading">Ember Projects</h3>



<p class="wp-block-paragraph">For Ember.js applications, Percy provides a dedicated Ember addon. Install it inside your Docker image by adding the following to your Dockerfile:</p>


<pre class="wp-block-code"><span><code class="hljs">RUN ember install ember-percy</code></span></pre>


<p class="wp-block-paragraph">As with the Ruby integration, you will need to add Percy hooks to your Ember test specs. Consult the Percy documentation for the specific API calls required to trigger snapshots within your Ember tests. Your test suite is then invoked via your <code>codeship-steps.yml</code> file as a normal build step, and Percy captures visual snapshots during the test run.</p>



<h2 class="wp-block-heading">How the Full Pipeline Fits Together</h2>



<p class="wp-block-paragraph">Regardless of project type, the overall integration pattern in Codeship Pro is consistent:</p>



<ol class="wp-block-list">
  <li><strong>Build your Docker image</strong> with the appropriate Percy SDK installed.</li>
  <li><strong>Encrypt your Percy credentials</strong> (<code>PERCY_TOKEN</code> and <code>PERCY_PROJECT</code>) and reference them in <code>codeship-services.yml</code>.</li>
  <li><strong>Run your tests or snapshot command</strong> as a step in <code>codeship-steps.yml</code>.</li>
  <li><strong>Review visual diffs</strong> in the Percy dashboard, where your team can approve or reject detected changes before the build is considered passing.</li>
</ol>



<p class="wp-block-paragraph">This workflow ensures that visual regressions are caught automatically in CI, and that no unreviewed UI change can silently reach production.</p>



<h2 class="wp-block-heading">Further Reading</h2>



<ul class="wp-block-list">
  <li><a href="https://percy.io/docs">Percy documentation</a> — SDK setup guides for all supported frameworks.</li>
  <li><a href="https://documentation.codeship.com/pro/">Codeship Pro documentation</a> — reference for <code>codeship-services.yml</code> and <code>codeship-steps.yml</code>.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/integrating-codeship-pro-and-docker-with-percy-visual-testing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
