123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- name: Build (ya make)
- description: Build targets
- inputs:
- build_target:
- required: false
- description: "build target"
- build_preset:
- required: true
- default: "relwithdebinfo"
- description: "relwithdebinfo, release-asan, release-tsan"
- bazel_remote_uri:
- required: false
- description: "bazel-remote endpoint"
- bazel_remote_username:
- required: false
- description: "bazel-remote username"
- bazel_remote_password:
- required: false
- description: "bazel-remote password"
- link_threads:
- required: false
- default: "8"
- description: "link threads count"
- runs:
- using: "composite"
- steps:
- - name: Init
- id: init
- shell: bash
- env:
- build_preset: ${{ inputs.build_preset }}
- run: |
- echo "SHELLOPTS=xtrace" >> $GITHUB_ENV
- export TMP_DIR=$(pwd)/tmp_build
- echo "TMP_DIR=$TMP_DIR" >> $GITHUB_ENV
- rm -rf $TMP_DIR && mkdir $TMP_DIR
-
- echo "BUILD_PRESET=$build_preset" >> $GITHUB_ENV
- echo "GITHUB_TOKEN=${{ github.token }}" >> $GITHUB_ENV
- - name: build
- id: build
- shell: bash
- run: |
- extra_params=()
- if [ ! -z "${{ inputs.build_target }}" ]; then
- extra_params+=(--target="${{ inputs.build_target }}")
- fi
- if [ ! -z "${{ inputs.bazel_remote_uri }}" ]; then
- extra_params+=(--bazel-remote-store)
- extra_params+=(--bazel-remote-base-uri "${{ inputs.bazel_remote_uri }}")
- fi
-
- if [ ! -z "${{ inputs.bazel_remote_username }}" ]; then
- extra_params+=(--bazel-remote-username "${{ inputs.bazel_remote_username }}")
- extra_params+=(--bazel-remote-password "${{ inputs.bazel_remote_password }}")
- extra_params+=(--bazel-remote-put --dist-cache-evict-bins --add-result .o --add-result .a)
- fi
-
- case "${{ inputs.build_preset }}" in
- debug)
- build_type=debug
- ;;
- relwithdebinfo)
- build_type=relwithdebinfo
- ;;
- release-asan)
- build_type=release
- extra_params+=(--sanitize="address")
- extra_params+=(-DSKIP_JUNK -DUSE_EAT_MY_DATA -DDEBUGINFO_LINES_ONLY)
- ;;
- release-tsan)
- build_type=release
- extra_params+=(--sanitize="thread")
- extra_params+=(-DSKIP_JUNK -DUSE_EAT_MY_DATA -DDEBUGINFO_LINES_ONLY)
- ;;
- release-msan)
- build_type=release
- extra_params+=(--sanitize="memory")
- extra_params+=(-DSKIP_JUNK -DUSE_EAT_MY_DATA -DDEBUGINFO_LINES_ONLY)
- ;;
- *)
- echo "Invalid preset: ${{ inputs.build_preset }}"
- exit 1
- ;;
- esac
-
- echo "::debug::get version"
- ./ya --version
-
- echo "Build **{platform_name}-${BUILD_PRESET}** is running..." | .github/scripts/tests/comment-pr.py
-
- # to be sure
- set -o pipefail
-
- ./ya make -k --build "${build_type}" --force-build-depends -D'BUILD_LANGUAGES=CPP PY3 PY2 GO' -T --stat -DCONSISTENT_DEBUG \
- --log-file "$TMP_DIR/ya_log.txt" --evlog-file "$TMP_DIR/ya_evlog.jsonl" \
- --cache-size 512G --link-threads "${{ inputs.link_threads }}" \
- "${extra_params[@]}" |& tee $TMP_DIR/ya_make.log || (
- RC=$?
- echo "::debug::ya make RC=$RC"
- echo "status=failed" >> $GITHUB_OUTPUT
- )
- - name: sync logs to s3
- if: always()
- shell: bash
- run: |
- echo "::group::s3-sync"
- s3cmd sync --acl-private --exclude="ya_make.log" --no-progress --stats --no-check-md5 "$TMP_DIR/" "$S3_BUCKET_PATH/build_logs/"
- s3cmd sync --acl-public --no-progress --stats --no-check-md5 "$TMP_DIR/ya_make.log" "$S3_BUCKET_PATH/build_logs/"
- echo "::endgroup::"
- - name: comment-build-status
- if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target'
- shell: bash
- run: |
- log_url="$S3_URL_PREFIX/build_logs/ya_make.log"
- if [ "${{ steps.build.outputs.status }}" == "failed" ]; then
- echo "Build failed. see the [build logs]($log_url)." | .github/scripts/tests/comment-pr.py --fail
- else
- echo "Build successful." | .github/scripts/tests/comment-pr.py --ok
- fi
- - name: show free space
- if: always()
- shell: bash
- run: df -h
|