Files
importer-labs/azure_devops/4-dry-run.md
T
2022-11-03 14:31:03 -07:00

94 lines
3.0 KiB
Markdown

# Perform a dry-run migration of an Azure DevOps pipeline
In this lab you will use the `dry-run` command to convert an Azure DevOps pipeline to its equivalent GitHub Actions workflow.
## Prerequisites
1. Followed the steps [here](./readme.md#configure-your-codespace) to set up your GitHub Codespaces environment and bootstrap an Azure DevOps project.
2. Completed the [configure lab](./1-configure.md#configuring-credentials).
3. Completed the [audit lab](./2-audit.md).
## Perform a dry run
You will perform a dry run for a pipeline in the bootstrapped Azure DevOps project. Answer the following questions before running this command:
1. What is the id of the pipeline to convert?
- __:pipeline_id__. This id can be found by:
- Navigating to the build pipelines in the bootstrapped Azure DevOps project <https://dev.azure.com/:organization/:project/_build>
- Selecting the pipeline with the name "pipeline1"
- Inspecting the URL to locate the pipeline id <https://dev.azure.com/:organization/:project/_build?definitionId=:pipeline_id>
2. Where do you want to store the result?
- __tmp/dry-run__. This can be any path within the working directory from which GitHub Actions Importer commands are executed.
### Steps
1. Navigate to your codespace terminal.
2. Run the following command from the root directory:
```bash
gh actions-importer dry-run azure-devops pipeline --pipeline-id :pipeline_id --output-dir tmp/dry-run
```
3. The command will list all the files written to disk when the command succeeds.
4. View the converted workflow:
- Find `tmp/dry-run/pipelines/lab-testing/pipelines/pipeline1/.github/workflows` in the file explorer pane in your codespace.
- Click `pipeline1.yml` to open.
## Inspect the output files
The files generated from the `dry-run` command represent the equivalent Actions workflow for the given Azure DevOps pipeline. The Azure DevOps pipeline and converted workflow can be seen below:
<details>
<summary><em>Azure DevOps pipeline 👇</em></summary>
```yaml
trigger:
- main
pool:
vmImage: windows-latest
steps:
- script: echo Hello, I am pipeline 1!
displayName: 'Run a one-line script'
- script: |
echo Add other tasks to build, test, and deploy your project.
echo See https://aka.ms/yaml
displayName: 'Run a multi-line script'
```
</details>
<details>
<summary><em>Converted workflow 👇</em></summary>
```yaml
name: actions-importer-bootstrap/pipelines/pipeline1
on:
push:
branches:
- main
jobs:
build:
runs-on: windows-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: Run a one-line script
run: echo Hello, I am pipeline 1!
- name: Run a multi-line script
run: |-
echo Add other tasks to build, test, and deploy your project.
echo See https://aka.ms/yaml
```
</details>
Despite these two pipelines using different syntax they will function equivalently.
## Next lab
[Use custom transformers to customize GitHub Actions Importer's behavior](./5-custom-transformers.md)