Rebrand labs

This commit is contained in:
Ethan Dennis
2022-11-03 14:31:03 -07:00
parent 5a4aa125ae
commit cc269ae804
37 changed files with 401 additions and 395 deletions
+7 -7
View File
@@ -1,6 +1,6 @@
# Configure credentials for Valet
# Configure credentials for GitHub Actions Importer
In this lab, you will use the `configure` CLI command to set the required credentials and information for Valet to use when working with CircleCI and GitHub.
In this lab, you will use the `configure` CLI command to set the required credentials and information for GitHub Actions Importer to use when working with CircleCI and GitHub.
You will need to complete all of the setup instructions [here](./readme.md#configure-your-codespace) prior to performing this lab.
@@ -28,7 +28,7 @@ You will need to complete all of the setup instructions [here](./readme.md#confi
- At the GitHub url prompt, enter the GitHub instance url or hit enter to accept the default value (`https://github.com`).
- At the CircleCI token prompt, enter the CircleCI access token from step 2 and press enter.
- At the CircleCI base url prompt, hit enter to accept the default value (`https://circleci.com`).
- At the CircleCI organization name prompt, enter `valet-labs`. This is the organization we'll be using throughout these labs.
- At the CircleCI organization name prompt, enter `actions-importer-labs`. This is the organization we'll be using throughout these labs.
```console
$ gh actions-importer configure
@@ -40,13 +40,13 @@ You will need to complete all of the setup instructions [here](./readme.md#confi
✔ Base url of the GitHub instance: https://github.com
✔ Personal access token for CircleCI: ***************
✔ Base url of the CircleCI instance: https://circleci.com
✔ CircleCI organization name: valet-labs
✔ CircleCI organization name: actions-importer-labs
Environment variables successfully updated.
```
## Verify your environment
To verify our environment is configured correctly, we are going to run the `update` CLI command. The `update` CLI command will download the latest version of Valet to your codespace.
To verify our environment is configured correctly, we are going to run the `update` CLI command. The `update` CLI command will download the latest version of GitHub Actions Importer to your codespace.
1. In the codespace terminal run the following command:
@@ -54,12 +54,12 @@ To verify our environment is configured correctly, we are going to run the `upda
gh actions-importer update
```
2. You should see a confirmation that you were logged into the GitHub Container Registry and Valet was updated to the latest version.
2. You should see a confirmation that you were logged into the GitHub Container Registry and the image was updated to the latest version.
```console
$ gh actions-importer update
Login Succeeded
latest: Pulling from valet-customers/valet-cli
latest: Pulling from actions-importer/cli
Digest: sha256:a7d00dee8a37e25da59daeed44b1543f476b00fa2c41c47f48deeaf34a215bbb
Status: Image is up to date for ghcr.io/actions-importer/cli:latest
ghcr.io/actions-importer/cli:latest
+48 -47
View File
@@ -3,21 +3,22 @@
In this lab, you will use the `audit` command to get a high-level view of all projects in a CircleCI organization.
The `audit` command will perform the following steps:
1. Fetch all of the projects defined in an CircleCI organization.
2. Convert each pipeline to their equivalent GitHub Actions workflow.
3. Generate a report that summarizes how complete and complex of a migration is possible with Valet.
3. Generate a report that summarizes how complete and complex of a migration is possible with GitHub Actions Importer.
## Prerequisites
1. Followed the steps [here](./readme.md#configure-your-codespace) to set up your GitHub Codespaces environment.
2. Completed the [configure lab](./1-configure.md#configure-credentials-for-valet).
2. Completed the [configure lab](./1-configure.md).
## Perform an audit
You will be performing an `audit` for the __valet-labs__ CircleCI organization that was created for the purposes of these labs. Your environment was configured to use this organization during the [configure lab](./1-configure.md). The remaining information needed to perform an `audit` is:
You will be performing an `audit` for the __actions-importer-labs__ CircleCI organization that was created for the purposes of these labs. Your environment was configured to use this organization during the [configure lab](./1-configure.md). The remaining information needed to perform an `audit` is:
1. Where do we want to store the result?
- __tmp/audit__. This can be any path within the working directory that Valet commands are executed from.
- __tmp/audit__. This can be any path within the working directory that GitHub Actions Importer commands are executed from.
### Steps
@@ -40,7 +41,7 @@ You will be performing an `audit` for the __valet-labs__ CircleCI organization t
#### Pipelines
The pipeline summary section contains high level statistics regarding the conversion rate done by Valet:
The pipeline summary section contains high level statistics regarding the conversion rate done by GitHub Actions Importer:
```md
## Pipelines
@@ -66,14 +67,14 @@ Here are some key terms that can appear in the “Pipelines” section:
- __Partially successful__ pipelines had all of the pipeline constructs converted, however, there were some individual items that were not converted automatically to their GitHub Actions equivalent.
- __Failed pipelines__ encountered a fatal error when being converted. This can occur for one of three reasons:
- The pipeline was misconfigured and not valid in CircleCI.
- Valet encountered an internal error when converting it.
- GitHub Actions Importer encountered an internal error when converting it.
- There was an unsuccessful network response, often due to invalid credentials, that caused the pipeline to be inaccessible.
The "Job types" section will summarize which types of pipelines are being used and which are supported or unsupported by Valet.
The "Job types" section will summarize which types of pipelines are being used and which are supported or unsupported by GitHub Actions Importer.
#### Build steps
The build steps summary section presents an overview of the individual build steps that are used across all pipelines and how many were automatically converted by Valet.
The build steps summary section presents an overview of the individual build steps that are used across all pipelines and how many were automatically converted by GitHub Actions Importer.
```md
### Build steps
@@ -122,7 +123,7 @@ There is an equivalent breakdown of build triggers, environment variables, and o
#### Manual Tasks
The manual tasks summary section presents an overview of the manual tasks that you will need to perform that Valet is not able to complete automatically.
The manual tasks summary section presents an overview of the manual tasks that you will need to perform that GitHub Actions Importer is not able to complete automatically.
```md
### Manual tasks
@@ -146,44 +147,44 @@ The final section of the audit report provides a manifest of all of the files th
```md
### Successful
#### valet-labs/circleci-hello-world
#### actions-importer-labs/circleci-hello-world
- [valet-labs/circleci-hello-world/.github/workflows/say-hello-workflow.yml](valet-labs/circleci-hello-world/.github/workflows/say-hello-workflow.yml)
- [valet-labs/circleci-hello-world/config.json](valet-labs/circleci-hello-world/config.json)
- [valet-labs/circleci-hello-world/source.yml](valet-labs/circleci-hello-world/source.yml)
- [actions-importer-labs/circleci-hello-world/.github/workflows/say-hello-workflow.yml](actions-importer-labs/circleci-hello-world/.github/workflows/say-hello-workflow.yml)
- [actions-importer-labs/circleci-hello-world/config.json](actions-importer-labs/circleci-hello-world/config.json)
- [actions-importer-labs/circleci-hello-world/source.yml](actions-importer-labs/circleci-hello-world/source.yml)
#### valet-labs/circleci-command-example
#### actions-importer-labs/circleci-command-example
- [valet-labs/circleci-command-example/.github/workflows/my-workflow.yml](valet-labs/circleci-command-example/.github/workflows/my-workflow.yml)
- [valet-labs/circleci-command-example/.github/actions/greeting/action.yml](valet-labs/circleci-command-example/.github/actions/greeting/action.yml)
- [valet-labs/circleci-command-example/config.json](valet-labs/circleci-command-example/config.json)
- [valet-labs/circleci-command-example/source.yml](valet-labs/circleci-command-example/source.yml)
- [actions-importer-labs/circleci-command-example/.github/workflows/my-workflow.yml](actions-importer-labs/circleci-command-example/.github/workflows/my-workflow.yml)
- [actions-importer-labs/circleci-command-example/.github/actions/greeting/action.yml](actions-importer-labs/circleci-command-example/.github/actions/greeting/action.yml)
- [actions-importer-labs/circleci-command-example/config.json](actions-importer-labs/circleci-command-example/config.json)
- [actions-importer-labs/circleci-command-example/source.yml](actions-importer-labs/circleci-command-example/source.yml)
#### valet-labs/circleci-python-example
#### actions-importer-labs/circleci-python-example
- [valet-labs/circleci-python-example/.github/workflows/sample.yml](valet-labs/circleci-python-example/.github/workflows/sample.yml)
- [valet-labs/circleci-python-example/config.json](valet-labs/circleci-python-example/config.json)
- [valet-labs/circleci-python-example/source.yml](valet-labs/circleci-python-example/source.yml)
- [actions-importer-labs/circleci-python-example/.github/workflows/sample.yml](actions-importer-labs/circleci-python-example/.github/workflows/sample.yml)
- [actions-importer-labs/circleci-python-example/config.json](actions-importer-labs/circleci-python-example/config.json)
- [actions-importer-labs/circleci-python-example/source.yml](actions-importer-labs/circleci-python-example/source.yml)
#### valet-labs/circleci-demo-java-spring
#### actions-importer-labs/circleci-demo-java-spring
- [valet-labs/circleci-demo-java-spring/.github/workflows/workflow.yml](valet-labs/circleci-demo-java-spring/.github/workflows/workflow.yml)
- [valet-labs/circleci-demo-java-spring/config.json](valet-labs/circleci-demo-java-spring/config.json)
- [valet-labs/circleci-demo-java-spring/source.yml](valet-labs/circleci-demo-java-spring/source.yml)
- [actions-importer-labs/circleci-demo-java-spring/.github/workflows/workflow.yml](actions-importer-labs/circleci-demo-java-spring/.github/workflows/workflow.yml)
- [actions-importer-labs/circleci-demo-java-spring/config.json](actions-importer-labs/circleci-demo-java-spring/config.json)
- [actions-importer-labs/circleci-demo-java-spring/source.yml](actions-importer-labs/circleci-demo-java-spring/source.yml)
#### valet-labs/circleci-demo-ruby-rails
#### actions-importer-labs/circleci-demo-ruby-rails
- [valet-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml](valet-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml)
- [valet-labs/circleci-demo-ruby-rails/config.json](valet-labs/circleci-demo-ruby-rails/config.json)
- [valet-labs/circleci-demo-ruby-rails/source.yml](valet-labs/circleci-demo-ruby-rails/source.yml)
- [actions-importer-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml](actions-importer-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml)
- [actions-importer-labs/circleci-demo-ruby-rails/config.json](actions-importer-labs/circleci-demo-ruby-rails/config.json)
- [actions-importer-labs/circleci-demo-ruby-rails/source.yml](actions-importer-labs/circleci-demo-ruby-rails/source.yml)
### Partially successful
#### valet-labs/circleci-node-example
#### actions-importer-labs/circleci-node-example
- [valet-labs/circleci-node-example/.github/workflows/sample.yml](valet-labs/circleci-node-example/.github/workflows/sample.yml)
- [valet-labs/circleci-node-example/config.json](valet-labs/circleci-node-example/config.json)
- [valet-labs/circleci-node-example/source.yml](valet-labs/circleci-node-example/source.yml)
- [actions-importer-labs/circleci-node-example/.github/workflows/sample.yml](actions-importer-labs/circleci-node-example/.github/workflows/sample.yml)
- [actions-importer-labs/circleci-node-example/config.json](actions-importer-labs/circleci-node-example/config.json)
- [actions-importer-labs/circleci-node-example/source.yml](actions-importer-labs/circleci-node-example/source.yml)
```
Each pipeline will have a variety of files written that include:
@@ -200,19 +201,19 @@ Each pipeline will have a variety of files written that include:
```csv
Pipeline,Action,File path
valet-labs/circleci-hello-world,actions/checkout@v2,tmp/audit/valet-labs/circleci-hello-world/.github/workflows/say-hello-workflow.yml
valet-labs/circleci-command-example,./.github/actions/greeting,tmp/audit/valet-labs/circleci-command-example/.github/workflows/my-workflow.yml
valet-labs/circleci-node-example,actions/checkout@v2,tmp/audit/valet-labs/circleci-node-example/.github/workflows/sample.yml
valet-labs/circleci-node-example,actions/cache@v2,tmp/audit/valet-labs/circleci-node-example/.github/workflows/sample.yml
valet-labs/circleci-python-example,actions/checkout@v2,tmp/audit/valet-labs/circleci-python-example/.github/workflows/sample.yml
valet-labs/circleci-python-example,actions/cache@v2,tmp/audit/valet-labs/circleci-python-example/.github/workflows/sample.yml
valet-labs/circleci-demo-java-spring,actions/checkout@v2,tmp/audit/valet-labs/circleci-demo-java-spring/.github/workflows/workflow.yml
valet-labs/circleci-demo-java-spring,actions/cache@v2,tmp/audit/valet-labs/circleci-demo-java-spring/.github/workflows/workflow.yml
valet-labs/circleci-demo-java-spring,actions/upload-artifact@v2,tmp/audit/valet-labs/circleci-demo-java-spring/.github/workflows/workflow.yml
valet-labs/circleci-demo-java-spring,actions/download-artifact@v2,tmp/audit/valet-labs/circleci-demo-java-spring/.github/workflows/workflow.yml
valet-labs/circleci-demo-ruby-rails,ruby/setup-ruby@v1,tmp/audit/valet-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml
valet-labs/circleci-demo-ruby-rails,actions/checkout@v2,tmp/audit/valet-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml
valet-labs/circleci-demo-ruby-rails,actions/cache@v2,tmp/audit/valet-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml
actions-importer-labs/circleci-hello-world,actions/checkout@v2,tmp/audit/actions-importer-labs/circleci-hello-world/.github/workflows/say-hello-workflow.yml
actions-importer-labs/circleci-command-example,./.github/actions/greeting,tmp/audit/actions-importer-labs/circleci-command-example/.github/workflows/my-workflow.yml
actions-importer-labs/circleci-node-example,actions/checkout@v2,tmp/audit/actions-importer-labs/circleci-node-example/.github/workflows/sample.yml
actions-importer-labs/circleci-node-example,actions/cache@v2,tmp/audit/actions-importer-labs/circleci-node-example/.github/workflows/sample.yml
actions-importer-labs/circleci-python-example,actions/checkout@v2,tmp/audit/actions-importer-labs/circleci-python-example/.github/workflows/sample.yml
actions-importer-labs/circleci-python-example,actions/cache@v2,tmp/audit/actions-importer-labs/circleci-python-example/.github/workflows/sample.yml
actions-importer-labs/circleci-demo-java-spring,actions/checkout@v2,tmp/audit/actions-importer-labs/circleci-demo-java-spring/.github/workflows/workflow.yml
actions-importer-labs/circleci-demo-java-spring,actions/cache@v2,tmp/audit/actions-importer-labs/circleci-demo-java-spring/.github/workflows/workflow.yml
actions-importer-labs/circleci-demo-java-spring,actions/upload-artifact@v2,tmp/audit/actions-importer-labs/circleci-demo-java-spring/.github/workflows/workflow.yml
actions-importer-labs/circleci-demo-java-spring,actions/download-artifact@v2,tmp/audit/actions-importer-labs/circleci-demo-java-spring/.github/workflows/workflow.yml
actions-importer-labs/circleci-demo-ruby-rails,ruby/setup-ruby@v1,tmp/audit/actions-importer-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml
actions-importer-labs/circleci-demo-ruby-rails,actions/checkout@v2,tmp/audit/actions-importer-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml
actions-importer-labs/circleci-demo-ruby-rails,actions/cache@v2,tmp/audit/actions-importer-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml
Pipeline,Secret,File path
+2 -2
View File
@@ -29,8 +29,8 @@ Answer the following questions before running the `forecast` command:
```console
$ gh actions-importer forecast circle-ci --output-dir tmp/forecast_reports --start-date 2022-09-02
[2022-08-20 22:08:20] Logs: 'tmp/forecast/log/valet-20220916-021004.log'
[2022-08-20 22:08:20] Forecasting 'http://app.circleci.com/pipelines/github/valet-labs'
[2022-08-20 22:08:20] Logs: 'tmp/forecast/log/actions-importer-20220916-021004.log'
[2022-08-20 22:08:20] Forecasting 'http://app.circleci.com/pipelines/github/actions-importer-labs'
[2022-08-20 22:08:20] Output file(s):
[2022-08-20 22:08:20] tmp/forecast/jobs/09-16-2022-02-10_jobs_0.json
[2022-08-20 22:08:20] tmp/forecast/forecast_report.md
+8 -8
View File
@@ -13,10 +13,10 @@ In this lab you will use the `dry-run` command to convert a CircleCI pipeline to
You will be performing a dry run migration against a CircleCI project. Answer the following questions before running this command:
1. What project do you want to convert?
- __circleci-demo-ruby-rails__. This is one of the sample projects avaiable in the CircleCI valet-labs organization.
- __circleci-demo-ruby-rails__. This is one of the sample projects avaiable in the CircleCI actions-importer-labs organization.
2. Where do you want to store the result?
- __tmp/dry-run__. This can be any path within the working directory that Valet commands are executed from.
- __tmp/dry-run__. This can be any path within the working directory that GitHub Actions Importer commands are executed from.
### Steps
@@ -30,14 +30,14 @@ You will be performing a dry run migration against a CircleCI project. Answer th
3. The command will list all the files written to disk when the command succeeds.
```console
$ gh actions-importer dry-run circle-ci --output-dir tmp/dry-run --circle-ci-project circleci-demo-ruby-rails --circle-ci-organization valet-labs
[2022-09-19 19:46:03] Logs: 'tmp/dry-run/log/valet-20220919-194603.log'
$ gh actions-importer dry-run circle-ci --output-dir tmp/dry-run --circle-ci-project circleci-demo-ruby-rails --circle-ci-organization actions-importer-labs
[2022-09-19 19:46:03] Logs: 'tmp/dry-run/log/actions-importer-20220919-194603.log'
[2022-09-19 19:46:05] Output file(s):
[2022-09-19 19:46:05] tmp/dry-run/valet-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml
[2022-09-19 19:46:05] tmp/dry-run/actions-importer-labs/circleci-demo-ruby-rails/.github/workflows/build_and_test.yml
```
4. View the converted workflow:
- Find `tmp/dry-run/valet-labs/circleci-demo-ruby-rails/.github/workflows` in the file explorer pane in your codespace.
- Find `tmp/dry-run/actions-importer-labs/circleci-demo-ruby-rails/.github/workflows` in the file explorer pane in your codespace.
- Click `build_and_test.yml` to open.
## Inspect the output files
@@ -114,7 +114,7 @@ workflows:
<summary><em>Converted workflow 👇</em></summary>
```yaml
name: valet-labs/circleci-demo-ruby-rails/build_and_test
name: actions-importer-labs/circleci-demo-ruby-rails/build_and_test
on:
push:
branches:
@@ -194,4 +194,4 @@ Despite these two pipelines using different syntax they will function equivalent
## Next lab
[Use custom transformers to customize Valet's behavior](./5-custom-transformers.md)
[Use custom transformers to customize GitHub Actions Importer's behavior](./5-custom-transformers.md)
+5 -5
View File
@@ -1,6 +1,6 @@
# Using custom transformers to customize Valet's behavior
# Using custom transformers to customize GitHub Actions Importer's behavior
In this lab you will build upon the `dry-run` command to override Valet's default behavior and customize the converted workflow using "custom transformers". Custom transformers can be used to:
In this lab you will build upon the `dry-run` command to override GitHub Actions Importer's default behavior and customize the converted workflow using "custom transformers". Custom transformers can be used to:
1. Convert items that are not automatically converted.
2. Convert items that were automatically converted using different actions.
@@ -27,7 +27,7 @@ The converted workflow that is generated by the above command can be seen below:
<summary><em>Converted workflow 👇</em></summary>
```yaml
name: valet-labs/circleci-node-example/sample
name: actions-importer-labs/circleci-node-example/sample
on:
push:
branches:
@@ -98,7 +98,7 @@ transform "codecov_codecov_upload" do |_item|
end
```
This method can use any valid ruby syntax and should return a `Hash` that represents the YAML that should be generated for a given step. Valet will use this method to convert a step with the provided identifier and will use the `item` parameter for the original values configured in CircleCI.
This method can use any valid ruby syntax and should return a `Hash` that represents the YAML that should be generated for a given step. GitHub Actions Importer will use this method to convert a step with the provided identifier and will use the `item` parameter for the original values configured in CircleCI.
Now you can perform another `dry-run` command and use the `--custom-transformers` CLI option to provide this custom transformer. Run the following command within your codespace terminal:
@@ -187,7 +187,7 @@ end
</details>
That's it! Congratulations, you have overridden Valet's default behavior by customizing the conversion of:
That's it! Congratulations, you have overridden GitHub Actions Importer's default behavior by customizing the conversion of:
- Unknown steps
- Environment variables
+2 -2
View File
@@ -31,7 +31,7 @@ Answer the following questions before running a `migrate` command:
```console
$ gh actions-importer migrate circle-ci --target-url https://github.com/:owner/:repo --output-dir tmp/migrate --circle-ci-project circleci-hello-world
[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/valet-20220916-014033.log'
[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'
[2022-08-20 22:08:20] Pull request: 'https://github.com/:owner/:repo/pull/1'
```
@@ -51,4 +51,4 @@ At this point, the migration has completed and you have successfully migrated a
### Next Lab
This concludes all labs for migrating CircleCI pipelines to Actions with Valet!
This concludes all labs for migrating CircleCI pipelines to Actions with GitHub Actions Importer!
+16 -16
View File
@@ -1,12 +1,12 @@
# CircleCI to Actions migrations powered by Valet
# CircleCI to Actions migrations powered by GitHub Actions Importer
The instructions below will guide you through configuring a GitHub Codespace environment that will be used in subsequent labs that demonstrate how to use Valet to migrate CircleCI pipelines to GitHub Actions.
The instructions below will guide you through configuring a GitHub Codespace environment that will be used in subsequent labs that demonstrate how to use GitHub Actions Importer to migrate CircleCI pipelines to GitHub Actions.
These steps **must** be completed prior to starting other labs.
## Create your own repository for these labs
1. Ensure that you have created a repository using the [valet-customers/labs](https://github.com/valet-customers/labs) as a template.
1. Ensure that you have created a repository using the [actions/importer-labs](https://github.com/actions/importer-labs) as a template.
## Configure your Codespace
@@ -17,7 +17,7 @@ These steps **must** be completed prior to starting other labs.
- Click `Create codespaces on main` to create the codespace.
- After the Codespace has initialized there will be a terminal present.
2. Verify the Valet CLI is installed and working. More information on the Valet extension for the official GitHub CLI can be found [here](https://github.com/github/gh-valet).
2. Verify the GitHub Actions Importer CLI is installed and working. More information on the GitHub Actions Importer extension for the official GitHub CLI can be found [here](https://github.com/github/gh-actions-importer).
- Run the following command in the codespace's terminal:
@@ -30,45 +30,45 @@ These steps **must** be completed prior to starting other labs.
```console
$ gh actions-importer version
gh version 2.14.3 (2022-07-26)
gh actions-importer github/gh-valet v0.1.12
valet-cli unknown
gh actions-importer github/gh-actions-importer v0.1.12
actions-importer/cli unknown
```
- If `gh actions-importer version` did not produce similar output, refer to the troubleshooting [guide](#troubleshoot-the-valet-cli).
- If `gh actions-importer version` did not produce similar output, refer to the troubleshooting [guide](#troubleshoot-the-actions-importer/cli).
## Labs for CircleCI
Perform the following labs to test-drive Valet
Perform the following labs to learn how to migrate CircleCI pipelines to GitHub Actions using GitHub Actions Importer:
1. [Configure credentials for Valet](1-configure.md)
1. [Configure credentials for GitHub Actions Importer](1-configure.md)
2. [Perform an audit of CircleCI](2-audit.md)
3. [Forecast potential build runner usage](3-forecast.md)
4. [Perform a dry-run of a CircleCI pipeline](4-dry-run.md)
5. [Use custom transformers to customize Valet's behavior](5-custom-transformers.md)
5. [Use custom transformers to customize GitHub Actions Importer's behavior](5-custom-transformers.md)
6. [Perform a production migration of a CircleCI pipeline](6-migrate.md)
## Troubleshoot the Valet CLI
## Troubleshoot the GitHub Actions Importer CLI
The CLI extension for Valet can be manually installed by following these steps:
The CLI extension for GitHub Actions Importer can be manually installed by following these steps:
- Verify you are in the codespace terminal
- Run this command from within the codespace's terminal:
```bash
gh extension install github/gh-valet
gh extension install github/gh-actions-importer
```
- Verify the result of the install contains:
```console
$ gh extension install github/gh-valet
✓ Installed extension github/gh-valet
$ gh extension install github/gh-actions-importer
✓ Installed extension github/gh-actions-importer
```
- If you get an error similar to the image below, then click the link in the terminal output to authorize the token.
- Restart the codespace after clicking the link.
![img](https://user-images.githubusercontent.com/26442605/169588015-9414404f-82b6-4d0f-89d4-5f0e6941b029.png)
- Verify Valet CLI extension is installed and working by running the following command from the codespace's terminal:
- Verify GitHub Actions Importer CLI extension is installed and working by running the following command from the codespace's terminal:
```bash
gh actions-importer version