VTEX IO Azure DevOps Extension

A comprehensive dual-purpose Azure DevOps extension that provides both work item management capabilities and a complete collection of Azure DevOps pipeline tasks specifically designed for VTEX IO development workflows.
🎯 Purpose and Functionality
This extension serves two primary functions:
- Work Item Extension: Enhances Azure DevOps work items with automated branch information generation and comment management
- VTEX CI/CD Pipeline Tasks: Provides 11 specialized Azure DevOps pipeline tasks for complete VTEX IO development automation
The extension is designed for VTEX IO development teams who need streamlined CI/CD processes, automated release management, and enhanced work item tracking capabilities within their Azure DevOps environment.
🎯 Target Audience
- VTEX IO Developers: Teams building applications on the VTEX IO platform
- DevOps Engineers: Professionals implementing CI/CD automation for VTEX projects
- Project Managers: Teams using Azure DevOps for VTEX project management and tracking
<<<<<<< Updated upstream
✨ Key Features
=======
- Beta Generation (1.beta.yml) - First step in the CI/CD process
- Creates a beta version of your VTEX IO app for testing
- Runs when a pull request is created
- Publishes app with beta tag and creates a release tag
Stashed changes
Work Item Management
- Automated Branch Name Generation: Creates standardized branch names from work item titles and sprint information
- Smart Comment Integration: Adds formatted branch information directly to work items
- Simple User Interface: Uses intuitive browser dialogs for seamless user experience
VTEX CI/CD Automation
- Complete Authentication Flow: Secure VTEX login and session management
- Deployment Automation: Automated app deployment to VTEX workspaces
- Publishing Pipeline: Streamlined app publishing to VTEX registry
- Release Management: Automated version bumping, changelog generation, and Git release creation
- Pull Request Integration: Automated PR creation, merging, and completion workflows
- Dependency Management: Automated project setup and dependency configuration
Advanced Pipeline Features
- Error Handling: Comprehensive error reporting with pull request thread integration
- Parallel Processing: Optimized task execution for faster pipeline performance
- Security Integration: Secure credential management using Azure DevOps variable groups
- Monitoring Support: Built-in logging and metrics collection for pipeline observability
📚 Documentation
Core Components
Development & Deployment
🚀 Quick Start
Prerequisites
- Azure DevOps Organization: Active Azure DevOps instance
- Node.js 16+: For Azure DevOps agent compatibility
- VTEX Account: Valid VTEX account with API credentials
- PNPM: Package manager for development
Installation from Marketplace
Install the Extension
# Visit Azure DevOps Marketplace
https://marketplace.visualstudio.com/items?itemName=MaikRestrepo.vtex-io-ci-cd
Configure Permissions
- Add Contribute to pull requests permission to Project Collection Build Service Accounts
- Navigate to: Project → Repository → Security

