<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="https://publishpress.com/"
	>

<channel>
	<title>Circle CI Archives - Tomoshare</title>
	<atom:link href="https://blog.tomosia.com.vn/tag/circle-ci/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.tomosia.com.vn/tag/circle-ci/</link>
	<description>Kênh chia sẻ kiến thức Tomosia Việt Nam</description>
	<lastBuildDate>Wed, 22 Nov 2023 02:01:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://blog.tomosia.com.vn/wp-content/uploads/2023/09/cropped-icon-32x32.png</url>
	<title>Circle CI Archives - Tomoshare</title>
	<link>https://blog.tomosia.com.vn/tag/circle-ci/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>[ROR] Hướng dẫn setup CircleCI &#038; Code Quality</title>
		<link>https://blog.tomosia.com.vn/ror-huong-dan-setup-circleci-code-quality/</link>
					<comments>https://blog.tomosia.com.vn/ror-huong-dan-setup-circleci-code-quality/#comments</comments>
		
		<dc:creator><![CDATA[Thuan Nguyen Van]]></dc:creator>
		<pubDate>Wed, 22 Nov 2023 01:28:06 +0000</pubDate>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Circle CI]]></category>
		<category><![CDATA[Ruby On Rails]]></category>
		<category><![CDATA[CI/CD]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=1808</guid>

					<description><![CDATA[<p>Step 1: Access https://circleci.com/ and authorize a Github, Gitlab or Bitbucket account. I will use a Github account.&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/ror-huong-dan-setup-circleci-code-quality/">[ROR] Hướng dẫn setup CircleCI &#038; Code Quality</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Step 1:</strong> Access <a href="https://circleci.com/">https://circleci.com/</a> and authorize a Github, Gitlab or Bitbucket account. I will use a Github account.</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/4-a7bO8VFdZjsOip_gK60WMFnOZJ0dD1PwI8ykJHCpPzJs-jjSvZekKGaQc7yth9dUIbdztuP4NDEC1F-xZMe7RDDys9RCbHf9EVDAIUCbvV2f9wvw-ZeUZH29uU_I72eS59O0zAyeOl88ueOYbhTw" alt=""/></figure>



<p class="wp-block-paragraph"><strong>Step 2</strong>: Click <strong>Go to Application </strong>in Home page -&gt; Projects</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="671" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.25-1024x671.png" alt="" class="wp-image-1828" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.25-1024x671.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.25-300x197.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.25-768x503.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.25-1536x1007.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.25-2048x1342.png 2048w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.25-380x249.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.25-800x524.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.25-1160x760.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.25.png 2206w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong>Step 3</strong>: Click to Setup Project button in the right Repo you want to setup</p>



<p class="wp-block-paragraph"><strong>Step 4</strong>: Select first Radio Button -&gt; Set Up Project</p>



<figure class="wp-block-image size-full"><img decoding="async" width="960" height="820" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.54.png" alt="" class="wp-image-1830" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.54.png 960w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.54-300x256.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.54-768x656.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.54-380x325.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.46.54-800x683.png 800w" sizes="(max-width: 960px) 100vw, 960px" /></figure>



<p class="wp-block-paragraph">After setup, click <strong>Dashboard </strong>and display as below</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="555" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.49.23-1024x555.png" alt="" class="wp-image-1831" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.49.23-1024x555.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.49.23-300x163.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.49.23-768x417.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.49.23-1536x833.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.49.23-2048x1111.png 2048w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.49.23-380x206.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.49.23-800x434.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.49.23-1160x629.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-11-15-at-08.49.23.png 2360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong>Step 5</strong>: Click <strong>Project Setting -&gt; SSH Key </strong>and check if the ssh key has been linked or not.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="602" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.37.42-2-1024x602.png" alt="" class="wp-image-1926" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.37.42-2-1024x602.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.37.42-2-300x176.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.37.42-2-768x452.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.37.42-2-1536x903.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.37.42-2-380x223.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.37.42-2-800x471.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.37.42-2-1160x682.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.37.42-2.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Step 6: <strong>If you using Git Submodule,</strong> please create a Additional SSH Keys</p>



<ol class="wp-block-list">
<li>Open terminal and run <strong><code>ssh-keygen -t ed25519 -C "Circle CI".</code></strong></li>



<li>Click Add SSH Key and enter</li>
</ol>



<ul class="wp-block-list">
<li>Hostname: <strong>github.com</strong></li>



<li>Private Key: cat <strong>minh_id_ed25519</strong>, copy and paste</li>
</ul>



<ol class="wp-block-list" start="3">
<li>Back to Github, select Repository <strong>Shared submodule</strong> -&gt; <strong>Settings</strong> -&gt; <strong>Deploy Keys</strong> -&gt; <strong>Add deploy key</strong></li>



<li>Enter Title and Key -&gt; <strong>Add Key</strong></li>
</ol>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="524" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.38.40-3-1024x524.png" alt="" class="wp-image-1927" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.38.40-3-1024x524.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.38.40-3-300x154.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.38.40-3-768x393.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.38.40-3-1536x786.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.38.40-3-380x195.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.38.40-3-800x410.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.38.40-3-1160x594.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.38.40-3.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/DMqD1X_4hArkrqNjTitIIFNRe2HXnxxUpBu37aJgAH9XYYzgoDI2aE7GX8VLqt8cmKZiCl1EV0Nq_p7A7eOGg0ISwUcWUK-LdAqZdLg0heEL8GCH1qzpQI0lAHQxrtRcWJgnnSufCW9wVii8a7HUZQ" alt=""/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="810" height="511" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.48.56.png" alt="" class="wp-image-1928" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.48.56.png 810w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.48.56-300x189.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.48.56-768x485.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.48.56-380x240.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-10.48.56-800x505.png 800w" sizes="auto, (max-width: 810px) 100vw, 810px" /></figure>



<p class="wp-block-paragraph"><strong>Step 7</strong>: Back to project setup config CircleCI and Danger</p>



<ol class="wp-block-list">
<li>Add to Gemfile</li>
</ol>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Ruby</span><span role="button" tabindex="0" data-code="gem 'brakeman', require: false
gem 'danger', '9.2.0'
# A Danger plugin to lint Ruby files through danger-brakeman_scanner.&lt;/em&gt;
gem 'danger-brakeman_scanner', '0.1.1'
# A Danger plugin to lint Ruby files through rails_best_practices.&lt;/em&gt;
gem 'danger-rails_best_practices', '0.1.3'
# A Danger plugin to lint Ruby files through Reek.&lt;/em&gt;
gem 'danger-reek', '0.3.0'
# A Danger plugin for running Ruby files through Rubocop.&lt;/em&gt;
gem 'danger-rubocop', '0.10.0'
# A Danger plugin to report code coverage generated by SimpleCov in JSON format.&lt;/em&gt;
gem 'danger-simplecov_json', '0.3.0'" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">gem </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">brakeman</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, require</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span></span>
<span class="line"><span style="color: #F6F6F4">gem </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">danger</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">9.2.0</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #7B7F8B"># A Danger plugin to lint Ruby files through danger-brakeman_scanner.&lt;/em&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">gem </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">danger-brakeman_scanner</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">0.1.1</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #7B7F8B"># A Danger plugin to lint Ruby files through rails_best_practices.&lt;/em&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">gem </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">danger-rails_best_practices</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">0.1.3</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #7B7F8B"># A Danger plugin to lint Ruby files through Reek.&lt;/em&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">gem </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">danger-reek</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">0.3.0</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #7B7F8B"># A Danger plugin for running Ruby files through Rubocop.&lt;/em&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">gem </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">danger-rubocop</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">0.10.0</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #7B7F8B"># A Danger plugin to report code coverage generated by SimpleCov in JSON format.&lt;/em&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">gem </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">danger-simplecov_json</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">0.3.0</span><span style="color: #DEE492">&#39;</span></span></code></pre></div>



<ol class="wp-block-list" start="2">
<li>Create file in <strong>.circleci/config.yml</strong> and paste code</li>
</ol>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:25.296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Ruby</span><span role="button" tabindex="0" data-code="# Best practises:
#   [https://www.netguru.com/blog/top-10-best-practises-to-benefit-more-form-circleci]
#   [https://circleci.com/blog/six-optimization-tips-for-your-config/]
references:
  working_directory: &amp;working_directory ~/quinblog
  images:
    base_image: &amp;base_image
      image: cimg/ruby:3.2.1
      environment:
        TZ: /usr/share/zoneinfo/Asia/Tokyo
        BUNDLE_JOBS: 4
        BUNDLE_RETRY: 3
        BUNDLE_PATH: vendor/bundle
        GEM_PATH: vendor/bundle
        RAILS_ENV: test
    db_image: &amp;db_image
      image: cimg/postgres:14.4
      environment:
        POSTGRES_USER: postgres
        POSTGRES_DB: quinblog_test
        POSTGRES_PASSWORD: postgres
    redis_image: &amp;redis_image
      image: cimg/redis:5.0
    mongodb_image: &amp;mongodb_image
      image: circleci/mongo:3.6
  commands:
    move_database_yml: &amp;move_database_yml
      name: Move database_yml
      command: mv config/database.ci.yml config/database.yml
    move_mongoid_yml: &amp;move_mongoid_yml
      name: Move mongoid_yml
      command: mv config/mongoid.ci.yml config/mongoid.yml
    sync_git_submodule: &amp;sync_git_submodule
      name: Sync git submodule
      command: |
        git submodule sync --recursive --quiet
        git submodule update --init --checkout --recursive --quiet

# Use the latest 2.1 version of CircleCI pipeline process engine.
# See: https://circleci.com/docs/2.0/configuration-reference
version: 2.1

# Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects.
# See: https://circleci.com/docs/2.0/orb-intro/
orbs:
  ruby: circleci/ruby@1.8.0

# Define a job to be invoked later in a workflow.
# See: https://circleci.com/docs/2.0/configuration-reference/#jobs
jobs:
  build:
    working_directory: *working_directory
    resource_class: small
    parallelism: 1
    docker:
      - *base_image
    steps:
      - add_ssh_keys:
          fingerprints:
            - '7c:72:77:4f:79:12:cb:af:c9:84:7b:d1:ab:24:69:41'
      - checkout

      - run: *move_database_yml
      - run: *move_mongoid_yml
      - run: *sync_git_submodule
      - run:
          name: Disabled auto completion
          command: echo 'IRB.conf[:USE_AUTOCOMPLETE] = false' &gt;&gt; ~/.irbrc

      # Restoring and saving cache
      - ruby/install-deps

      - persist_to_workspace:
          root: *working_directory
          paths:
            - ./*

  test:
    working_directory: *working_directory
    resource_class: small
    parallelism: 2
    docker:
      - *base_image
      - *db_image
      - *mongodb_image
      - *redis_image
    steps:
      - attach_workspace:
          at: *working_directory

      - run:
          name: Wait for Postgres DB
          command: dockerize -wait tcp://localhost:5432 -timeout 1m

      - run:
          name: Wait for Mongo DB
          command: dockerize -wait tcp://localhost:27017 -timeout 1m

      - run:
          name: Wait for Redis DB
          command: dockerize -wait tcp://localhost:6379 -timeout 1m

      - run:
          name: Migration DB
          command: |
            bundle exec rails db:schema:load:primary --trace
            bundle exec rails db:create:universal
            bundle exec rails db:schema:load:universal --trace

      - run:
          name: Run rspec
          command: |
            TESTFILES=$(circleci tests glob &quot;spec/**/*_spec.rb&quot; | circleci tests split --split-by=timings --timings-type=classname)
            echo ${TESTFILES}
            bundle exec rspec --profile 10 \
                              --format progress \
                              --format RspecJunitFormatter --out /tmp/test-results/rspec/rspec.xml \
                              ${TESTFILES}

      # Collect test data
      # See: https://circleci.com/docs/collect-test-data
      # See: https://circleci.com/blog/how-to-output-junit-tests-through-circleci-2-0-for-expanded-insights/
      - store_test_results:
          path: /tmp/test-results/rspec/

      - run:
          name: Run danger
          command: bundle exec danger --danger_id=test

  lint:
    working_directory: *working_directory
    resource_class: small
    parallelism: 1
    docker:
      - *base_image
    steps:
      - attach_workspace:
          at: *working_directory

      - run:
          name: Run danger
          command: bundle exec danger --danger_id=lint

# Invoke jobs via workflows
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows
workflows:
  build_and_test:
    jobs:
      - build
      - test:
          context:
            - ctx_renew_api_company
          requires:
            - build
      - lint:
          context:
            - ctx_renew_api_company
          requires:
            - build
" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># Best practises:</span></span>
<span class="line"><span style="color: #7B7F8B">#   [https://www.netguru.com/blog/top-10-best-practises-to-benefit-more-form-circleci]</span></span>
<span class="line"><span style="color: #7B7F8B">#   [https://circleci.com/blog/six-optimization-tips-for-your-config/]</span></span>
<span class="line"><span style="color: #F6F6F4">references</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">  working_directory</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&amp;</span><span style="color: #F6F6F4">working_directory </span><span style="color: #F286C4">~</span><span style="color: #E7EE98">/quinblog</span></span>
<span class="line"><span style="color: #E7EE98">  images:</span></span>
<span class="line"><span style="color: #E7EE98">    base_image: &amp;base_image</span></span>
<span class="line"><span style="color: #E7EE98">      image: cimg/</span><span style="color: #F6F6F4">ruby</span><span style="color: #F286C4">:</span><span style="color: #BF9EEE">3.2</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">1</span></span>
<span class="line"><span style="color: #F6F6F4">      environment</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">        TZ</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">/usr/s</span><span style="color: #F6F6F4">hare</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">zoneinfo</span><span style="color: #F286C4">/</span><span style="color: #BF9EEE">Asia</span><span style="color: #F286C4">/</span><span style="color: #BF9EEE">Tokyo</span></span>
<span class="line"><span style="color: #F6F6F4">        BUNDLE_JOBS</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">4</span></span>
<span class="line"><span style="color: #F6F6F4">        BUNDLE_RETRY</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">3</span></span>
<span class="line"><span style="color: #F6F6F4">        BUNDLE_PATH</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> vendor</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">bundle</span></span>
<span class="line"><span style="color: #F6F6F4">        GEM_PATH</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> vendor</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">bundle</span></span>
<span class="line"><span style="color: #F6F6F4">        RAILS_ENV</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">test</span></span>
<span class="line"><span style="color: #F6F6F4">    db_image</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&amp;</span><span style="color: #F6F6F4">db_image</span></span>
<span class="line"><span style="color: #F6F6F4">      image</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> cimg</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">postgres</span><span style="color: #F286C4">:</span><span style="color: #BF9EEE">14.4</span></span>
<span class="line"><span style="color: #F6F6F4">      environment</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">        POSTGRES_USER</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> postgres</span></span>
<span class="line"><span style="color: #F6F6F4">        POSTGRES_DB</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> quinblog_test</span></span>
<span class="line"><span style="color: #F6F6F4">        POSTGRES_PASSWORD</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> postgres</span></span>
<span class="line"><span style="color: #F6F6F4">    redis_image</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&amp;</span><span style="color: #F6F6F4">redis_image</span></span>
<span class="line"><span style="color: #F6F6F4">      image</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> cimg</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">redis</span><span style="color: #F286C4">:</span><span style="color: #BF9EEE">5.0</span></span>
<span class="line"><span style="color: #F6F6F4">    mongodb_image</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&amp;</span><span style="color: #F6F6F4">mongodb_image</span></span>
<span class="line"><span style="color: #F6F6F4">      image</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> circleci</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">mongo</span><span style="color: #F286C4">:</span><span style="color: #BF9EEE">3.6</span></span>
<span class="line"><span style="color: #F6F6F4">  commands</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">    move_database_yml</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&amp;</span><span style="color: #F6F6F4">move_database_yml</span></span>
<span class="line"><span style="color: #F6F6F4">      name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Move</span><span style="color: #F6F6F4"> database_yml</span></span>
<span class="line"><span style="color: #F6F6F4">      command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> mv config</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">database.ci.yml config</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">database.yml</span></span>
<span class="line"><span style="color: #F6F6F4">    move_mongoid_yml</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&amp;</span><span style="color: #F6F6F4">move_mongoid_yml</span></span>
<span class="line"><span style="color: #F6F6F4">      name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Move</span><span style="color: #F6F6F4"> mongoid_yml</span></span>
<span class="line"><span style="color: #F6F6F4">      command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> mv config</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">mongoid.ci.yml config</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">mongoid.yml</span></span>
<span class="line"><span style="color: #F6F6F4">    sync_git_submodule</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&amp;</span><span style="color: #F6F6F4">sync_git_submodule</span></span>
<span class="line"><span style="color: #F6F6F4">      name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Sync</span><span style="color: #F6F6F4"> git submodule</span></span>
<span class="line"><span style="color: #F6F6F4">      command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">|</span></span>
<span class="line"><span style="color: #F6F6F4">        git submodule sync </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">recursive </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">quiet</span></span>
<span class="line"><span style="color: #F6F6F4">        git submodule update </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">init </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">checkout </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">recursive </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">quiet</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Use the latest 2.1 version of CircleCI pipeline process engine.</span></span>
<span class="line"><span style="color: #7B7F8B"># See: https://circleci.com/docs/2.0/configuration-reference</span></span>
<span class="line"><span style="color: #F6F6F4">version</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2.1</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects.</span></span>
<span class="line"><span style="color: #7B7F8B"># See: https://circleci.com/docs/2.0/orb-intro/</span></span>
<span class="line"><span style="color: #F6F6F4">orbs</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">  ruby</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> circleci</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">ruby@</span><span style="color: #BF9EEE">1.8</span><span style="color: #F6F6F4">.</span><span style="color: #BF9EEE">0</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Define a job to be invoked later in a workflow.</span></span>
<span class="line"><span style="color: #7B7F8B"># See: https://circleci.com/docs/2.0/configuration-reference/#jobs</span></span>
<span class="line"><span style="color: #F6F6F4">jobs</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">  build</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">    working_directory</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">working_directory</span></span>
<span class="line"><span style="color: #F6F6F4">    resource_class</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> small</span></span>
<span class="line"><span style="color: #F6F6F4">    parallelism</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span></span>
<span class="line"><span style="color: #F6F6F4">    docker</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">base_image</span></span>
<span class="line"><span style="color: #F6F6F4">    steps</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> add_ssh_keys</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          fingerprints</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">7c:72:77:4f:79:12:cb:af:c9:84:7b:d1:ab:24:69:41</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> checkout</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">move_database_yml</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">move_mongoid_yml</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">sync_git_submodule</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Disabled</span><span style="color: #F6F6F4"> auto completion</span></span>
<span class="line"><span style="color: #F6F6F4">          command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> echo </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">IRB.conf[:USE_AUTOCOMPLETE] = false</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&gt;&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">~</span><span style="color: #E7EE98">/.irbrc</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E7EE98">      </span><span style="color: #7B7F8B"># Restoring and saving cache</span></span>
<span class="line"><span style="color: #E7EE98">      - ruby/ins</span><span style="color: #F6F6F4">tall</span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">deps</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> persist_to_workspace</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          root</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">working_directory</span></span>
<span class="line"><span style="color: #F6F6F4">          paths</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> .</span><span style="color: #F286C4">/*</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  test</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">    working_directory</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">working_directory</span></span>
<span class="line"><span style="color: #F6F6F4">    resource_class</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> small</span></span>
<span class="line"><span style="color: #F6F6F4">    parallelism</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span></span>
<span class="line"><span style="color: #F6F6F4">    docker</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">base_image</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">db_image</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">mongodb_image</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">redis_image</span></span>
<span class="line"><span style="color: #F6F6F4">    steps</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> attach_workspace</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          at</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">working_directory</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Wait</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Postgres</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">DB</span></span>
<span class="line"><span style="color: #F6F6F4">          command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> dockerize </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">wait tcp</span><span style="color: #F286C4">:</span><span style="color: #E7EE98">//</span><span style="color: #F6F6F4">localhost</span><span style="color: #F286C4">:</span><span style="color: #BF9EEE">5432</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">timeout 1m</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Wait</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Mongo</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">DB</span></span>
<span class="line"><span style="color: #F6F6F4">          command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> dockerize </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">wait tcp</span><span style="color: #F286C4">:</span><span style="color: #E7EE98">//</span><span style="color: #F6F6F4">localhost</span><span style="color: #F286C4">:</span><span style="color: #BF9EEE">27017</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">timeout 1m</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Wait</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Redis</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">DB</span></span>
<span class="line"><span style="color: #F6F6F4">          command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> dockerize </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">wait tcp</span><span style="color: #F286C4">:</span><span style="color: #E7EE98">//</span><span style="color: #F6F6F4">localhost</span><span style="color: #F286C4">:</span><span style="color: #BF9EEE">6379</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">timeout 1m</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Migration</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">DB</span></span>
<span class="line"><span style="color: #F6F6F4">          command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">|</span></span>
<span class="line"><span style="color: #F6F6F4">            bundle </span><span style="color: #97E1F1">exec</span><span style="color: #F6F6F4"> rails db</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4">schema</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4">load</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4">primary </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">trace</span></span>
<span class="line"><span style="color: #F6F6F4">            bundle </span><span style="color: #97E1F1">exec</span><span style="color: #F6F6F4"> rails db</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4">create</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4">universal</span></span>
<span class="line"><span style="color: #F6F6F4">            bundle </span><span style="color: #97E1F1">exec</span><span style="color: #F6F6F4"> rails db</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4">schema</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4">load</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4">universal </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">trace</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Run</span><span style="color: #F6F6F4"> rspec</span></span>
<span class="line"><span style="color: #F6F6F4">          command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">|</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #BF9EEE">TESTFILES</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">$(circleci tests glob </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">spec/**/*_spec.rb</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">|</span><span style="color: #F6F6F4"> circleci tests split </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">split</span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">by</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">timings </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">timings</span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">type</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">classname)</span></span>
<span class="line"><span style="color: #F6F6F4">            echo ${</span><span style="color: #BF9EEE">TESTFILES</span><span style="color: #F6F6F4">}</span></span>
<span class="line"><span style="color: #F6F6F4">            bundle </span><span style="color: #97E1F1">exec</span><span style="color: #F6F6F4"> rspec </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">profile </span><span style="color: #BF9EEE">10</span><span style="color: #F6F6F4"> \</span></span>
<span class="line"><span style="color: #F6F6F4">                              </span><span style="color: #F286C4">--</span><span style="color: #97E1F1">format</span><span style="color: #F6F6F4"> progress \</span></span>
<span class="line"><span style="color: #F6F6F4">                              </span><span style="color: #F286C4">--</span><span style="color: #97E1F1">format</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">RspecJunitFormatter</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">out </span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">tmp</span><span style="color: #F286C4">/</span><span style="color: #97E1F1">test</span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">results</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">rspec</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">rspec.xml \</span></span>
<span class="line"><span style="color: #F6F6F4">                              ${</span><span style="color: #BF9EEE">TESTFILES</span><span style="color: #F6F6F4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #7B7F8B"># Collect test data</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #7B7F8B"># See: https://circleci.com/docs/collect-test-data</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #7B7F8B"># See: https://circleci.com/blog/how-to-output-junit-tests-through-circleci-2-0-for-expanded-insights/</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> store_test_results</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          path</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">/tmp/</span><span style="color: #97E1F1">test</span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">results</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">rspec</span><span style="color: #F286C4">/</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Run</span><span style="color: #F6F6F4"> danger</span></span>
<span class="line"><span style="color: #F6F6F4">          command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> bundle </span><span style="color: #97E1F1">exec</span><span style="color: #F6F6F4"> danger </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">danger_id</span><span style="color: #F286C4">=</span><span style="color: #97E1F1">test</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  lint</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">    working_directory</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">working_directory</span></span>
<span class="line"><span style="color: #F6F6F4">    resource_class</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> small</span></span>
<span class="line"><span style="color: #F6F6F4">    parallelism</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span></span>
<span class="line"><span style="color: #F6F6F4">    docker</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">base_image</span></span>
<span class="line"><span style="color: #F6F6F4">    steps</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> attach_workspace</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          at</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">working_directory</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> run</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">Run</span><span style="color: #F6F6F4"> danger</span></span>
<span class="line"><span style="color: #F6F6F4">          command</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> bundle </span><span style="color: #97E1F1">exec</span><span style="color: #F6F6F4"> danger </span><span style="color: #F286C4">--</span><span style="color: #F6F6F4">danger_id</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">lint</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Invoke jobs via workflows</span></span>
<span class="line"><span style="color: #7B7F8B"># See: https://circleci.com/docs/2.0/configuration-reference/#workflows</span></span>
<span class="line"><span style="color: #F6F6F4">workflows</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">  build_and_test</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">    jobs</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> build</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> test</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          context</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> ctx_renew_api_company</span></span>
<span class="line"><span style="color: #F6F6F4">          requires</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> build</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> lint</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">          context</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> ctx_renew_api_company</span></span>
<span class="line"><span style="color: #F6F6F4">          requires</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> build</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph"><strong>Step 8</strong>: Config Danger. Create <strong>Dangerfile</strong> and paste code below:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Ruby</span><span role="button" tabindex="0" data-code="# frozen_string_literal: true

case ENV.fetch('CIRCLE_JOB', nil)

when 'lint'

  ### for Rubocop ###

  rubocop.lint(force_exclusion: true, inline_comment: true)

  ### for rails_best_practices ###

  # rails_best_practices.lint

  ### for Reek ###

  # reek.lint

  ### for brakeman ###

  brakeman.run('.')

  # Ensure there is a summary for a pr

  failure('Please provide a summary in the Pull Request description') if     github.pr_body.include?('___WRITE_HERE___')

  # Ensure that all prs have an assignee

  failure('This PR does not have any assignees yet.') unless github.pr_json['assignee']

  # Warn really big diffs

  warn('We cannot handle the scale of this PR') if git.lines_of_code &gt; 300

  # Note when a pr cannot be manually merged, which goes away when you can

  warn('This PR cannot be merged yet.', sticky: false) unless github.pr_json['mergeable']

 when 'test'

  ### for SimpleCov ###

  coverage_file = 'coverage/coverage.json'

  simplecov.report(coverage_file, sticky: false)

  simplecov.individual_report(coverage_file, Dir.pwd)

end" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># frozen_string_literal: true</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">case</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">ENV</span><span style="color: #F6F6F4">.fetch(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">CIRCLE_JOB</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, </span><span style="color: #BF9EEE">nil</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">when</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">lint</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B">### for Rubocop ###</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  rubocop.lint(force_exclusion</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">true</span><span style="color: #F6F6F4">, inline_comment</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">true</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B">### for rails_best_practices ###</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B"># rails_best_practices.lint</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B">### for Reek ###</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B"># reek.lint</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B">### for brakeman ###</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  brakeman.run(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">.</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B"># Ensure there is a summary for a pr</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  failure(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Please provide a summary in the Pull Request description</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">) </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4">     github.pr_body.include?(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">___WRITE_HERE___</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B"># Ensure that all prs have an assignee</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  failure(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">This PR does not have any assignees yet.</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">) </span><span style="color: #F286C4">unless</span><span style="color: #F6F6F4"> github.pr_json[</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">assignee</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">]</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B"># Warn really big diffs</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E1F1">warn</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">We cannot handle the scale of this PR</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">) </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> git.lines_of_code </span><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">300</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B"># Note when a pr cannot be manually merged, which goes away when you can</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E1F1">warn</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">This PR cannot be merged yet.</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, sticky</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #F6F6F4">) </span><span style="color: #F286C4">unless</span><span style="color: #F6F6F4"> github.pr_json[</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">mergeable</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">]</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4"> </span><span style="color: #F286C4">when</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">test</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B">### for SimpleCov ###</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  coverage_file </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">coverage/coverage.json</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  simplecov.report(coverage_file, sticky</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">  simplecov.individual_report(coverage_file, </span><span style="color: #97E1F1; font-style: italic">Dir</span><span style="color: #F6F6F4">.pwd)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">end</span></span></code></pre></div>



<p class="wp-block-paragraph"><strong>Step 9</strong>: Back to CircleCI -&gt; Click <a href="https://app.circleci.com/settings/organization/github/hinodelabo/overview?return-to=https%3A%2F%2Fapp.circleci.com%2Fpipelines%2Fgithub%2Fhinodelabo%2Fqlear-v2-bot"><strong>Organization Settings -&gt; Contexts -&gt; Create Context</strong></a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="541" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.15.01-2-1024x541.png" alt="" class="wp-image-1929" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.15.01-2-1024x541.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.15.01-2-300x158.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.15.01-2-768x406.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.15.01-2-1536x811.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.15.01-2-380x201.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.15.01-2-800x423.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.15.01-2-1160x613.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.15.01-2.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong>Step 10</strong>: Enter name <strong>Context</strong> and click <strong>Create Context</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="480" height="337" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.21.17-1.png" alt="" class="wp-image-1930" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.21.17-1.png 480w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.21.17-1-300x211.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.21.17-1-200x140.png 200w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.21.17-1-380x267.png 380w" sizes="auto, (max-width: 480px) 100vw, 480px" /></figure>



<p class="wp-block-paragraph"><strong>Step 11</strong>: Click Context Name created and add environment for project such as <strong>RAILS_MASTER_KEY</strong>, <strong>RAILS_ENV</strong>, <strong>RACK_ENV</strong>, <strong>DANGER_GITHUB_API_TOKEN</strong></p>



<p class="wp-block-paragraph"><img loading="lazy" decoding="async" width="602" height="369" src="https://lh7-us.googleusercontent.com/17QyXLD3bPoW37cSOYqHPLsPm0uKHPu6OeuHKJdiNjW0BYHRYPnPjpcAqA5T76mSrD8TWG-LWkKGXCnG3C4I38vCi4Cd7omWGvVoAaEupr0jK01mlqi-yk3ejp44tmiIINx_DKnS1ZlCYgSS2hvmkA"></p>



<p class="wp-block-paragraph">Click Add Environment and enter value as below:</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/VawQSbkEyRNPF0gTcuZpOMupCXkMWjkHYUkubeARhEFwjAtprXU7dO_uB1kJj_arFhyvmuBcOROKFznmQ20Z17xrc4TPQYJAtPGN9vP8u6IuuAJtv8jbnzBHktucj95hNV1ngdzhq6uqiyO7CVnMpA" alt=""/></figure>



<p class="wp-block-paragraph"><strong>Note:</strong></p>



<ul class="wp-block-list">
<li>RAILS_MASTER_KEY: Open file config/crendentials/test.key on project and copy it.</li>



<li>RAILS_ENV: test</li>



<li>RACK_ENV: test</li>
</ul>



<p class="wp-block-paragraph">After add 3 environments, it will displayed as below:</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/WiT33geUhW0yOKFsk__sCQAGncXWsmc2gYABWVxVpEFs1loyoiC2nswh9C3YwTovzG9umpGJqqHC_uIf455XlXv5T8LRER2VQKr6JSDhRT4TeAmHii1cJrkZ2MrPnwm6FjBB_DzUdZC3i3QzuqpMsw" alt=""/></figure>



<p class="wp-block-paragraph"><strong>Step 12</strong>: Create <strong>DANGER_GITHUB_API_TOKEN</strong></p>



<ol class="wp-block-list">
<li>Access <a href="https://github.com/settings/tokens">https://github.com/settings/tokens</a> and click <strong>Generate new token</strong></li>
</ol>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/G8nn12MjFXdAlmZPbLyXC9j_FDpA4Mg1ES-R79AqjJo6rwp-QqaIWbWbwgWo678Jx2qUMSY8DqvkQehGEYDwLeR5eLddtBcirZmUMXvGYOSuMHqEi35NP7Da1p0TYW-dn0UBHUmod9FEVhM8qlCoAw" alt=""/></figure>



<ol class="wp-block-list" start="2">
<li>Write Note and Select Expiration, Scope. I choose Expiration 90 days and click repo</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="776" height="388" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.43.20-1.png" alt="" class="wp-image-1934" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.43.20-1.png 776w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.43.20-1-300x150.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.43.20-1-768x384.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.43.20-1-380x190.png 380w" sizes="auto, (max-width: 776px) 100vw, 776px" /></figure>



<ol class="wp-block-list" start="3">
<li>Click Generate Token and Copy this.</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="379" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.44.39-1.png" alt="" class="wp-image-1931" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.44.39-1.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.44.39-1-300x142.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.44.39-1-768x364.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-13.44.39-1-380x180.png 380w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<ol class="wp-block-list" start="4">
<li>Back to <strong>Context</strong> and Add <strong>DANGER_GITHUB_API_TOKEN</strong></li>
</ol>



<p class="wp-block-paragraph"><strong>Step 12</strong>: Push code and runnnnn</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="287" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.09-1-1024x287.png" alt="" class="wp-image-1933" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.09-1-1024x287.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.09-1-300x84.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.09-1-768x216.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.09-1-1536x431.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.09-1-380x107.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.09-1-800x225.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.09-1-1160x326.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.09-1.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="931" height="497" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.43.png" alt="" class="wp-image-1936" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.43.png 931w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.43-300x160.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.43-768x410.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.43-380x203.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/Screen-Shot-2023-07-18-at-14.23.43-800x427.png 800w" sizes="auto, (max-width: 931px) 100vw, 931px" /></figure>
<p>The post <a href="https://blog.tomosia.com.vn/ror-huong-dan-setup-circleci-code-quality/">[ROR] Hướng dẫn setup CircleCI &#038; Code Quality</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/ror-huong-dan-setup-circleci-code-quality/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
