perf: parallelize gh actions and flow for speedup #25
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
branches: | |
- trunk | |
push: | |
branches: | |
- trunk | |
defaults: | |
run: | |
shell: bash | |
env: | |
BUILD_DIR: x86_64 | |
jobs: | |
build-release: | |
name: Build Release Candidate | |
runs-on: ubuntu-22.04 | |
env: | |
BUILD_RELEASE: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Build Env | |
run: sudo ./scripts/install-build-tools.sh | |
- name: Setup Local Dependencies | |
run: ./scripts/setup-dependencies.sh | |
- name: Build | |
run: ./scripts/build.sh | |
lint: | |
name: Lint | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Build Env | |
run: sudo ./scripts/install-build-tools.sh | |
- name: Setup Local Dependencies | |
run: ./scripts/setup-dependencies.sh | |
- name: Build | |
run: ./scripts/build.sh | |
- name: Lint | |
run: ./scripts/lint.sh | |
pylint: | |
name: Pylint | |
runs-on: ubuntu-22.04 | |
continue-on-error: true | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
python-version: ["3.10"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Setup Build Env | |
run: sudo ./scripts/install-build-tools.sh | |
- name: Lint with Pylint | |
run: ./scripts/pylint.sh | |
shellcheck: | |
name: Shellcheck | |
runs-on: ubuntu-22.04 | |
continue-on-error: true | |
timeout-minutes: 5 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Shellcheck | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y shellcheck | |
- name: Lint with Shellcheck | |
run: git ls-files '*.sh' | | |
xargs -n 1 -P $(nproc) shellcheck > shellcheck-report.txt || true | |
- name: Show Shellcheck report | |
run: cat shellcheck-report.txt | |
- name: Detect Shellcheck errors | |
run: | | |
if grep -qE "error" shellcheck-report.txt; then | |
echo "Shellcheck found errors in report: shellcheck-report.txt" | |
exit 1 | |
else | |
echo "Shellcheck found no errors in report: shellcheck-report.txt" | |
fi | |
unit-and-integration-test: | |
name: Unit and Integration Tests | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Build Env | |
run: sudo ./scripts/install-build-tools.sh | |
- name: Setup Local Dependencies | |
run: ./scripts/setup-dependencies.sh | |
- name: Build | |
run: ./scripts/build.sh | |
- name: Run Unit Tests | |
run: ./scripts/test.sh | |
- name: Shorten SHA | |
id: vars | |
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
- uses: actions/upload-artifact@v4 | |
if: ${{ !env.ACT }} | |
name: Archive Test Results | |
with: | |
name: Test Results for ${{ steps.vars.outputs.sha_short }} | |
path: | | |
${{env.BUILD_DIR}}/unit_tests_coverage/output/* | |
${{env.BUILD_DIR}}/integration_tests_coverage/output/* | |
retention-days: 7 | |
doxygen: | |
name: doxygen | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Doxygen | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y doxygen graphviz | |
- name: Run Doxygen | |
run: doxygen Doxyfile | |
- name: Upload Docs artifacts | |
if: ${{ !env.ACT }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: OpenCBDC Transaction Processor docs for ${{ steps.vars.outputs.sha_short }} | |
path: ./doxygen_generated/html/* | |
retention-days: 7 |