Documentation: Add More Knapsack Information to Docs (#8419)
Co-authored-by: Mac Siri <krairit.siri@gmail.com> Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
This commit is contained in:
parent
4f831a836b
commit
2aeebcda5a
3 changed files with 50 additions and 18 deletions
|
|
@ -42,6 +42,9 @@
|
|||
<a href="https://app.honeybadger.io/project/Pl5JzZB5ax">
|
||||
<img src="https://img.shields.io/badge/honeybadger-active-informational" alt="Honeybadger badge">
|
||||
</a>
|
||||
<a href="https://knapsackpro.com/dashboard/organizations/1142/projects/1022/test_suites/1434/builds">
|
||||
<img src="https://img.shields.io/badge/Knapsack%20Pro-Parallel%20%2F%20dev.to-%230074ff" alt="Knapsack Pro Parallel CI builds for dev.to" style="max-width:100%;">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
Welcome to the [dev.to](https://dev.to) codebase. We are so excited to have you.
|
||||
|
|
@ -113,7 +116,6 @@ A more complete overview of our stack is available in
|
|||
|
||||
- [Docker Desktop for Mac](https://docs.docker.com/docker-for-mac/install/)
|
||||
|
||||
|
||||
### Installation Documentation
|
||||
|
||||
[View Full Installation Documentation](https://docs.dev.to/installation/).
|
||||
|
|
|
|||
|
|
@ -12,23 +12,43 @@ deployed to production once the build steps complete successfully. The process
|
|||
currently takes about 20 minutes to complete and will need a few additional
|
||||
minutes before the change goes live.
|
||||
|
||||
## Travis steps
|
||||
## Travis Stages
|
||||
|
||||
The following steps can be explored in our
|
||||
The following stages can be explored in our
|
||||
[.travis.yml](https://github.com/thepracticaldev/dev.to/blob/master/.travis.yml)
|
||||
and [Procfile](https://github.com/thepracticaldev/dev.to/blob/master/Procfile).
|
||||
Some of the steps will be parallelized in the future:
|
||||
Our Travis CI process consists of 2 stages.
|
||||
|
||||
1. Travis runs the test portion of Rails code.
|
||||
1. Travis runs the test portion of Preact code.
|
||||
1. CodeClimate-test-reporter combines the test result and coverage from Ruby and
|
||||
JavaScript code then uploads it to our CodeClimate dashboard.
|
||||
1. `bundle-audit` checks for any known vulnerability.
|
||||
1. Travis builds Storybook to ensure its integrity.
|
||||
1. Travis deploys code to Heroku.
|
||||
- Heroku runs the database migrations and Elasticsearch updates before
|
||||
deployment.
|
||||
1. Travis notifies the team that the process completed.
|
||||
1. Running our test suite in 3 parallel jobs.
|
||||
2. Deploying the application if we have merged with the master branch and the
|
||||
`[deploy]` flag is present in the merge commit.
|
||||
|
||||
### Stage 1: Running Tests
|
||||
|
||||
In stage 1, we use [KnapsackPro](https://knapsackpro.com/) to divide our Rspec
|
||||
tests evenly between 3 different jobs (virtual machines). This ensures that each
|
||||
job takes relatively the same amount of time to run. After running our Rspec
|
||||
tests, we then run a series of other checks. These additional checks are split
|
||||
up between the different jobs. Here is a list of those additional checks that
|
||||
are run.
|
||||
|
||||
- Job 0 is where we run Javascript tests, Preact tests, and coverage checks.
|
||||
- Job 1 is where Travis builds Storybook to ensure its integrity, and where we check for any known vulnerabilities using `bundle-audit`.
|
||||
- Job 2 is where Travis fires up a Rails console to ensure the application loads properly, and where specs with KnapsackPro are run.
|
||||
|
||||
If all of the jobs pass then we move on to Stage 2 of the Travis CI process.
|
||||
|
||||
### Stage 2: Deploying
|
||||
|
||||
If the build was kicked off from a pull request being created or updated this
|
||||
stage will do nothing. If the branch has been merged into master with the
|
||||
`[deploy]` flag, then this stage will kick off a deploy. The deploy will run in
|
||||
its own job deploying our application to Heroku.
|
||||
|
||||
Prior to deploying the code, Heroku will run database migrations, Elasticsearch
|
||||
updates, and do some final checks (more information on that below) to make sure
|
||||
everything is working as expected. If these all succeed, then the deploy
|
||||
completes and our team is notified.
|
||||
|
||||
## Deploying to Heroku
|
||||
|
||||
|
|
|
|||
|
|
@ -46,9 +46,13 @@ about
|
|||
We are using Travis for CI and CD. Travis will run a build (in an isolated
|
||||
environment for testing) for every push to this repository. We also recently
|
||||
added [KnapsackPro](https://knapsackpro.com/) to our Travis CI setup.
|
||||
KnapsackPro allows us to split up our tests evenly between 3 different virtual
|
||||
machines. These 3 virtual machines all run in parallel which helps decrease the
|
||||
time needed to run all of our specs.
|
||||
KnapsackPro allows us to split up our tests evenly between 3 different
|
||||
jobs(virtual machines). These 3 jobs all run in parallel which helps decrease
|
||||
the time needed to run all of our specs.
|
||||
|
||||
If you want more information about your CI job or how long specific specs take
|
||||
to run you can find all of that information on our
|
||||
[KnapsackPro public dashboard](https://knapsackpro.com/dashboard/organizations/1142/projects/1022/test_suites/1434/builds).
|
||||
|
||||
Keep in mind that a passing build does not necessarily mean the project won't
|
||||
run into any issues. Strive to write good tests for the code you wish to
|
||||
|
|
@ -57,7 +61,13 @@ contribute.
|
|||
Travis will deploy your pull request to production after CI passes and a member
|
||||
of the DEV team has approved it.
|
||||
|
||||
Our test suite is not perfect and sometimes a re-run is needed.
|
||||
Our test suite is not perfect and sometimes a re-run is needed. If you encounter
|
||||
a "flaky spec" that fails intermittently please open an issue so we can address
|
||||
it. In order to get your test suite to pass after a flaky spec has failed simply
|
||||
retry the individual job that failed rather than the entire suite in order to
|
||||
save some time. When you retry the individual job, make sure to also retry the
|
||||
Deploy job. Even though you may not be deploying that job must complete for the
|
||||
entire build to pass.
|
||||
|
||||
Please note that you will need to have Elasticsearch installed and running for
|
||||
certain tests in our test suite. You can find instructions on how to install and
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue