#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.