Comments (3)
I came up with a (kind of) working solution, maybe it is of help to someone else. I'd also really appreciate any comments or feedback on this, since I have been using Azure CI for not much more than 3 hours now ;) ...
This approach uses a conditional task execution which only triggers the npm publish task when the source branch is a new release (create via github). This still has some disadvantages (e.g. manual versioning), but works for a simple publishing workflow when using the github UI for creating releases.
# Build and publish a node.js-based library from a github repository. Only
# publish anything to npm if the tests succeeded (so the build was ok)
# and the build is spawned from a new release in github.
pool:
vmImage: 'Ubuntu 16.04'
steps:
- task: NodeTool@0
inputs:
versionSpec: '8.x'
displayName: 'Install Node.js'
- script: |
npm install
npm run test
displayName: 'Npm install and test'
- task: Npm@1
# only execute this task when the sourceBranch is a new release
condition: startsWith(variables['build.sourceBranch'], 'refs/tags/')
inputs:
command: publish
publishEndpoint: npmjs.com
displayName: 'Publishing to npmjs.com'
from azure-pipelines-yaml.
I suspect the preferred approach is to use a different pipeline YAML file for releases, and give that a trigger that only looks for tags. You can combine that with a template to prevent duplication. For example I use these three files:
templates/test.yml
jobs:
- job: test
displayName: Run tests
pool:
vmImage: 'Ubuntu 16.04'
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
- task: Npm@1
displayName: 'npm install'
inputs:
command: install
- task: Npm@1
displayName: 'npm test'
inputs:
command: custom
customCommand: 'test'
test.yml
jobs:
- template: templates/test.yml
release.yml
trigger:
branches:
exclude:
- "*"
tags:
include:
- v*
jobs:
- template: templates/test.yml
- job: docker
displayName: Docker image
dependsOn:
- test
pool:
vmImage: 'Ubuntu 16.04'
steps:
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: azr-crypho
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
repository: crypho/nexmock
tags: |
$(Build.BuildId)
$(Build.SourceBranch)
from azure-pipelines-yaml.
In order to consolidate to fewer feedback channels, we've moved suggestions and issue reporting to Developer Community. Sorry for any confusion resulting from this move.
from azure-pipelines-yaml.
Related Issues (20)
- by design there´s not available option in DeVops Service to create a new pipeline yaml for "existing" branch HOT 5
- deploy built artifacts in container uploads both checked out projects instead of right one HOT 2
- how to triger a build pipeline from powershell HOT 2
- Pipeline resource trigger documentation missing prerequisite HOT 1
- could find the branch error in azure yaml HOT 2
- python task ran successfull but pipeline is faiing with bash exit code 1 HOT 3
- Azure YAML Pipelines - Using template expression variables at non-global scope HOT 1
- Examples for resource pipeline and source inputs are not clear. HOT 9
- Hi Team While running my Azure pipeline.yaml I am getting following error: directive are not supported for the expression that are embedded within the string Directive are only supported when the entire value is an expression HOT 1
- This repo is missing important files
- It is possible to convert a json to variables/parameters YAML and iterate? HOT 3
- Support for conditions in templates? HOT 1
- Custom expression/function in Yaml HOT 1
- Azure DevOps YAML Template Powershell script file issue HOT 2
- Azure Pipelines Resource Trigger (branch filter) not working as expected. HOT 2
- GitHub Actions Build Error: Invalid App Path for Django-Celery-Beat Dockerfile HOT 3
- Error running pipeline after renaming default GitHub branch from 'master' to 'main' HOT 3
- Publishing artifacts from a failed step HOT 1
- Pass variables from Build pipeline to Release HOT 2
- Error signing debug variant bundle android app using YAML file HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from azure-pipelines-yaml.