GitLab Workflow

前提条件

CI/CD変数として XEIZE_TOKEN とGitLab APIトークンが必要です。GitLab APIトークンは XEIZE_GITLAB_API_TOKEN または GITLAB_API_TOKEN という名前で設定できます。

XEIZE Token

GitLab WorkflowでXEIZEを使用するには、XEIZE_TOKEN を取得してください。

GitLab PAT Token

コメントを投稿するには、以下のスコープを持つGitLabの個人用アクセストークンを XEIZE_GITLAB_API_TOKEN または GITLAB_API_TOKEN に設定します。両方が設定されている場合は XEIZE_GITLAB_API_TOKEN を優先し、その値が空の場合に限り GITLAB_API_TOKEN を使用します。

  • api

トークンのユーザーには、対象プロジェクトのコードを閲覧し、マージリクエストにコメントできるメンバー権限も必要です。read_api は読み取り専用のため不十分で、write_repository はREST APIの認証権限ではありません。GitLabのアクセストークンのスコープとプロジェクト権限を参照してください。

トークンの作成方法はGitLab PATのガイドを参照してください。

検出結果の言語設定

variables に LANG を追加すると、SAST、Secret、IaCがMRに投稿する検出結果とコメントの言語を設定できます。

yaml
variables:
  LANG: "JP"

対応する値は KO(韓国語)、EN(英語)、JP(日本語)です。LANG が未設定の場合は韓国語を使用します。

設定例

SASTの設定

yaml
image: alpine:3.24
stages:
  - sast
before_script:
  - apk update && apk add --no-cache git curl
variables:
  GIT_STRATEGY: clone
  GIT_DEPTH: 0
  LANG: "JP"
sast:
  stage: sast
  script: |
    curl -L -o xez_ci "https://download.xeize.dev/ci/ci_linux_x64" -H "X-XEZ-TOKEN: $XEIZE_TOKEN"
    chmod +x xez_ci
    GIT_PLATFORM=gitlab ./xez_ci

Secretの設定

yaml
image: alpine:3.24
stages:
  - secret
before_script:
  - apk update && apk add --no-cache git curl
variables:
  GIT_STRATEGY: clone
  GIT_DEPTH: 0
  MODE: secret
  LANG: "JP"
secret:
  stage: secret
  script: |
    curl -L -o xez_ci "https://download.xeize.dev/ci/ci_linux_x64" -H "X-XEZ-TOKEN: $XEIZE_TOKEN"
    chmod +x xez_ci
    GIT_PLATFORM=gitlab ./xez_ci

IaCの設定

yaml
image: alpine:3.24
stages:
  - iac
before_script:
  - apk update && apk add --no-cache git curl
variables:
  GIT_STRATEGY: clone
  GIT_DEPTH: 0
  MODE: iac
  LANG: "JP"
iac:
  stage: iac
  script: |
    curl -L -o xez_ci "https://download.xeize.dev/ci/ci_linux_x64" -H "X-XEZ-TOKEN: $XEIZE_TOKEN"
    chmod +x xez_ci
    GIT_PLATFORM=gitlab ./xez_ci

LEVELによるマージの制限

yaml
image: alpine:3.24
stages:
  - sast
before_script:
  - apk update && apk add --no-cache git curl
variables:
  GIT_STRATEGY: clone
  GIT_DEPTH: 0
sast:
  stage: sast
  script: |
    curl -L -o xez_ci "https://download.xeize.dev/ci/ci_linux_x64" -H "X-XEZ-TOKEN: $XEIZE_TOKEN"
    chmod +x xez_ci
    GIT_PLATFORM=gitlab LEVEL=high ./xez_ci

AUDIT LEVELによる結果の絞り込み

yaml
image: alpine:3.24
stages:
  - iac
before_script:
  - apk update && apk add --no-cache git curl
variables:
  GIT_STRATEGY: clone
  GIT_DEPTH: 0
iac:
  stage: iac
  script: |
    curl -L -o xez_ci "https://download.xeize.dev/ci/ci_linux_x64" -H "X-XEZ-TOKEN: $XEIZE_TOKEN"
    chmod +x xez_ci
    GIT_PLATFORM=gitlab MODE=iac LEVEL=high AUDIT_LEVEL=low ./xez_ci

MRを作成しないプッシュパイプライン

develop へのプッシュ時に MODE=all でSAST、Secret、IaCを実行し、成功後にビルドとデプロイを実行します。XEIZE_TOKEN をCI/CD変数に登録してください。

yaml
workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'

stages: [security, build, deploy]

security:
  stage: security
  image: alpine:3.24
  allow_failure: false
  variables:
    GIT_DEPTH: "0"
    MODE: all
    LEVEL: medium
  before_script:
    - apk add --no-cache git curl
  script: |
    curl -fsSL -H "X-XEZ-TOKEN: $XEIZE_TOKEN" https://download.xeize.dev/ci/ci_linux_x64 -o /tmp/xez_ci
    chmod +x /tmp/xez_ci
    GIT_PLATFORM=gitlab /tmp/xez_ci

build:
  stage: build
  needs: [security]
  script:
    - ./ci/build.sh

deploy:
  stage: deploy
  needs: [build]
  script:
    - ./ci/deploy.sh

ビルド・デプロイのコマンドとRunnerの設定はプロジェクトに合わせて変更し、security → build → deploy の依存関係を維持してください。検査範囲とエラー処理については共通設定を参照してください。

関連ページ1