When enabling new options in kconfigcheck, it's likely that some kernels in pmaports will fail, but often undesirable to rebuild all the kernels particularly when the options being enabled are for quality of life. Adjust the rules for the kconfig check job in CI so that it will fail with a warning in this case, but still fail with an error when an updated kernel package doesn't pass. Signed-off-by: Caleb Connolly <caleb@postmarketos.org> [ci:skip-build]: already built successfully in CI
195 lines
4.2 KiB
YAML
195 lines
4.2 KiB
YAML
---
|
|
|
|
# global settings
|
|
image: alpine:latest
|
|
before_script: &global_before_scripts
|
|
- apk upgrade -U
|
|
after_script:
|
|
- .ci/lib/move_logs.sh $CI_PROJECT_DIR
|
|
stages:
|
|
- lint
|
|
- build
|
|
- autoupdate
|
|
variables:
|
|
# Default of 20 is pretty small, sometimes MRs have >20 commits in them. 100
|
|
# seems like a reasonable balance. If this is too low, git merge-base (from ci/
|
|
# common.py) can fail
|
|
GIT_DEPTH: 100
|
|
|
|
# This defines the rules for when a pipeline should run.
|
|
workflow:
|
|
rules:
|
|
# Don't run branch pipeline if an MR is open (only the MR pipeline will run)
|
|
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
|
|
when: never
|
|
# Run for merge requests
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
# Run scheduled pipeline for autoupdate or manually triggered pipeline
|
|
- if: $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"
|
|
|
|
# device documentation
|
|
wiki:
|
|
stage: lint
|
|
rules:
|
|
- if: &mr_rule $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_REF_PROTECTED == "false"
|
|
changes:
|
|
- .ci/**/*
|
|
- .gitlab-ci.yml
|
|
- device/*/device-*/*
|
|
script:
|
|
- .ci/lib/gitlab_prepare_ci.sh
|
|
- .ci/wiki.sh
|
|
|
|
# testcases linting
|
|
ruff:
|
|
stage: lint
|
|
rules:
|
|
- if: *mr_rule
|
|
changes:
|
|
- .ci/*
|
|
- .ci/*/*
|
|
- .gitlab-ci.yml
|
|
script:
|
|
- .ci/lib/gitlab_prepare_ci.sh
|
|
- .ci/ruff.sh
|
|
|
|
# shellcheck and various grep checks
|
|
shellcheck-grep:
|
|
stage: lint
|
|
image: alpine:edge
|
|
rules:
|
|
- if: *mr_rule
|
|
script:
|
|
- .ci/lib/gitlab_prepare_ci.sh
|
|
- .ci/shellcheck.sh
|
|
- .ci/grep.sh
|
|
- .ci/codeowners.sh
|
|
|
|
editor-config:
|
|
stage: lint
|
|
image: alpine:edge
|
|
rules:
|
|
- if: *mr_rule
|
|
script:
|
|
- .ci/lib/gitlab_prepare_ci.sh
|
|
- .ci/ec.sh
|
|
|
|
# aports checks (generic)
|
|
pytest-commits:
|
|
stage: lint
|
|
rules:
|
|
- if: *mr_rule
|
|
script:
|
|
- .ci/lib/gitlab_prepare_ci.sh
|
|
- .ci/pytest.sh
|
|
- .ci/commits.sh
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- log.txt
|
|
- log_testsuite_pmaports.txt
|
|
- pmbootstrap.cfg
|
|
expire_in: 1 week
|
|
|
|
# APKBUILD linting
|
|
aport-lint:
|
|
stage: lint
|
|
rules:
|
|
- if: *mr_rule
|
|
script:
|
|
- .ci/lib/gitlab_prepare_ci.sh
|
|
- .ci/apkbuild-lint.sh
|
|
allow_failure: true
|
|
|
|
# kernel kconfig check
|
|
kernel-kconfig:
|
|
stage: lint
|
|
rules:
|
|
- if: *mr_rule
|
|
changes:
|
|
- kconfigcheck.toml
|
|
allow_failure: true
|
|
- if: *mr_rule
|
|
changes:
|
|
- device/*/linux-*/config-*
|
|
script:
|
|
- .ci/lib/gitlab_prepare_ci.sh
|
|
- .ci/kconfig.sh
|
|
|
|
# MR settings
|
|
# (Checks for "Allow commits from members who can merge to the target branch")
|
|
mr-settings:
|
|
stage: lint
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
before_script:
|
|
- *global_before_scripts
|
|
- apk -q add python3
|
|
script:
|
|
- wget -q "https://gitlab.postmarketos.org/postmarketOS/ci-common/-/raw/master/check_mr_settings.py"
|
|
- python3 ./check_mr_settings.py
|
|
|
|
# build changed aports
|
|
.build:
|
|
stage: build
|
|
rules:
|
|
- if: *mr_rule
|
|
before_script:
|
|
- *global_before_scripts
|
|
- .ci/lib/gitlab_prepare_ci.sh
|
|
after_script:
|
|
- cp -r /home/pmos/.local/var/pmbootstrap/packages/ packages/ || true
|
|
artifacts:
|
|
expire_in: 1 week
|
|
paths:
|
|
- packages/
|
|
timeout: 10 h
|
|
|
|
build-x86_64:
|
|
extends: .build
|
|
script:
|
|
- .ci/build-x86_64.sh
|
|
|
|
build-x86:
|
|
extends: .build
|
|
script:
|
|
- .ci/build-x86.sh
|
|
|
|
build-aarch64:
|
|
extends: .build
|
|
script:
|
|
- .ci/build-aarch64.sh
|
|
|
|
build-armv7:
|
|
extends: .build
|
|
script:
|
|
- .ci/build-armv7.sh
|
|
|
|
build-armhf:
|
|
extends: .build
|
|
script:
|
|
- .ci/build-armhf.sh
|
|
|
|
build-riscv64:
|
|
extends: .build
|
|
script:
|
|
- .ci/build-riscv64.sh
|
|
|
|
auto-update:
|
|
stage: autoupdate
|
|
rules:
|
|
# This variable is set in the scheduled pipeline configuration. It should be a space separated list of
|
|
# package names to update.
|
|
- if: $AUTOUPDATE_PACKAGES != null && $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web"
|
|
before_script:
|
|
- .ci/lib/gitlab_prepare_ci.sh
|
|
script:
|
|
- .ci/autoupdate.sh "$AUTOUPDATE_PACKAGES"
|
|
after_script:
|
|
- .ci/lib/move_logs.sh $CI_PROJECT_DIR
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- log.txt
|
|
- log_testsuite_pmaports.txt
|
|
- pmbootstrap.cfg
|