diff --git a/.azure/README.md b/.azure/README.md new file mode 100644 index 00000000..45e35e13 --- /dev/null +++ b/.azure/README.md @@ -0,0 +1,45 @@ +# Azure Pipeline Configuration + +This directory contains the Azure DevOps pipeline configuration for the ASN.1 Codec project. + +## Overview + +The pipeline configuration in `azure-pipelines.yml` is primarily used for Continuous Integration (CI) in the CDOT-CV fork of the ASN.1 Codec project. It serves as the first step in a two-stage process: + +1. **Build Pipeline (this configuration)** + - Triggers on changes to the `develop` branch + - Monitors specific project directories for changes: + - `usdot-asn1c/*` + - `src/*` + - `include/*` + - `pugixml/*` + - Copies all source files to the artifact staging directory + - Publishes the source code as an artifact named 'asn1_codec' + +2. **Release Pipeline (configured in Azure DevOps)** + - Uses the published artifact from the build pipeline + - Handles Docker image building and deployment + - Configuration is managed through the Azure DevOps web interface + +## Pipeline Trigger + +The pipeline automatically triggers when: + +- Changes are pushed to the `develop` branch +- Changes occur in any of the monitored project directories + +## Pipeline Steps + +1. **Copy Files** + - Copies project files to the artifact staging directory + - Excludes certain files/directories by default: + - `docs` directories + - Markdown (`.md`) files + +2. **Publish Artifact** + - Creates an artifact named 'asn1_codec' + - Makes the source code available for the release pipeline + +## Note + +The actual Docker build process and deployment steps are configured in the Azure DevOps release pipeline, which is separate from this build pipeline configuration. The release pipeline picks up the artifact produced by this build pipeline and performs the necessary build and deployment steps. diff --git a/.azure/azure-pipelines.yml b/.azure/azure-pipelines.yml new file mode 100644 index 00000000..15086ef1 --- /dev/null +++ b/.azure/azure-pipelines.yml @@ -0,0 +1,37 @@ +# Azure pipeline used to trigger builds of the asn1_codec project +# This pipeline is primarily used for CI in the CDOT-CV fork + +trigger: + branches: + include: + - develop + paths: + include: + - 'usdot-asn1c/*' + - 'src/*' + - 'include/*' + - 'pugixml/*' + +pool: + vmImage: ubuntu-latest + +steps: + # Add checkout step with submodules + - checkout: self + submodules: true + + - task: CopyFiles@2 + inputs: + SourceFolder: '$(Build.SourcesDirectory)' + Contents: | + ** + !**/docs/** + !**/*.md + TargetFolder: '$(Build.ArtifactStagingDirectory)' + + # Publish the artifacts directory for consumption in publish pipeline + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)' + ArtifactName: 'asn1_codec' + publishLocation: 'Container'