YAML, acronimo di YAML Ain't Markup Language, è un formato di serializzazione dati leggibile dall'uomo.

Le chiavi di primo livello sono separati dai valori da due punti e uno spazio, la coppia chiave/valore è chiamata mapping.

Una chiave può avere come valore un altro mapping, in questo caso il mapping di secondo livello deve essere indentato di due spazi (non usare il tab).

invoice number: 314159
name: Santa Claus

address:
  street: Santa Claus Lane
  zip: 12345
  city: North Pole

Una chiave può avere come valore una lista, in questo caso ogni elemento della lista è preceduto da uno spazio:

order items:
  - Sled # l'indentazione si potrebbe anche evitare 
  - Wrapping Paper

Literal Block Scalar e Folded Block Scalar

steps:
- uses: actions/checkout@v2
- name: Run Tests
  run: |      # Literal Block Scalar
    ./configure
    make
    make test
steps:
- uses: actions/checkout@v2
- name: Install dependencies
  run: >      # Folded Block Scalar
    apt-get update
    && apt-get install -y
    git tig vim jq tmux tmate git-subrepo cpanminus

    cpanm -n -l local
    YAML::PP YAML::XS ... # i tre puntini indicano la fine del documento

Se un file contiene più "documenti" si può usare il carattere --- per separarli:

--- # il primo è opzionale
invoice number: 314159
name: Santa Claus
address: North Pole
---
invoice number: 314160
name: Santa Claus
address: North Pole
---
invoice number: 314161
name: Santa Claus
address: North Pole

Directives

La Version directive è usata per indicare la versione di YAML utilizzata

%YAML 1.2
---
invoice number: 314159
name: Santa Claus
address: North Pole
...
%YAML 1.2
---
invoice number: 314160
name: Santa Claus
address: North Pole
...

Flow Scalars e Block Scalars