--- # 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 # 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: $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: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_REF_PROTECTED == "false" 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: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_REF_PROTECTED == "false" 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: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_REF_PROTECTED == "false" script: - .ci/lib/gitlab_prepare_ci.sh - .ci/ec.sh # aports checks (generic) pytest-commits: stage: lint rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_REF_PROTECTED == "false" 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: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_REF_PROTECTED == "false" script: - .ci/lib/gitlab_prepare_ci.sh - .ci/apkbuild-lint.sh allow_failure: true # kernel kconfig check kernel-kconfig: stage: lint rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_REF_PROTECTED == "false" changes: - kconfigcheck.toml - device/*/linux-*/config-* - main/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.com/postmarketOS/ci-common/-/raw/master/check_mr_settings.py" - python3 ./check_mr_settings.py # build changed aports .build: stage: build tags: - saas-linux-large-amd64 rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_REF_PROTECTED == "false" 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 tags: - saas-linux-large-arm64 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