In this lab you will use the dry-run
command to convert a Travis CI pipeline to its equivalent GitHub Actions workflow.
- Followed the steps here to set up your codespace environment.
- Completed the configure lab.
- Completed the audit lab.
You will be performing a dry run against a Travis CI project. Answer the following questions before running this command:
-
What pipeline do you want to convert?
- travisci-ruby-example. This is one of the sample projects available in the
actions-importer-labs
organization.
- travisci-ruby-example. This is one of the sample projects available in the
-
Where do you want to store the result?
- tmp/dry-run. This can be any path within the working directory that GitHub Actions Importer commands are executed from.
-
Navigate to your codespace terminal.
-
Run the following command from the root directory:
gh actions-importer dry-run travis-ci --travis-ci-repository "travisci-ruby-example" --output-dir tmp/dry-run
-
The command will list all the files written to disk when the command succeeds.
$ gh actions-importer dry-run travis-ci --travis-ci-repository "travisci-ruby-example" --output-dir tmp/dry-run [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/actions-importer-labs/travisci-ruby-example/.github/workflows/travisci-ruby-example.yml
-
View the converted workflow:
- Find
tmp/dry-run/actions-importer-labs/travisci-ruby-example/.github/workflows
in the file explorer pane in your codespace. - Click
travisci-ruby-example.yml
to open.
- Find
The files generated from the dry-run
command represent the equivalent Actions workflow for the Travis CI project. The Travis CI configuration and converted workflow can be seen below:
Travis CI configuration 👇
language: ruby
sudo: false
dist: trusty
rvm:
- 1.9.3
- 2.0.0
- 2.1.0
install:
- gem install bundler
script:
- echo "hello!"
jobs:
include:
- script: echo "child"
Converted workflow 👇
name: actions-importer-labs/travisci-ruby-example
on:
push:
branches:
- "**/*"
pull_request:
concurrency:
# # This item has no matching transformer
# maximum_number_of_builds: 0
jobs:
test:
runs-on: # this agent type is not supported: [[{"dist"=>"trusty"}]]
ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
ruby-version: "${{ matrix.rvm }}"
# # 'sudo' was not transformed because there is no suitable equivalent in GitHub Actions
- run: gem install bundler
- run: echo "hello!"
strategy:
matrix:
rvm:
- 1.9.3
- 2.0.0
- 2.1.0
test_2:
runs-on: # this agent type is not supported: [[{"dist"=>"trusty"}]]
ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
ruby-version: 1.9.3
# # 'sudo' was not transformed because there is no suitable equivalent in GitHub Actions
- run: gem install bundler
- run: echo "child"
Despite these two pipelines using different syntax they will function equivalently.
Use custom transformers to customize GitHub Actions Importer's behavior