#browser-automation #continuous-integration ## Documentation entry points Entry points for setting everything up with GitHub for a Node.js app. - [Official documentation startpage](https://circleci.com/docs/2.0/) - [Getting started tutorial](https://circleci.com/docs/2.0/first-steps/) - [Configuration Introduction](https://circleci.com/docs/2.0/config-intro/?section=configuration#part-one-hello-its-all-about-the-shell) - [Writing YAML](https://circleci.com/docs/2.0/writing-yaml/) - [Using the CircleCI In-app Configuration Editor](https://circleci.com/docs/2.0/config-editor/) - [Docs for the node orb](https://circleci.com/developer/orbs/orb/circleci/node) - [Docs for the **cimg/node** image](https://circleci.com/developer/images/image/cimg/node) - [Configuration reference](https://circleci.com/docs/2.0/configuration-reference/) ## Terminology From their [Concepts page](https://circleci.com/docs/2.0/concepts/). - A **project** is the representation of a GitHub/Bitbucket/whatever repository on CircleCI - The **configuration** contains instructions for CircleCI on what to run. Exclusively defined as code in *.circleci/config.yml* within the respective repository - A **pipeline** (only available on CircleCI Cloud) consists of the following parts: - **Workflows**, which orchestrate jobs - **Jobs**, which are a collection of steps (also visible as status checks on GitHub) - **Steps**: Commands (e.g. `checkout`) - **Orbs**, which are shareable snippets of configuration code. They can be shared and imported in the [Orbs Registry](https://circleci.com/developer/orbs) - **Executor**: The environment that **jobs** are running in - **Image**: The image ("blueprint") for an executor - CircleCI Server (on-premise?) and CircleCI Cloud (SaaS) ## Repository for experiments https://github.com/systemboogie/explore-circleci ## YAML can be hard If there is a syntax error due to dashes or indentations not arranged correctly, the error message is not helpful. The CircleCI docs contain a [primer on how to write YAML](https://circleci.com/docs/2.0/writing-yaml/), but that document does not make a connection to real-life keys or config file structures. What helps a bit is the [CircleCI In-app Configuration Editor](https://circleci.com/docs/2.0/config-editor/), which enables writing config files without having to run an actual build.