GitLab CIしたい

stages:
  - build
  - test
  - deploy

variables:
  変数名1: 値1
  変数名2: 値2

default:
  image: デフォルトのイメージ名
  cache:
    - キャッシュのパス
  before_script
    - すべてのジョブに共通する実行内容

ジョブ名:
  stage: ステージ名
  image: イメージ名
  script:
    - このジョブのメインの実行内容

クリエーションライン株式会社がGitLabの日本語マニュアルを作成し、公開してくれています。 とりあえず使い方に困ったら、このサイトを参照するとよいです。

キーワードをしりたい

GitLab CI/CDには、パイプラインに対して設定するグローバルキーワードと、 ジョブに対して設定するジョブキーワードがあります。 詳細はGitLab CIのキーワードリファレンスを参照してください。

デフォルト設定したい(default

default:
  image: python:3.11
  before_script:
    - pip install -U pip
    - pip install -U virtualenv
    - virtualenv venv
    - source venv/bin/activate

defaultキーワードで、パイプラインのデフォルト動作を定義できます。 その中身は、ジョブキーワードが利用できます。 上のサンプルは、Pythonを使ったプロジェクトで、僕がよく使っている設定です。 すべてのジョブで実行する内容をbefore_scriptに書いています。

注釈

パイプラインでPythonを使う場合は、まず仮想環境を作成することが推奨されています。 そのままpipを使うと以下の警告が出力されます。

WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager.
It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

注釈

before_scriptをトップレベルに定義するのは、現在は推奨されていません。 defaultの中に書くか、ジョブの中に書く必要があります。

環境変数したい(variables

variables:
  BASE_URL: "$CI_PAGES_URL"
  PIP_CACHE_DIR: '$CI_PROJECT_DIR/.cache/pip'

variablesキーワードで、パイプラインで使う環境変数(CI/CD変数)を定義できます。 このキーワードは、グローバルに対しても、ジョブに対しても利用できます。 グローバルキーワードとして定義した場合は、すべてのジョブのデフォルト設定として利用できます。 ジョブキーワードとして同じ変数名を定義した場合は、ジョブの設定値が優先されます。

キャッシュしたい(cache

default:
  image: python:3.11
  cache:
    key: キーワード
    paths:
      - .cache/pip
      - venv

cacheキーワードで、ジョブ間で共有するキャッシュのパスを定義できます。 pathsフィールドで、パスを設定します。 keyフィールドで、キャッシュのIDを設定できます。

実行条件したい(rules

test:
  script:
    - テストを実行
  rules:
    - if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH

rulesキーワードで、ジョブを実行する条件を定義できます。 上のサンプルでは、条件がコミットされたブランチ名がデフォルトブランチ名と一致しない場合にテストが走るように設定しています。 つまり、作業ブランチにコミットしたときに、テストが走るようになっています。

注釈

rulesの代わりにonly/exceptを使うことは推奨されていないみたいです。 過去のブログ記事などを参考にしてパイプラインを作成した場合は、移行するとよいです。

ファイルを保存したい(artifacts

pages:
  script:
    - make dirhtml
    - mv _build/html/ public/
  artifacts:
    paths:
      - public
    expire_in: "30 days"

artifactsキーワードで、保存するファイルを定義できます。 上のサンプルはGitLab PagesにSphinxで生成したドキュメントを公開するための設定です。 expire_inを使って、アーティファクトの保存期限を設定できます。 GitLabの無料ユーザーの場合、リポジトリの上限が10GiBとなっています。 必要のないアーティファクトは期限をつけて定期的に削除設定することをオススメします。