Set Up Variable Groups
# Create variable group with VTEX credentials
VTEX_API_KEY: "your-vtex-api-key"
VTEX_API_TOKEN: "your-vtex-api-token"
VTEX_EMAIL: "your-vtex-email"
VTEX_ACCOUNT: "your-vtex-account-name"
Basic Pipeline Configuration
# azure-pipelines.yml
trigger:
branches:
include:
- main
variables:
- group: vtex-credentials
stages:
- stage: Setup
jobs:
- job: Dependencies
steps:
- task: SetupDependencies@1
displayName: 'Setup Project Dependencies'
- stage: Authentication
jobs:
- job: VTEXLogin
steps:
- task: VtexLogin@1
displayName: 'Login to VTEX'
inputs:
apiKey: $(VTEX_API_KEY)
apiToken: $(VTEX_API_TOKEN)
email: $(VTEX_EMAIL)
account: $(VTEX_ACCOUNT)
- stage: Deploy
jobs:
- job: VTEXDeploy
steps:
- task: VtexDeploy@1
displayName: 'Deploy to VTEX Workspace'
🔧 Development Commands
Building the Extension
# Install dependencies
pnpm install
# Build all tasks
pnpm run build:tasks
# Build extension
pnpm run build:extension
# Build everything
pnpm run build
# Watch mode for development
pnpm run watch
Testing
# Run unit tests
pnpm run test
# Run tests with coverage
pnpm run test:coverage
# Run integration tests
pnpm run test:integration
Linting and Quality
# Run ESLint
pnpm run lint
# Fix linting issues
pnpm run lint:fix
# Type checking
pnpm run type-check
📋 Available Pipeline Tasks
VTEX Tasks
Task |
Description |
Documentation |
VtexLogin |
Authenticate with VTEX APIs |
README |
VtexDeploy |
Deploy app to VTEX workspace |
README |
VtexPublish |
Publish app to VTEX registry |
README |
VtexChangeOriginToSourceBranch |
Git branch management for VTEX |
README |
Git Integration Tasks
Task |
Description |
Documentation |
GitPullRequestMergeIntoBranch |
Merge PR into target branch |
README |
GitPullRequestRelease |
Create release PR with changelog |
README |
GitPullRequestLabels |
Auto-manage PR labels using projex |
README |
GitRelease |
Handle complete release automation |
README |
Project Management Tasks
Task |
Description |
Documentation |
ProjectSetupDependencies |
Configure project dependencies |
README |
🔄 Pipeline Templates
This extension provides YAML pipeline templates to simplify your CI/CD workflows for VTEX IO projects. These templates are organized in a logical workflow order:
Available Templates
Template |
Purpose |
Usage |
1.beta.yml |
Beta version generation |
Creates beta versions for PR testing |
2.publish.yml |
Production publication |
Publishes apps to VTEX registry |
3.deploy-release.yml |
Deployment & release |
Final deployment and Git release creation |
Workflow Sequence
%%{init: { "flowchart": { "defaultRenderer": "elk" } } }%%
flowchart LR
classDef statementClass fill:#7f56d9,color:white,stroke:#5d3ba2,stroke-width:2px
classDef inicioClass fill:#00c2a8,color:white,stroke-width:2px,stroke:lightGreen
classDef finClass fill:black,color:white,stroke-width:2px
pr(("Pull Request")):::inicioClass
beta["1. Beta Generation"]:::statementClass
merge["PR Merge"]:::statementClass
publish["2. Publication"]:::statementClass
deploy["3. Deploy & Release"]:::finClass
pr --> beta
beta --> merge
merge --> publish
publish --> deploy
Example Implementation
# azure-pipelines.yml
trigger: none
pr:
branches:
include:
- main
extends:
template: docs/azure-devops/1.beta.yml
parameters:
account: 'your-vtex-account'
email: '$(VTEX_EMAIL)'
apiKey: '$(VTEX_API_KEY)'
apiToken: '$(VTEX_API_TOKEN)'
environment: 'development'
🏗️ Architecture Overview
The extension follows a modular architecture with clear separation of concerns:
%%{init: { "flowchart": { "defaultRenderer": "elk" } } }%%
flowchart TB
classDef statementClass fill:#7f56d9,color:white,stroke:#5d3ba2,stroke-width:2px
classDef dbClass fill:#3578ff,color:white,stroke:blue,stroke-width:2px
classDef amazonClass fill:#da0063,stroke:pink,color:white,stroke-width:2px
subgraph "Extension Components"
workitem["Work Item Extension"]:::amazonClass
tasks["Pipeline Tasks"]:::statementClass
end
subgraph "Shared Foundation"
models["Data Models"]:::dbClass
services["Azure DevOps Services"]:::dbClass
utils["Utility Functions"]:::dbClass
end
subgraph "Build System"
webpack["Webpack Dual Config"]:::statementClass
typescript["TypeScript Compilation"]:::statementClass
end
workitem --> services
tasks --> services
services --> models
services --> utils
webpack --> workitem
webpack --> tasks
typescript --> webpack
🔧 Development & Contribution
Development Setup
Clone and Setup
git clone https://github.com/Maik3345/azure-devops-vtex-extension
cd azure-devops-vtex-extension
pnpm install
Start Development
# Watch mode for tasks
pnpm run watch:tasks
# Watch mode for extension
pnpm run watch:extension
Testing Changes
# Build and test
pnpm run build
pnpm run test
# Package for testing
pnpm run package
Version Management
- Extension Version: Controlled in
vss-extension.json
- Task Versions: Each task has independent versioning in
task.json
- Automated Updates: Use
updateVersion.js
script for synchronized updates
Contribution Guidelines
- Feature Development: Create feature branches from
main
- Testing: Ensure all tests pass and add new tests for features
- Documentation: Update relevant documentation in
/docs
- Pull Requests: Use the automated PR template system
- Code Quality: Follow TypeScript strict mode and ESLint rules
📊 Extension Metrics
Metric |
Value |
Total Tasks |
11 specialized pipeline tasks |
Supported Platforms |
Azure DevOps Server 2020+, Azure DevOps Services |
Node.js Compatibility |
16.x, 18.x, 20.x |
TypeScript Version |
4.9+ |
Build Target |
Dual (Node.js + Browser) |
Package Size |
Optimized for fast installation |
Getting Help
Contributing
- Code Contributions: Follow the development setup and contribution guidelines
- Documentation: Help improve documentation and examples
- Testing: Report issues and help test new features
📄 License
This project is licensed under the MIT License. See the LICENSE file for details.
Built with ❤️ for the VTEX IO community