Skip to content

Commit

Permalink
[CI] cpp ci is implemented using python
Browse files Browse the repository at this point in the history
Signed-off-by: LiangliangSui <[email protected]>
  • Loading branch information
LiangliangSui committed Jan 4, 2024
1 parent a89bc18 commit c06b6e6
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 4 deletions.
9 changes: 5 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,11 +145,12 @@ jobs:
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install bazel
run: ./ci/run_ci.sh install_bazel
- name: Run C++ CI with Bazel
run: ./ci/run_ci.sh cpp

run: |
pip install wget
pip install psutil
pip install pyarrow==14.0.0
python ./ci/run_ci.py -i cpp
python:
name: Python CI
# Fix python 3.6 install issue, see
Expand Down
63 changes: 63 additions & 0 deletions ci/run_ci.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import argparse
import subprocess
import platform
import sys
import psutil
import wget
import os


def _exec_cmd(cmd: list, stdout=subprocess.PIPE):
ret = subprocess.run(cmd, stdout=stdout)
print(f'run command: {ret.args}')
assert ret.returncode == 0
return ret


def _run_cpp():
os_name = platform.system().lower()
if os_name == 'windows':
bazel_cmd = './bazel.exe'
else:
URL = f'https://github.com/bazelbuild/bazel/releases/download/6.3.2/bazel-6.3.2-installer-{os_name}-x86_64.sh'
wget.download(URL, 'installer.sh')
os.chmod('installer.sh', 0o700)
_exec_cmd(['./installer.sh', '--user'])
bazel_cmd = './bazel'

# bazel install check
bazel_version = _exec_cmd([bazel_cmd, '--version'])
print(f'bazel version: {str(bazel_version.stdout)}')

# default is byte
total_mem = psutil.virtual_memory().total
limit_jobs = int(total_mem / 1024 / 1024 / 1024 / 3)
with open('.bazelrc', 'a') as file:
file.write(f'\nbuild --jobs={limit_jobs}')

# run test
query_result = _exec_cmd([bazel_cmd, 'query', '//...'])
test_cmd = [bazel_cmd, 'test'] + str(query_result.stdout, 'utf-8').splitlines()
_exec_cmd(test_cmd)


def _run(item):
if item == 'cpp':
_run_cpp()


def _parse_args():
parser = argparse.ArgumentParser()
choices = ['java', 'cpp']
parser.add_argument('-i', '--item', choices=choices, help='Specify an item that needs to be run')
return parser.parse_args()


if __name__ == '__main__':
args = _parse_args()

if args.item:
_run(args.item)
else:
pass

0 comments on commit c06b6e6

Please sign in to comment.