Ports .github/workflows/ci.yml to .gitlab-ci.yml after the GitHub account was suspended and Actions stopped being reachable. Same checks, same order. The Actions workflow stays in the tree: it is the reference this was written from and it works unchanged if the appeal succeeds. The image is pinned by digest rather than tag, which is the replacement for the workflow's SHA-pinned actions -- GitLab has no action allowlist to lean on.
27 lines
1.1 KiB
YAML
27 lines
1.1 KiB
YAML
# CI on the self-hosted GitLab, ported from .github/workflows/shellcheck.yml
|
|
# when the GitHub account was suspended on 2026-09-20. The Actions file stays
|
|
# in the tree as the reference.
|
|
#
|
|
# ludeeus/action-shellcheck has no GitLab equivalent, so this runs shellcheck
|
|
# directly from its own digest-pinned image and reproduces the settings the
|
|
# action was given: severity=warning, gcc format, every script in one run.
|
|
|
|
stages: [lint]
|
|
|
|
shellcheck:
|
|
stage: lint
|
|
image:
|
|
name: koalaman/shellcheck:stable@sha256:bb596a0d169b85ddd81d8b6d3a2ff6d5baf5fca10b97f575ebc647c3dff62b3d # stable
|
|
# The image's entrypoint is shellcheck itself, which would swallow the
|
|
# runner's shell; GitLab needs a shell to drive the job.
|
|
entrypoint: [""]
|
|
script:
|
|
- |
|
|
files=$(find . -name '*.sh' -not -path './.git/*' | sort)
|
|
[ -n "$files" ] || { echo "no shell scripts found"; exit 1; }
|
|
echo "$files" | tr '\n' ' '
|
|
shellcheck --severity=warning --format=gcc $files
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|