/
githubmirror
/
libfastjson
Обзор
Документация
Войти
/
githubmirror
/
libfastjson
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
.github/workflows/run_checks.yml
260 строк
8 KB
Rainer Gerhards
ci: replace Travis with GitHub Actions
23 июл 2026, 10:42
23 июл 2026, 10:42
1885753
Код
Авторство
О чём код?
--- name: check on: pull_request: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true permissions: {} jobs: compile: name: compile (${{ matrix.compiler }}) runs-on: ubuntu-latest timeout-minutes: 20 permissions: contents: read strategy: fail-fast: true matrix: compiler: [gcc, clang] steps: - name: Checkout repository uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: persist-credentials: false - name: Run compile check env: MATRIX_COMPILER: ${{ matrix.compiler }} run: | chmod -R go+rw . export LIBFASTJSON_CONTAINER_UID="" export LIBFASTJSON_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:24.04' export CFLAGS='-g' export CC="$MATRIX_COMPILER" chmod +x devtools/*.sh devtools/devcontainer.sh --rm devtools/run-build.sh test: name: ${{ matrix.config }} needs: compile if: ${{ needs.compile.result == 'success' }} runs-on: ubuntu-latest timeout-minutes: 30 permissions: contents: read strategy: fail-fast: false matrix: config: - centos_8 - debian_13 - fedora_43 - ubuntu_24 - ubuntu_24_asan - ubuntu_24_distcheck steps: - name: Checkout repository uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: persist-credentials: false - name: Run container CI pipeline env: MATRIX_CONFIG: ${{ matrix.config }} run: | chmod -R go+rw . export LIBFASTJSON_CONTAINER_UID="" export CFLAGS='-g' export LDFLAGS='' export CC='gcc' export CI_MAKE_CHECK_EXTRA='VERBOSE=1' export CI_CHECK_CMD='check' case "$MATRIX_CONFIG" in centos_8) export LIBFASTJSON_DEV_CONTAINER='rsyslog/rsyslog_dev_base_centos:8' ;; debian_13) export LIBFASTJSON_DEV_CONTAINER='rsyslog/rsyslog_dev_base_debian:13' ;; fedora_43) export LIBFASTJSON_DEV_CONTAINER='rsyslog/rsyslog_dev_base_fedora:43' ;; ubuntu_24) export LIBFASTJSON_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:24.04' ;; ubuntu_24_asan) export LIBFASTJSON_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:24.04' export CC='clang' export CFLAGS="-fstack-protector -D_FORTIFY_SOURCE=2 \ -fsanitize=address -fsanitize-address-use-after-scope \ -g -O1 -fno-omit-frame-pointer -fno-color-diagnostics" export LDFLAGS='-fsanitize=address' export ASAN_OPTIONS='abort_on_error=1:symbolize=1:detect_leaks=0' ;; ubuntu_24_distcheck) export LIBFASTJSON_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:24.04' export CI_CHECK_CMD='distcheck' ;; *) echo "unknown configuration: $MATRIX_CONFIG" exit 1 ;; esac chmod +x devtools/*.sh devtools/devcontainer.sh --rm devtools/run-ci.sh - name: Show error logs if: ${{ failure() || cancelled() }} run: | devtools/gather-check-logs.sh cat failed-tests.log 2>/dev/null || true arm: name: ${{ matrix.arch }} (${{ matrix.use_qemu && 'QEMU' || 'native, ASan' }}) needs: compile if: ${{ needs.compile.result == 'success' }} runs-on: ${{ matrix.runs_on }} timeout-minutes: 120 permissions: contents: read strategy: fail-fast: false matrix: include: - arch: armhf runs_on: ubuntu-24.04 platform: linux/arm/v7 qemu_platform: arm use_qemu: true - arch: arm64 runs_on: ubuntu-24.04-arm platform: linux/arm64 qemu_platform: aarch64 use_qemu: false steps: - name: Checkout repository uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: persist-credentials: false - name: Set up QEMU if: ${{ matrix.use_qemu }} uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3 with: platforms: ${{ matrix.qemu_platform }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 - name: Build ARM development image uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6 with: context: . file: devtools/ci/Dockerfile.arm platforms: ${{ matrix.platform }} tags: libfastjson-arm-dev:${{ matrix.arch }} load: true cache-from: type=gha,scope=arm-dev-${{ matrix.arch }} cache-to: type=gha,mode=max,scope=arm-dev-${{ matrix.arch }} - name: Run ARM CI pipeline env: MATRIX_ARCH: ${{ matrix.arch }} MATRIX_PLATFORM: ${{ matrix.platform }} WORKSPACE_PATH: ${{ github.workspace }} run: | chmod -R go+rw . docker run --rm --platform "$MATRIX_PLATFORM" \ -e ARCH="$MATRIX_ARCH" \ --cap-add SYS_ADMIN \ --cap-add SYS_PTRACE \ --security-opt seccomp=unconfined \ -v "$WORKSPACE_PATH:/rsyslog" \ -w /rsyslog \ "libfastjson-arm-dev:$MATRIX_ARCH" bash -c ' set -e export CC=gcc export CFLAGS="-g -O1 -fno-omit-frame-pointer" export LDFLAGS="" export CI_MAKE_CHECK_EXTRA="VERBOSE=1" export CI_MAKE_CHECK_OPT="-j1" export CI_CHECK_CMD="check" if [ "$ARCH" = "arm64" ]; then export CFLAGS="-g -O1 -fno-omit-frame-pointer -fsanitize=address" export LDFLAGS="-fsanitize=address" export ASAN_OPTIONS="abort_on_error=1:symbolize=1:detect_leaks=0" fi chmod +x devtools/*.sh devtools/run-ci.sh ' - name: Show error logs if: ${{ failure() || cancelled() }} run: | devtools/gather-check-logs.sh cat failed-tests.log 2>/dev/null || true clang_analyzer: name: clang static analyzer needs: compile if: ${{ needs.compile.result == 'success' }} runs-on: ubuntu-latest timeout-minutes: 30 permissions: contents: read steps: - name: Checkout repository uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: persist-credentials: false fetch-depth: 0 - name: Run clang static analyzer id: run-clang env: LIBFASTJSON_CONTAINER_UID: "" LIBFASTJSON_DEV_CONTAINER: rsyslog/rsyslog_dev_base_ubuntu:24.04 SCAN_BUILD: scan-build SCAN_BUILD_CC: clang SCAN_BUILD_REPORT_DIR: scan-build-report DOCKER_RUN_EXTRA_OPTS: >- -e SCAN_BUILD -e SCAN_BUILD_CC -e SCAN_BUILD_REPORT_DIR run: | chmod -R go+rw . chmod +x devtools/*.sh set +e devtools/devcontainer.sh --rm devtools/run-static-analyzer.sh \ 2>&1 | tee clang-analyzer.log echo "exitcode=${PIPESTATUS[0]}" >> "$GITHUB_OUTPUT" - name: Upload clang static analyzer report if: ${{ always() }} id: upload-report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: clang-static-analyzer-report path: scan-build-report retention-days: 7 if-no-files-found: ignore - name: Add analyzer report to job summary if: ${{ always() }} env: ARTIFACT_URL: ${{ steps.upload-report.outputs.artifact-url }} run: | printf 'Clang static analyzer HTML report: %s\n' "$ARTIFACT_URL" \ >> "$GITHUB_STEP_SUMMARY" - name: Fail if analysis failed if: ${{ steps.run-clang.outputs.exitcode != '0' }} env: ARTIFACT_URL: ${{ steps.upload-report.outputs.artifact-url }} run: | tail -n 200 clang-analyzer.log >&2 || true echo "Analyzer report: $ARTIFACT_URL" >&2 exit 1