Is it possible to export delivery pipeline settings? - ibm-cloud

I would like to use the same bluemix delivery pipeline for several apps. Could I export its settings to some template?
Thanks in advance!

From the doc found here,
Section: GENERATING A YAML FILE FROM A PIPELINE
You can generate a YAML file from a pipeline.
Generate the file from an existing pipeline with a URL in this format:
http(s)://<DevOps Services domain>/pipeline/user/project/yaml
This call does not require an accept header. You can use this call from a browser.
Note: For safety reasons, secure-stage environment property values are omitted from generated pipeline YAML files.
To reuse this downloaded template, per the link shared above - simply create a .bluemix folder at the root of your other code project folders and place this template file within this .bluemix folder. The file should be named as pipeline.yml

How to do it nowadays (March 2020)
To export a pipeline simple add /yamlto pipeline url. example:
From:
https://cloud.ibm.com/devops/pipelines/<pipeline-guid>?env_id=<ibm_cloud_region>
To:
https://cloud.ibm.com/devops/pipelines/<pipeline-guid>/yaml?env_id=<ibm_cloud_region>
Download the file and store it as pipeline.yml. Put it inside .bluemix folder in the root of your project as #Sanjay.Joshi said.

Related

How do I use an Azure DevOps Services Build Pipeline to retrieve TFVC source files based upon a Label value and then zip those files?

This is a TFVC repo in Azure, not Git. It is running in Azure DevOps Services, not local in Azure DevOps Server (2019). This is a classic pipeline, not YAML.
I got as far as adding a variable that contains the Label value I am looking to package into the zip file.
I can't figure out how to get the sources by Label value. In the Pipeline Get Sources step, I've narrowed the path down, but then I need to recursively get source files that have the Label in the variable I defined.
The next step is to zip those source files up, I've added an Archive task to which I will change the root folder from "build binaries" to the sources folder.
This is necessary for this particular project because we must pass the source files to the vendor as a zip for them to compile and install for us. The developers create/update the source files, build and test them locally, then apply a Label to the sources for a given push to the vendor.
When configuring 'Get sources' step, there is no any option or method that can only map the source files with the specified label.
As a workaround, in the pipeline job, you can try to add the steps to filter out the source files with the specified label, and use the Copy Files task to copy these files to a folder, then use the Archive Files task in this folder.
[UPDATE]
Normally, a pipeline run will automatically check out the file version (changeset) that triggers the run. If manually trigger the the pipeline, by default the run will check out the latest changeset if you do not specify one.
The labels are used to mark a version of a files or folders, so you also can get the specific version of files or folders via the labels.
In your case, you can try using the 'tf get' command to download the files with the specified labels.

Azure devops build pipeline

I have created a sample Website project with a single page having HellowWord.aspx and HellowWord.aspx.cs. I am trying to create an Azure DevOps build pipeline for this project. The following are the tasks I have added to my build package.
But the publish artifacts always contains the aspx and aspx.cs file. Not sure which tasks I am supposed to add to make the proper publish package. Which will create proper dlls for .aspx file instead of aspx.cs.
Publish build artifacts task has an argument Path to publish, which defines the folder or file path to publish. This can be a fully-qualified path or a path relative to the root of the repository. Wildcards are not supported. Variables are supported. Example: $(Build.ArtifactStagingDirectory). By default, this argument uses variable $(Build.ArtifactStagingDirectory).
So you need to check your Copy files task, to see what you have copied to $(Build.ArtifactStagingDirectory), and copy the correct files in this task.
https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-files?view=azure-devops&tabs=yaml

What does "Package or folder" refer to in the File transform task in a release pipeline?

I'm completely new to Azure DevOps Pipelines so if I'm doing something incorrectly I'd appreciate a nod in the right direction... I setup a build pipeline and that seems to be working, now I'm trying to setup a release pipeline in order to run tests, it's mostly based on Microsoft's documentation:
https://learn.microsoft.com/en-us/azure/devops/test/run-automated-tests-from-test-hub?view=azure-devops
Before running tests I need to transform a config file to replace some variables like access keys, usernames, etc. What I setup is what I have below but for the life of me I can't figure out what text box Package or folder refers to. The documentation is super helpful as you can imagine:
File path to the package or a folder
but what package or what folder is this referring to??? I've tried several different things but everything errors with
##[error]Error: Nopackagefoundwithspecifiedpattern D:\a\r1\a\**\*.zip
or pretty much whatever I specify for a value.
The File Transform task supports the .zip files.
Test with the default File Transform task settings, I could reproduce this issue.
In Release pipeline, the file path could has one more node for the build artifacts .zip file.
The format example:
$(System.DefaultWorkingDirectory)\{Source alias name}\{Artifacts name}\*.zip
So you could try to set the $(System.DefaultWorkingDirectory)/**/**/*.zip in Package Or folder field
For example:
On the other hand, you can check the specific path in the Release log -> Download Artifacts Step.
$(System.DefaultWorkingDirectory): D:\a\r1\a
You could aslo use this specific path in the task.
Update:
If your file is Project Folder, you refer to the following sample:
File structure:
Task Settings:
Note:You only need to assign to the folder node.
You could also select the folder path via ... option.

Archive source folder contents not the folder in azure build pipeline

i am using azure-pipelines to create a build of my react app and then to deploy it to azure app-service now when i build the app all the required contents go it "/build" folder which then i archive and publish to build artifacts with the corresponding tasks. but the issue is in the archive the structure is "/build/{required files}" but i need the structure as "/{required files}" is there any way to achieve it on azure-pipelines.
i have already looked in azure documentation there they show a variable named "includeRootFolder" but even in the link it does not have a description and in the Archive task i am not able to see any option which will set this variable to false.
There is an option "Prepend root folder name to archive paths" on the task "Archive files" and is enabled per default which causes the behaviour you encounter. Just uncheck this option and this should fix your structure

How to add config file that is in .gitIgnore to azure pipeline build?

I have a json config file with connectionStrings and other info that I don't want in the gitHub repository. Is there a way to just add it as a constant static file so that all builds have access to it?
You can add the file to the "Library" then download the file in the build pipeline and use it.
The file will be downloaded to a temp folder in the agent:
$(Agent.WorkFolder)\_temp\filename
During the build you can take the file from there and use him.