From 885c5665746dc94fdfa8a096cd94cb5a2c89673f Mon Sep 17 00:00:00 2001 From: j-dunham Date: Mon, 12 Sep 2022 10:37:57 -0400 Subject: [PATCH 1/4] Create 3-dry-run.md --- circle_ci/3-dry-run.md | 63 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 circle_ci/3-dry-run.md diff --git a/circle_ci/3-dry-run.md b/circle_ci/3-dry-run.md new file mode 100644 index 0000000..8d3c410 --- /dev/null +++ b/circle_ci/3-dry-run.md @@ -0,0 +1,63 @@ +# Perform a dry-run of a CircleCI pipeline + +In this lab you will use the `dry-run` command to convert a CircleCI pipeline to its equivalent GitHub Actions workflow. + +## Prerequisites + +1. Followed the steps [here](./readme.md#configure-your-codespace) to set up your Codespace environment and start a GitLab server. +2. Completed the [configure lab](./1-configure-lab.md#configuring-credentials). +3. Completed the [audit lab](./2-audit.md). + +## Perform a dry run + +We will be performing a dry-run against a CircleCI project. We will need to answer the following questions before running this command: + +1. What is the name of the project we want to convert? + - __circleci-demo-ruby-rails__. This is one of the sample projects avaiable in the CircleCI labs-data organization. + +2. Where do we want to store the result? + - __./tmp/dry-run-lab__. This can be any path within the working directory that Valet commands are executed from. + +### Steps + +1. Navigate to the codespace terminal +2. Run the following command from the root directory: + + ```bash + gh valet dry-run circle-ci --output-dir ./tmp/dry-run-lab --circle-ci-project circleci-demo-ruby-rails + ``` + +3. The command will list all the files written to disk when the command succeeds. + + ADD_IMAGE_HERE + +4. View the converted workflow: + - Find `./tmp/dry-run-lab/labs-data/circleci-demo-ruby-rails` in the file explorer pane in codespaces. + - Click `build_and_test.yml` to open. + +## Inspect the output files + +The files generated from the `dry-run` command represent the equivalent Actions workflow for the CircleCI project. The CircleCI configuration and converted workflow can be seen below: + +
+ CircleCI configuration 👇 + +```yaml +# ADD YAML +``` + +
+ +
+ Converted workflow 👇 + +```yaml +# ADD YAML +``` +
+ +Despite these 2 pipelines using different syntax they will function equivalently. + +## Next lab + +[Use custom transformers to customize Valet's behavior](./4-custom-transformers.md) From a3ac50c62535bf16612159aa19e745fb0204f252 Mon Sep 17 00:00:00 2001 From: j-dunham Date: Mon, 12 Sep 2022 10:38:16 -0400 Subject: [PATCH 2/4] Update 2-audit.md --- circle_ci/2-audit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle_ci/2-audit.md b/circle_ci/2-audit.md index 9fb1ee7..a102e6c 100644 --- a/circle_ci/2-audit.md +++ b/circle_ci/2-audit.md @@ -190,4 +190,4 @@ Each pipeline will have a variety of files written that include: ### Next lab -[Perform a dry-run of a GitLab pipeline](3-dry-run.md) +[Perform a dry-run of a CircleCI pipeline](3-dry-run.md) From 070a6d691020ab8b608f1271285aa2edeb5b8dd0 Mon Sep 17 00:00:00 2001 From: j-dunham Date: Mon, 12 Sep 2022 10:48:13 -0400 Subject: [PATCH 3/4] Update 3-dry-run.md --- circle_ci/3-dry-run.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle_ci/3-dry-run.md b/circle_ci/3-dry-run.md index 8d3c410..efb6423 100644 --- a/circle_ci/3-dry-run.md +++ b/circle_ci/3-dry-run.md @@ -5,7 +5,7 @@ In this lab you will use the `dry-run` command to convert a CircleCI pipeline to ## Prerequisites 1. Followed the steps [here](./readme.md#configure-your-codespace) to set up your Codespace environment and start a GitLab server. -2. Completed the [configure lab](./1-configure-lab.md#configuring-credentials). +2. Completed the [configure lab](./1-configure.md#configuring-credentials). 3. Completed the [audit lab](./2-audit.md). ## Perform a dry run From 3a6c88ba20bc27e36016e2ca7bfda655aa387f83 Mon Sep 17 00:00:00 2001 From: j-dunham Date: Tue, 13 Sep 2022 09:22:22 -0400 Subject: [PATCH 4/4] Update 3-dry-run.md --- circle_ci/3-dry-run.md | 150 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 140 insertions(+), 10 deletions(-) diff --git a/circle_ci/3-dry-run.md b/circle_ci/3-dry-run.md index efb6423..4aa0dc3 100644 --- a/circle_ci/3-dry-run.md +++ b/circle_ci/3-dry-run.md @@ -4,23 +4,23 @@ In this lab you will use the `dry-run` command to convert a CircleCI pipeline to ## Prerequisites -1. Followed the steps [here](./readme.md#configure-your-codespace) to set up your Codespace environment and start a GitLab server. +1. Followed the steps [here](./readme.md#configure-your-codespace) to set up your Codespace environment. 2. Completed the [configure lab](./1-configure.md#configuring-credentials). 3. Completed the [audit lab](./2-audit.md). ## Perform a dry run -We will be performing a dry-run against a CircleCI project. We will need to answer the following questions before running this command: +You will be performing a dry-run against a CircleCI project. Answer the following questions before running this command: -1. What is the name of the project we want to convert? +1. What project do you want to convert? - __circleci-demo-ruby-rails__. This is one of the sample projects avaiable in the CircleCI labs-data organization. -2. Where do we want to store the result? +2. Where do you want to store the result? - __./tmp/dry-run-lab__. This can be any path within the working directory that Valet commands are executed from. ### Steps -1. Navigate to the codespace terminal +1. Navigate to your codespace terminal 2. Run the following command from the root directory: ```bash @@ -29,10 +29,12 @@ We will be performing a dry-run against a CircleCI project. We will need to answ 3. The command will list all the files written to disk when the command succeeds. - ADD_IMAGE_HERE + ![command-result](https://user-images.githubusercontent.com/18723510/189911131-bf6bfd6f-2b5e-4e49-8d14-95ef9c312117.png) + + 4. View the converted workflow: - - Find `./tmp/dry-run-lab/labs-data/circleci-demo-ruby-rails` in the file explorer pane in codespaces. + - Find `./tmp/dry-run-lab/labs-data/circleci-demo-ruby-rails` in the file explorer pane in your codespace. - Click `build_and_test.yml` to open. ## Inspect the output files @@ -43,7 +45,64 @@ The files generated from the `dry-run` command represent the equivalent Actions CircleCI configuration 👇 ```yaml -# ADD YAML +version: 2.1 + +orbs: + ruby: circleci/ruby@1.1.0 + node: circleci/node@2 + +jobs: + build: + docker: + - image: cimg/ruby:2.7.5-node + steps: + - checkout + - ruby/install-deps + # Store bundle cache + - node/install-packages: + pkg-manager: yarn + cache-key: "yarn.lock" + test: + parallelism: 3 + docker: + - image: cimg/ruby:2.7.5-node + - image: circleci/postgres:9.5-alpine + environment: + POSTGRES_USER: circleci-demo-ruby + POSTGRES_DB: rails_blog_test + POSTGRES_PASSWORD: "" + environment: + BUNDLE_JOBS: "3" + BUNDLE_RETRY: "3" + PGHOST: 127.0.0.1 + PGUSER: circleci-demo-ruby + PGPASSWORD: "" + RAILS_ENV: test + steps: + - checkout + - ruby/install-deps + - node/install-packages: + pkg-manager: yarn + cache-key: "yarn.lock" + - run: + name: Wait for DB + command: dockerize -wait tcp://localhost:5432 -timeout 1m + - run: + name: Database setup + command: bundle exec rails db:schema:load --trace + # Run rspec in parallel + - ruby/rspec-test + - ruby/rubocop-check + +workflows: + version: 2 + build_and_test: + jobs: + - build + - test: + requires: + - build + ``` @@ -52,11 +111,82 @@ The files generated from the `dry-run` command represent the equivalent Actions Converted workflow 👇 ```yaml -# ADD YAML +name: labs-data/circleci-demo-ruby-rails/build_and_test +on: + push: + branches: + - master +jobs: + build: + runs-on: ubuntu-latest + container: + image: cimg/ruby:2.7.5-node + steps: + - name: Set up bundler cache + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.0.2 + bundler-cache: true + - uses: actions/checkout@v2 + - run: bundle check || bundle install + env: + BUNDLE_DEPLOYMENT: true + - id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn config get cacheFolder)" + - uses: actions/cache@v2 + with: + path: "${{ steps.yarn-cache-dir-path.outputs.dir }}" + key: "${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}" + restore-keys: "${{ runner.os }}-yarn-" + - run: yarn install --frozen-lockfile + test: + runs-on: ubuntu-latest + container: + image: cimg/ruby:2.7.5-node + services: + postgres: + image: postgres:9.5-alpine + env: + POSTGRES_USER: circleci-demo-ruby + POSTGRES_DB: rails_blog_test + POSTGRES_PASSWORD: '' + needs: + - build + env: + BUNDLE_JOBS: '3' + BUNDLE_RETRY: '3' + PGHOST: 127.0.0.1 + PGUSER: circleci-demo-ruby + PGPASSWORD: '' + RAILS_ENV: test + steps: + - name: Set up bundler cache + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.0.2 + bundler-cache: true + - uses: actions/checkout@v2 + - run: bundle check || bundle install + env: + BUNDLE_DEPLOYMENT: true + - id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn config get cacheFolder)" + - uses: actions/cache@v2 + with: + path: "${{ steps.yarn-cache-dir-path.outputs.dir }}" + key: "${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}" + restore-keys: "${{ runner.os }}-yarn-" + - run: yarn install --frozen-lockfile + - name: Wait for DB + run: dockerize -wait tcp://localhost:5432 -timeout 1m + - name: Database setup + run: bundle exec rails db:schema:load --trace + - run: bundle exec rspec spec --profile 10 --format RspecJunitFormatter --out /tmp/test-results/rspec/results.xml --format progress + - run: bundle exec rubocop --format progress ``` -Despite these 2 pipelines using different syntax they will function equivalently. +Despite these two pipelines using different syntax they will function equivalently. ## Next lab