quartz/content/notes/continuous-integration.md
2022-04-06 20:35:03 +12:00

76 lines
2.0 KiB
Markdown

---
title: Continuous Integration
draft: true
---
# Continuous Integration
## 1 What is it
continuous --> is always happening
integration --> connecting software components
inc ontrast to ad hoc, occasional integration:
- diverging component developmetnamy break integration
- repaiing software may be expensive
supports 'aglile' software dev
- like test driven development, help catch issues early
usually automated
## 2 Purposes
- checking code syntax
- e.g., have CI compile the code and report errors
- (local devs compilaer may be different from remote)
- checking semantics of code
- building docs
- e.g., auto run javadoc
- running projects code tests
- auto run JUnit, and report fails
## 3 Starting CI jobs
- from version control
- e.g., every commit triggered CI jobs to run
- starts on a push to server
- manually
- on a schedule
## 4 Runs asnychronously
- dont require devs to wait for completion
- common to run locally as well as on consistent standard environment
other timescales
- local checks as you commit
- checks as you type
- checks as you save
## 5 Output
since CI is asynchronous, its feedback is also
e.g.,
- web badges showing status
- can send emails
- messaging platform
- e.g., slack, discord, teams
- webhooks etc
git project websites usually provide logging interface,
will watch scripts in virtual terminal and capture output from CI scripts
## 6 Github piplines
a pipeline has multiple _stages_
- e.g., test, build, deploy
each stages has multiple _jobs_
- e.g., JUnit, custom tests, etc
## 7 Yaml
most Ci frameworks use YAML for their configuration
structured text based formats
- python-like format or ≈JSON
## 8 configurationg from git repo
CI config often via file in git top-level directory
- CI is version managed
Gitlab pipeling specs go into .gitlab-ci.yaml:
- shows command sequece to run for a jon, within a stage
- output from commands is stored for a subsequent viewing
- indicates what files 'artifacts' should be kept from jobs