Skip to content

CI/CD

GitLab runs builds, packaging, security checks and documentation deployment from the Codeberg v3 source mirror. The authoritative job conditions and commit-message controls are in .gitlab-ci.yml.

Validating a change

GitLab CI does not provide a routine go test ./... or golangci-lint job. Run these checks locally. The credentialed Playwright suite calls the real pixiv API. Only protected refs can receive the protected token; missing or invalid credentials fail the suite. See testing. The style-lint job checks shell formatting with pinned shfmt and authored text with Opengrep. The usual binary build and publication jobs run on the default branch or on tags, not on ordinary feature branches. A green pipeline on a development branch is therefore not a substitute for a local build/test.

Before interpreting an absent or outdated pipeline, compare the v3 commit hash on Codeberg and GitLab. The mirror may lag.

Publishing and documentation

The default-branch pipeline publishes development artifacts under next; Git tags publish release versions and latest. Image publication includes signing and SBOM attestation. Do not create a tag merely to get CI coverage.

Documentation jobs run for the paths listed in .docs-paths on the default branch, or for manually launched GitLab web pipelines. Changing only AGENTS.md does not trigger default-branch documentation deployment. A manual web pipeline also bypasses the normal [skip docs] job rule.

Building OCI images locally

From a Git checkout, Buildx embeds the Git revision in the executable. Enable Buildx's native Git labels to also record the revision and repository URL in the image config:

Bash
BUILDX_GIT_LABELS=full docker buildx build --platform linux/amd64 \
  --load -t pixivfe:local -f build/Dockerfile .

The Docker build requires Git history; a source archive without .git is not a supported build context. GitLab's packaging job instead labels images using CI_COMMIT_SHA and embeds VCS data when it compiles the binaries.

Run scripts/test-oci-vcs.sh to verify both packaging paths, native builds, and clean/dirty Git metadata in the actual image binaries and OCI labels.

Commit-message controls

Consult the workflow.rules, .build-and-publish-rules, .docs-rules and .build-base-image.rules before relying on a marker. In particular:

  • [skip ci] disables a pipeline entirely; [skip build] suppresses binary builds and publication.
  • [skip docs] suppresses normal default-branch documentation jobs but not jobs added by the manual web-pipeline rule.
  • [rebuild CI images] requests all CI builder-image jobs.
  • The individual [rebuild …] image markers currently do not work: .build-base-image.rules uses /\[rebuild $IMAGE_SUFFIX\]/. GitLab does not expand variables in regex patterns.

The CI configuration is the source of truth for the complete set of supported markers; do not maintain a parallel option list here.