123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- name: Ya-Build-and-Test-On-demand
- on:
- workflow_dispatch:
- inputs:
- image:
- type: string
- default: fd8earpjmhevh8h6ug5o
- description: "VM image"
- build_target:
- type: string
- default: "ydb/"
- description: "limit build and test to specific target"
- build_preset:
- type: choice
- default: "relwithdebinfo"
- description: "Build preset"
- options:
- - debug
- - relwithdebinfo
- - release-asan
- - release-tsan
- - release-msan
- test_size:
- type: choice
- default: "small,medium,large"
- description: "test size to run"
- options:
- - small
- - small,medium
- - small,medium,large
- test_type:
- type: choice
- default: "unittest,py3test,py2test,pytest"
- description: "type of tests to run"
- options:
- - unittest
- - py3test,py2test,pytest
- - unittest,py3test,py2test,pytest
- test_threads:
- type: string
- default: "28"
- description: "Test threads count"
- link_threads:
- type: string
- default: "8"
- description: "link threads count"
- run_build:
- type: boolean
- default: true
- description: "run build"
- run_tests:
- type: boolean
- default: true
- description: "run tests"
- workflow_call:
- inputs:
- image:
- type: string
- default: fd8earpjmhevh8h6ug5o
- build_target:
- type: string
- default: "ydb/"
- build_preset:
- type: string
- default: "relwithdebinfo"
- test_size:
- type: string
- default: "small,medium,large"
- test_type:
- type: string
- default: "unittest,py3test,py2test,pytest"
- run_build:
- type: boolean
- default: true
- run_tests:
- type: boolean
- default: true
- test_threads:
- type: string
- default: 28
- description: "Test threads count"
- link_threads:
- type: string
- default: 8
- description: "link threads count"
- put_build_results_to_cache:
- type: boolean
- default: true
- jobs:
- provide-runner:
- name: Start self-hosted YC runner
- timeout-minutes: 5
- runs-on: ubuntu-latest
- outputs:
- label: ${{ steps.start-yc-runner.outputs.label }}
- instance-id: ${{ steps.start-yc-runner.outputs.instance-id }}
- steps:
- - name: Start YC runner
- id: start-yc-runner
- uses: yc-actions/yc-github-runner@v1
- with:
- mode: start
- yc-sa-json-credentials: ${{ secrets.YC_SA_JSON_CREDENTIALS }}
- github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
- folder-id: ${{ secrets.YC_FOLDER }}
- image-id: ${{ inputs.image }}
- disk-size: ${{ vars.DISK_SIZE && vars.DISK_SIZE || '1023GB' }}
- disk-type: network-ssd-nonreplicated
- cores: 64
- memory: 192GB
- core-fraction: 100
- zone-id: ru-central1-b
- subnet-id: ${{ secrets.YC_SUBNET }}
- prepare-vm:
- name: Prepare runner
- needs: provide-runner
- runs-on: [ self-hosted, "${{ needs.provide-runner.outputs.label }}" ]
- steps:
- - name: Checkout PR
- uses: actions/checkout@v3
- if: github.event.pull_request.head.sha != ''
- with:
- ref: ${{ github.event.pull_request.head.sha }}
- - name: Checkout
- uses: actions/checkout@v3
- if: github.event.pull_request.head.sha == ''
- - name: Prepare VM
- uses: ./.github/actions/prepare_vm
- main:
- uses: ./.github/workflows/build_and_test_ya.yml
- needs:
- - provide-runner
- - prepare-vm
- with:
- runner_label: ${{ needs.provide-runner.outputs.label }}
- build_target: ${{ inputs.build_target }}
- build_preset: ${{ inputs.build_preset }}
- run_build: ${{ inputs.run_build }}
- run_tests: ${{ inputs.run_tests }}
- test_size: ${{ inputs.test_size }}
- test_type: ${{ inputs.test_type }}
- link_threads: ${{ inputs.link_threads }}
- test_threads: ${{ inputs.test_threads }}
- put_build_results_to_cache: ${{ inputs.put_build_results_to_cache || true }}
- secrets: inherit
- release-runner:
- name: Release self-hosted YC runner if provided on-demand
- needs:
- - provide-runner # required to get output from the start-runner job
- - main # required to wait when the main job is done
- runs-on: ubuntu-latest
- if: always()
- steps:
- - name: Stop YC runner
- uses: yc-actions/yc-github-runner@v1
- with:
- mode: stop
- yc-sa-json-credentials: ${{ secrets.YC_SA_JSON_CREDENTIALS }}
- github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
- label: ${{ needs.provide-runner.outputs.label }}
- instance-id: ${{ needs.provide-runner.outputs.instance-id }}
|