Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Continuous Integration & Testing #44

Closed
7 tasks done
arcticicestudio opened this issue Nov 24, 2018 · 0 comments
Closed
7 tasks done

Continuous Integration & Testing #44

arcticicestudio opened this issue Nov 24, 2018 · 0 comments

Comments

@arcticicestudio
Copy link
Contributor

arcticicestudio commented Nov 24, 2018

Related epics: #43

This issue documents the implementation and configuration of the workflow for the continuous integration & testing concept with Circle CI, Travis CI and Codecov.

Workflow

All tasks of the workflow are documented in the design concept (#43).

GitHub Integration Configuration

Like also documented in #43 the integration of the CI and coverage services with GitHub requires to configure the rules for protected branches. See the design concept for more details.

Tasks

  • Implement the .circleci/config.yml configuration file for Circle CI.
  • Install required (dev) dependencies to generate JUnit formatted reports.
  • Configure Jest to use the jest-junit reporter
  • Implement the Codecov configuration file
  • Implement new NPM scripts to generate JUnit formatted reports by Jest and ESLint.
  • Implement the .travis.yml configuration file for Travis CI. See updates in Design Concept: Continuous Integration & Testing #43 about the usage of Travis CI!
  • Configure the integration with GitHub.
  • Configure Circle CI and Codecov services for GitHub repository interactions.
@arcticicestudio arcticicestudio added this to the 0.1.0 milestone Nov 24, 2018
@arcticicestudio arcticicestudio self-assigned this Nov 24, 2018
arcticicestudio added a commit that referenced this issue Nov 24, 2018
Circle CI (1) is one of the most popular and proven CI providers that
allows to automate pipelines from commit to deploy with a quick, safe,
and scaled process. They support many languages and provide great and
unique features like orbs (2), job orchestration, powerful caching, SSH
or local builds for easy debugging and first-class Docker and GitHub
integration (apps, hooks, etc.) support.
The extensive and well-written documentations (3) make it easy to set
up and configure it for the usage in projects.
Circle CI has been used for almost all open source projects of Arctic
Ice Studio and will be used as primary CI provider for _Nord Docs_ too.

Before starting to run builds, Circle CI must be authorized on a per
project basis to access the code on GitHub. After the process has been
authorized (GitHub OAuth) the project will be added to the dashboard and
required webhooks to listen for new Git events will be automatically set
up. See the documentation about how to get started and add a project to
the dashboard (4).
NOTE: The latest config 2.1 features (5) are currently still in Beta
Preview and must be enabled explicitly for each project via Settings ->
Advanced Settings -> "Enable build processing (preview)"! See the
"Enabling Build Processing" (6) documentation for more details.

The Docker image of the CI container (7) will be the currently latest
stable Node.js (8) LTS version `10.x.x` and the previous LTS version
`8`. The `-browsers-legacy` tag suffix (9) can
be used later on for end-to-end tests (GH-38) with Cypress (10). Next to
Node.js these images currently include Chrome, Firefox, Java 8, and
PhantomJS.

To gather and upload all created coverage reports the
"codecov/codecov" (11) Circle CI orb (12) which provides the `upload`
command for easy integration into jobs and workflows.

References:
  (1) https://circleci.com
  (2) https://circleci.com/orbs
  (3) https://circleci.com/docs
  (4) https://circleci.com/docs/2.0/first-steps
  (5) https://github.com/CircleCI-Public/config-preview-sdk/blob/master/docs/README.md
  (6) https://circleci.com/docs/2.0/build-processing
  (7) https://hub.docker.com/r/circleci/node/tags
  (8) https://nodejs.org
  (9) https://circleci.com/docs/2.0/circleci-images/#language-image-variants
  (10) https://www.cypress.io
  (11) https://circleci.com/orbs/registry/orb/codecov/codecov
  (12) https://circleci.com/docs/2.0/orb-intro

GH-44
arcticicestudio added a commit that referenced this issue Nov 24, 2018
Instead of defining per-project environment variables (1),
using context (2) allows to define and use environment variables
globally in all projects.

References:
  (1) https://circleci.com/docs/2.0/env-vars
  (2) https://circleci.com/docs/2.0/contexts

GH-44
arcticicestudio added a commit that referenced this issue Nov 25, 2018
Circle CI (1) is one of the most popular and proven CI providers that
allows to automate pipelines from commit to deploy with a quick, safe,
and scaled process. They support many languages and provide great and
unique features like orbs (2), job orchestration, powerful caching, SSH
or local builds for easy debugging and first-class Docker and GitHub
integration (apps, hooks, etc.) support.
The extensive and well-written documentations (3) make it easy to set
up and configure it for the usage in projects.
Circle CI has been used for almost all open source projects of Arctic
Ice Studio and will be used as primary CI provider for _Nord Docs_ too.

Before starting to run builds, Circle CI must be authorized on a per
project basis to access the code on GitHub. After the process has been
authorized (GitHub OAuth) the project will be added to the dashboard and
required webhooks to listen for new Git events will be automatically set
up. See the documentation about how to get started and add a project to
the dashboard (4).
NOTE: The latest config 2.1 features (5) are currently still in Beta
Preview and must be enabled explicitly for each project via Settings ->
Advanced Settings -> "Enable build processing (preview)"! See the
"Enabling Build Processing" (6) documentation for more details.

The Docker image of the CI container (7) will be the currently latest
stable Node.js (8) LTS version `10.x.x` and the previous LTS version
`8`. The `-browsers-legacy` tag suffix (9) can
be used later on for end-to-end tests (GH-38) with Cypress (10). Next to
Node.js these images currently include Chrome, Firefox, Java 8, and
PhantomJS.

To gather and upload all created coverage reports the
"codecov/codecov" (11) Circle CI orb (12) which provides the `upload`
command for easy integration into jobs and workflows.

References:
  (1) https://circleci.com
  (2) https://circleci.com/orbs
  (3) https://circleci.com/docs
  (4) https://circleci.com/docs/2.0/first-steps
  (5) https://github.com/CircleCI-Public/config-preview-sdk/blob/master/docs/README.md
  (6) https://circleci.com/docs/2.0/build-processing
  (7) https://hub.docker.com/r/circleci/node/tags
  (8) https://nodejs.org
  (9) https://circleci.com/docs/2.0/circleci-images/#language-image-variants
  (10) https://www.cypress.io
  (11) https://circleci.com/orbs/registry/orb/codecov/codecov
  (12) https://circleci.com/docs/2.0/orb-intro

GH-44
arcticicestudio added a commit that referenced this issue Nov 25, 2018
Jest is able to generate JUnit formatted reports using the
jest-junit (1) package. It has been defined in the main configuration
file as additional reporter next to the `default` report format.
See Circle CI's documentation about to how to collect test data (2) for
more details about setups with Jest.

References:
  (1) https://github.com/codecov/jest-junit
  (2) https://circleci.com/docs/2.0/collect-test-data/#jest

GH-44
arcticicestudio added a commit that referenced this issue Nov 25, 2018
It sets the default branch from "master" to "develop" and enables
partials analysis which is available through Codecov for JavaScript
sources.

GH-44
arcticicestudio added a commit that referenced this issue Nov 25, 2018
Jest is able to generate JUnit formatted reports using the
jest-junit (1) package. It has been defined in the main configuration
file as additional reporter next to the `default` report format.
See Circle CI's documentation about to how to collect test data (2) for
more details about setups with Jest.

References:
  (1) https://github.com/codecov/jest-junit
  (2) https://circleci.com/docs/2.0/collect-test-data/#jest

GH-44
arcticicestudio added a commit that referenced this issue Nov 25, 2018
It sets the default branch from "master" to "develop" and enables
partials analysis which is available through Codecov for JavaScript
sources.

GH-44
arcticicestudio added a commit that referenced this issue Nov 25, 2018
…integration-and-testing

Continuous Integration & Testing
@arcticicestudio arcticicestudio removed their assignment Nov 27, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant