Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add binary size stats #4519

Merged
merged 36 commits into from
May 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
e2c6665
build analytics
maximyurchuk May 13, 2024
1963232
stripped
maximyurchuk May 13, 2024
08ab67b
mute tmp
maximyurchuk May 13, 2024
cb4e219
fix
maximyurchuk May 13, 2024
e05a1d1
-DDUMP_LINKER_MAP
maximyurchuk May 13, 2024
5eb5776
buidl stats
maximyurchuk May 13, 2024
4fbf157
pass secret
maximyurchuk May 13, 2024
8e0913b
try fix
maximyurchuk May 14, 2024
b03069f
new
maximyurchuk May 14, 2024
a4b4d18
fix
maximyurchuk May 14, 2024
6c876c7
stats
maximyurchuk May 14, 2024
540606e
binary size
maximyurchuk May 14, 2024
d39af24
fix
maximyurchuk May 14, 2024
a5f996f
fix
maximyurchuk May 14, 2024
614b46d
fix
maximyurchuk May 14, 2024
a3e5ca5
fixes
maximyurchuk May 14, 2024
0c1b3e3
fix
maximyurchuk May 14, 2024
f66399b
fixes
maximyurchuk May 14, 2024
8308d19
common
maximyurchuk May 14, 2024
c0b0a7a
fix
maximyurchuk May 14, 2024
9fc7ff7
fix
maximyurchuk May 14, 2024
efbcbed
All wf
maximyurchuk May 14, 2024
dee1daf
fixes
maximyurchuk May 14, 2024
339e926
CAPS
maximyurchuk May 14, 2024
5366b29
STRIP()
maximyurchuk May 14, 2024
f30ba6f
fix
maximyurchuk May 14, 2024
91d89e5
no stats
maximyurchuk May 14, 2024
5d13c6d
review fixes
maximyurchuk May 14, 2024
48f6ea5
fix
maximyurchuk May 14, 2024
75d3c1c
123
maximyurchuk May 14, 2024
77a09e7
try fix
maximyurchuk May 14, 2024
a533745
fix
maximyurchuk May 14, 2024
388f2c2
ignore error
maximyurchuk May 14, 2024
be8bf9d
remove from pr
maximyurchuk May 14, 2024
b0f9d77
Merge branch 'main2' into users/yurchuk/size_stats
maximyurchuk May 14, 2024
c7b5c97
fix
maximyurchuk May 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/actions/build_ya/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,15 @@ runs:
echo "Build successful." | .github/scripts/tests/comment-pr.py --ok
fi

- name: build_stats
shell: bash
continue-on-error: true
run: |
set -x
export build_preset="${{ inputs.build_preset }}"
python3 -m pip install ydb ydb[yc]
python3 .github/scripts/send_build_stats.py

- name: show free space
if: always()
shell: bash
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: setup_ci_ydb_service_account_key_file_credentials
description: setup environment for access to ydb instance in cloud
inputs:
ci_ydb_service_account_key_file_credentials:
required: false
description: "token for access"
runs:
using: "composite"
steps:
- name: drop file and set environment variable
if: "${{ inputs.ci_ydb_service_account_key_file_credentials != '' }}"
shell: bash
run: |
set -eu
export YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS=/tmp/ydb_service_account.json
cat << EOF > $YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS
${{ inputs.ci_ydb_service_account_key_file_credentials}}
EOF
echo "YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS=$YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS" >> $GITHUB_ENV
142 changes: 142 additions & 0 deletions .github/scripts/send_build_stats.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
#!/usr/bin/env python3

import datetime
import os
import ydb
import uuid
import subprocess


YDBD_PATH = "ydb/apps/ydbd/ydbd"

FROM_ENV_COLUMNS = [
"github_head_ref",
"github_workflow",
"github_workflow_ref",
"github_sha",
"github_repository",
"github_event_name",
"github_ref_type",
"github_ref_name",
"github_ref",
]

STRING_COLUMNS = FROM_ENV_COLUMNS + [
"id",
"git_commit_message",
"binary_path",
"build_preset",
]

DATETIME_COLUMNS = [
"git_commit_time",
]

UINT64_COLUMNS = [
"size_bytes",
"size_stripped_bytes",
]

ALL_COLUMNS = STRING_COLUMNS + DATETIME_COLUMNS + UINT64_COLUMNS


def sanitize_str(s):
# YDB SDK expects bytes for 'String' columns
if s is None:
s = "N\A"
return s.encode("utf-8")


def main():
if "YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS" not in os.environ:
print("Env variable YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS is missing, skipping")
return 1

with ydb.Driver(
endpoint="grpcs://ydb.serverless.yandexcloud.net:2135",
database="/ru-central1/b1ggceeul2pkher8vhb6/etn6d1qbals0c29ho4lf",
credentials=ydb.credentials_from_env_variables()
) as driver:
driver.wait(timeout=10, fail_fast=True)
session = ydb.retry_operation_sync(
lambda: driver.table_client.session().create()
)
with session.transaction() as tx:
text_query_builder = []
for type_ in STRING_COLUMNS:
text_query_builder.append("DECLARE ${} as String;".format(type_))
for type_ in UINT64_COLUMNS:
text_query_builder.append("DECLARE ${} as Uint64;".format(type_))
for type_ in DATETIME_COLUMNS:
text_query_builder.append("DECLARE ${} as Datetime;".format(type_))

text_query_builder.append(
"""INSERT INTO binary_size
(
{}
)
VALUES
(
{}
);
""".format(
", \n ".join(ALL_COLUMNS),
", \n ".join(["$" + column for column in ALL_COLUMNS]),
)
)

text_query = "\n".join(text_query_builder)

prepared_query = session.prepare(text_query)

binary_size_bytes = subprocess.check_output(
["bash", "-c", "cat {} | wc -c".format(YDBD_PATH)]
)
binary_size_stripped_bytes = subprocess.check_output(
["bash", "-c", "./ya tool strip {} -o - | wc -c".format(YDBD_PATH)]
)

build_preset = os.environ.get("build_preset", None)
github_sha = os.environ.get("GITHUB_SHA", None)

if github_sha is not None:
git_commit_time_bytes = subprocess.check_output(
["git", "show", "--no-patch", "--format=%cI", github_sha]
)
git_commit_message_bytes = subprocess.check_output(
["git", "log", "--format=%s", "-n", "1", github_sha]
)
git_commit_time = datetime.datetime.fromisoformat(
git_commit_time_bytes.decode("utf-8").strip()
)
git_commit_message = git_commit_message_bytes.decode("utf-8").strip()
git_commit_time_unix = int(git_commit_time.timestamp())
else:
git_commit_time = None
git_commit_message = None
git_commit_time_unix = 0

parameters = {
"$id": sanitize_str(str(uuid.uuid4())),
"$build_preset": sanitize_str(build_preset),
"$binary_path": sanitize_str(YDBD_PATH),
"$size_stripped_bytes": int(binary_size_stripped_bytes.decode("utf-8")),
"$size_bytes": int(binary_size_bytes.decode("utf-8")),
"$git_commit_time": git_commit_time_unix,
"$git_commit_message": sanitize_str(git_commit_message),
}

for column in FROM_ENV_COLUMNS:
value = os.environ.get(column.upper(), None)
parameters["$" + column] = sanitize_str(value)

print("Executing query:\n{}".format(text_query))
print("With parameters:")
for k, v in parameters.items():
print("{}: {}".format(k, v))

tx.execute(prepared_query, parameters, commit_tx=True)


if __name__ == "__main__":
exit(main())
9 changes: 7 additions & 2 deletions .github/workflows/acceptance_run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ on:

jobs:
main:
name: Build and test ydb/tests/acceptance
name: Build and test ydb/tests/acceptance
runs-on: [ self-hosted, "${{ inputs.runner_label || 'auto-provisioned' }}", "${{ format('build-preset-{0}', inputs.build_preset || 'relwithdebinfo') }}" ]
steps:
- name: Checkout
Expand All @@ -38,13 +38,18 @@ jobs:
with:
ssh-private-key: ${{ secrets.SLICE_QA_SSH_PRIVATE_KEY }}

- name: Setup ydb access
uses: ./.github/actions/setup_ci_ydb_service_account_key_file_credentials
with:
ci_ydb_service_account_key_file_credentials: ${{ secrets.CI_YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS }}

- name: Build and test
uses: ./.github/actions/build_and_test_ya
with:
build_preset: ${{ inputs.build_preset || 'relwithdebinfo'}}
build_target: "ydb/tests/acceptance"
increment: false
run_tests: true
run_tests: false
test_size: small,medium,large
test_type: unittest,py3test,py2test,pytest
test_threads: 1
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/build_and_test_ya.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ jobs:
with:
ref: ${{ inputs.commit_sha }}

- name: Setup ydb access
uses: ./.github/actions/setup_ci_ydb_service_account_key_file_credentials
with:
ci_ydb_service_account_key_file_credentials: ${{ secrets.CI_YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS }}

- name: Build and test
uses: ./.github/actions/build_and_test_ya
with:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/postcommit_asan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ jobs:
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Setup ydb access
uses: ./.github/actions/setup_ci_ydb_service_account_key_file_credentials
with:
ci_ydb_service_account_key_file_credentials: ${{ secrets.CI_YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS }}
- name: Build and test
uses: ./.github/actions/build_and_test_ya
with:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/postcommit_relwithdebinfo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ jobs:
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Setup ydb access
uses: ./.github/actions/setup_ci_ydb_service_account_key_file_credentials
with:
ci_ydb_service_account_key_file_credentials: ${{ secrets.CI_YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS }}
- name: Build and test
uses: ./.github/actions/build_and_test_ya
with:
Expand Down
Loading