name: Ya-Build-and-Test inputs: build_target: type: string default: "ydb/" description: "limit build and test to specific target" build_preset: type: string run_build: type: boolean default: true description: "run build" run_tests: type: boolean default: true description: "run tests" test_threads: type: string default: 52 description: "Test threads count" link_threads: type: string default: 12 description: "link threads count" test_size: type: string default: "small,medium" test_type: type: string default: "" description: "run only specific test types (or all by default)" increment: type: boolean required: true description: If true, compares build graphs between the current and previous commits to find a list of test suites to run. Otherwise, runs all tests. folder_prefix: type: string default: "ya-" put_build_results_to_cache: type: boolean default: true additional_ya_make_args: type: string default: "" test_retry_count: default: "" description: "how many times to retry failed tests" secs: type: string default: "" vars: type: string default: "" custom_branch_name: description: "Custom branch name required when workflow branch != checkout branch" type: string required: false add_vcs_info: type: boolean default: false description: "add ya make vars with git info" collect_coredumps: type: boolean default: false description: "Collect coredumps via enabling ulimit -c unlimited" pull_number: type: string required: false description: "Pull request number (for workflow_call events)" ci_ydb_service_account_key_file_credentials: type: string required: false default: "" description: "YDB SA JSON for upload_tests_results / binary_size; runs setup when set" ydb_qa_config: type: string required: false default: "" description: "YDB QA table paths JSON (vars.YDB_QA_CONFIG); runs setup when set" defaults: run: shell: bash runs: using: "composite" steps: - name: Setup ydb access if: inputs.ci_ydb_service_account_key_file_credentials != '' || inputs.ydb_qa_config != '' uses: ./.github/actions/setup_ci_ydb_service_account_key_file_credentials with: ci_ydb_service_account_key_file_credentials: ${{ inputs.ci_ydb_service_account_key_file_credentials }} ydb_qa_config: ${{ inputs.ydb_qa_config }} - name: Prepare folder prefix id: prepare_prefix shell: bash run: | # Check if custom_branch_name is set and not empty if [ -n "${{ inputs.custom_branch_name }}" ]; then # Extract and sanitize custom_branch_name CUSTOM_BRANCH_NAME="${{ inputs.custom_branch_name }}" # Replace all unsupported characters with hyphens SANITIZED_NAME="${CUSTOM_BRANCH_NAME//[^a-zA-Z0-9-]/-}" # Optionally limit the length to, say, 50 characters SANITIZED_NAME="${SANITIZED_NAME:0:50}" # Assign the sanitized name to the folder_prefix FOLDER_PREFIX="ya-${SANITIZED_NAME}-" else # If the branch name is not provided, use a default prefix FOLDER_PREFIX='ya-' fi # Output the folder_prefix for use in subsequent steps echo "folder_prefix=${FOLDER_PREFIX}" >> $GITHUB_ENV - name: Prepare s3cmd uses: ./.github/actions/s3cmd with: s3_bucket: ${{ fromJSON( inputs.vars ).AWS_BUCKET }} s3_endpoint: ${{ fromJSON( inputs.vars ).AWS_ENDPOINT }} s3_key_id: ${{ fromJSON( inputs.secs ).AWS_KEY_ID }} s3_key_secret: ${{ fromJSON( inputs.secs ).AWS_KEY_VALUE }} folder_prefix: ${{ env.folder_prefix }} build_preset: ${{ inputs.build_preset }} - name: Run build and tests id: build uses: ./.github/actions/test_ya with: build_target: ${{ inputs.build_target }} build_preset: ${{ inputs.build_preset }} test_size: ${{ inputs.test_size }} test_type: ${{ inputs.test_type }} run_tests: ${{ inputs.run_tests }} increment: ${{ inputs.increment }} link_threads: ${{ inputs.link_threads }} additional_ya_make_args: ${{ inputs.additional_ya_make_args }} test_threads: ${{ inputs.test_threads }} bazel_remote_uri: ${{ fromJSON( inputs.vars ).REMOTE_CACHE_URL || '' }} bazel_remote_username: ${{ fromJSON( inputs.secs ).REMOTE_CACHE_USERNAME || '' }} bazel_remote_password: ${{ fromJSON( inputs.secs ).REMOTE_CACHE_PASSWORD || '' }} put_build_results_to_cache: ${{ inputs.put_build_results_to_cache }} test_retry_count: ${{ inputs.test_retry_count }} custom_branch_name: ${{ inputs.custom_branch_name }} add_vcs_info: ${{ inputs.add_vcs_info }} telegram_ydbot_token: ${{ fromJSON( inputs.secs ).YDBOT_TELEGRAM_BOT_TOKEN || '' }} telegram_alert_logins: ${{ fromJSON( inputs.vars ).GH_ALERTS_TG_LOGINS || '' }} telegram_alert_chat: ${{ fromJSON( inputs.vars ).GH_ALERTS_TG_CHAT || '' }} collect_coredumps: ${{ inputs.collect_coredumps }} pull_number: ${{ inputs.pull_number }}