Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
2d8817d
[regression] Multiple bug fixes
mcopik Mar 17, 2026
7cbc681
[ci] Update test job
mcopik Mar 17, 2026
eb4d0e0
[ci] Update test job
mcopik Mar 17, 2026
2b19309
[ci] Enable CI job on feature branches
mcopik Mar 17, 2026
09a350c
[ci] Fix CI command
mcopik Mar 17, 2026
e9185a1
[ci] Fix CI command
mcopik Mar 17, 2026
5334168
[regression] Non-zero return from failed registration
mcopik Mar 17, 2026
1fac84b
[aws] Remove unnecessary pkg_resources from container
mcopik Mar 17, 2026
a0d82f2
[ci] Fixes
mcopik Mar 17, 2026
7454aac
[ci] Migrate from CircleCI to GH Actions
mcopik Apr 15, 2026
62a6f31
[ci] Fixes
mcopik Apr 15, 2026
6615792
[dev] Linting
mcopik Apr 15, 2026
6340049
[dev] Update install in GH Actions
mcopik Apr 16, 2026
bd8d6e1
[aws] Reenable regression of 411 for containers
mcopik Apr 16, 2026
96ace65
[ci] Remove the old Docker copy feature needed on CircleCI
mcopik Apr 16, 2026
eb4f3bc
[ci] Ensure benchmarks data is cloned
mcopik Apr 16, 2026
3ed8812
[aws][ci] Shorten function names
mcopik Apr 16, 2026
62f437c
[aws] Fix functio nanem splitting
mcopik Apr 16, 2026
745cdd7
[docker] Ensure that failed builds are not marked as success
mcopik Apr 16, 2026
478428e
[system] Add explicit printing of full build log
mcopik Apr 16, 2026
6ac1184
[docker] Print full output of pip install
mcopik Apr 16, 2026
2983b21
[docker] Support fallback to previous version of Docker image
mcopik Apr 16, 2026
a569837
[benchmarks] Fix 504 compatibility issues on Python 3.11 and older glibc
mcopik Apr 16, 2026
2fe6edf
[aws] Debugging for regression runs
mcopik Apr 16, 2026
11c96a3
[benchmarks] Ensure that we always put correct path to 311 benchmark
mcopik Apr 16, 2026
3fa215d
[system] Bump current version
mcopik Apr 16, 2026
483b016
[ci] Simplify resource naming
mcopik Apr 16, 2026
fdd7639
[ci] Add Nodejs builds
mcopik Apr 16, 2026
75d5fee
[ci] Update badges
mcopik Apr 16, 2026
f0948f0
[ci] Cleanup functions once we are done
mcopik Apr 16, 2026
dbbf677
[ci] Enable GCP and Azure
mcopik Apr 16, 2026
9d8b39a
[system] Update default architecture
mcopik Apr 16, 2026
9339236
[ci] Add arm64 runs
mcopik Apr 16, 2026
4b1a07e
[ci] Try to fix GCP credentials
mcopik Apr 16, 2026
ffee6d4
[ci] Fix
mcopik Apr 16, 2026
ef681b0
[ci] Bump GCP node version
mcopik Apr 16, 2026
b9ff872
[ci] Use ARM runners
mcopik Apr 16, 2026
1214044
[ci] Fix typo in Azure creds
mcopik Apr 16, 2026
307e6aa
[system] Support building multi-platform images
mcopik Apr 16, 2026
921f5b6
[docs] Update docs on container images
mcopik Apr 16, 2026
106ece6
[gcp] Tolerate 503 errors
mcopik Apr 16, 2026
c6f5101
[gcp] Add public access to all functions
mcopik Apr 16, 2026
5a1f9fa
[ci] Extend timeout to handle Azure
mcopik Apr 16, 2026
7a8bfb9
[azure] Ensure that regression always logs in
mcopik Apr 16, 2026
b4a34b5
[docs] Update config paths
mcopik Apr 16, 2026
55adc37
[aws] Extend build image to arm64 compatibility
mcopik Apr 16, 2026
5e3400a
[system] Proper build of multi-platform images
mcopik Apr 16, 2026
54bc65a
[aws] Update Node.js build image for arm
mcopik Apr 16, 2026
31a775d
[aws] Properly cleanup function resources
mcopik Apr 17, 2026
7bb7e4a
[gcp] Delete functions
mcopik Apr 17, 2026
3567ac5
[aws] Proper cleaning of function URLs
mcopik Apr 17, 2026
379942f
[azure] Add function deletion option
mcopik Apr 17, 2026
f56f858
[ci] More langues
mcopik Apr 17, 2026
2f6c67e
[aws] Update Java build image for arm64
mcopik Apr 17, 2026
7c4418b
[system] Add language variants for Java and Cpp
mcopik Apr 17, 2026
01529c0
[cpp][aws] Support fallback to dependency images from previous release
mcopik Apr 17, 2026
8cf2d2c
[aws] Build multi-platform images for Java
mcopik Apr 17, 2026
fca1c94
[aws] Fix multi-platform images for Java
mcopik Apr 17, 2026
436a91a
[cpp] Fall back to previous release image for container builds
mcopik Apr 17, 2026
4f00689
[cpp] More fall back
mcopik Apr 17, 2026
711bc4a
[azure] Add the check for existing storage accounts
mcopik Apr 17, 2026
094d4e2
[ci] Try to correctly clean up functions
mcopik Apr 17, 2026
643f5c0
[ci] Dump all the caches - we should retrieve cloud resources on ever…
mcopik Apr 17, 2026
9e4518b
[azure] Additional exception handling for malformed CLI output
mcopik Apr 17, 2026
dc51bbd
[dev] Linting
mcopik Apr 17, 2026
f841cc0
[aws] Additional handling for partially broken cold starts.
mcopik Apr 17, 2026
fb61c87
[azure] Extra debugging
mcopik Apr 17, 2026
9d18d6b
[gcp] First attempt to introduce back-off for all GCP ops
mcopik Apr 17, 2026
c4f1a74
[aws] Fix wrong parameter
mcopik Apr 17, 2026
6b5804c
[dev] Linting
mcopik Apr 17, 2026
75cb235
[gcp] Additional checks for propagation of triggers
mcopik Apr 17, 2026
5a7d2ce
[azure] retries for azure publish
mcopik Apr 17, 2026
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
88 changes: 0 additions & 88 deletions .circleci/config.yml

This file was deleted.

131 changes: 131 additions & 0 deletions .github/workflows/_regression-job.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
name: Regression Job (Reusable)

on:
workflow_call:
inputs:
platform:
required: true
type: string
language:
required: true
type: string
version:
required: true
type: string
architecture:
required: true
type: string

jobs:
test:
runs-on: ${{ inputs.architecture == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}

env:
RESOURCE_PREFIX: ci

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive

- name: Setup GCP credentials
if: inputs.platform == 'gcp'
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SERVICE_ACCOUNT_JSON }}

- name: Setup Azure credentials
if: inputs.platform == 'azure'
run: |
echo "AZURE_SECRET_APPLICATION_ID=${{ secrets.AZURE_SECRET_APPLICATION_ID }}" >> $GITHUB_ENV
echo "AZURE_SECRET_TENANT=${{ secrets.AZURE_SECRET_TENANT }}" >> $GITHUB_ENV
echo "AZURE_SECRET_PASSWORD=${{ secrets.AZURE_SECRET_PASSWORD }}" >> $GITHUB_ENV

- name: Setup AWS credentials
if: inputs.platform == 'aws'
run: |
echo "AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}" >> $GITHUB_ENV
echo "AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> $GITHUB_ENV
echo "AWS_DEFAULT_REGION=${{ secrets.AWS_DEFAULT_REGION || 'us-east-1' }}" >> $GITHUB_ENV

- name: Install uv
uses: astral-sh/setup-uv@v4

- name: Create virtual environment and install SeBS
run: |
uv venv
uv pip install .

- name: Run regression tests
timeout-minutes: 10
run: |
source .venv/bin/activate
uv run sebs benchmark regression test \
--config configs/example.json \
--deployment ${{ inputs.platform }} \
--language ${{ inputs.language }} \
--language-version ${{ inputs.version }} \
--architecture ${{ inputs.architecture }} \
--selected-architecture \
--resource-prefix ci

- name: Cleanup deployed functions
if: always()
run: |
source .venv/bin/activate
uv run sebs resources cleanup \
--config configs/example.json \
--deployment ${{ inputs.platform }} \
--resource-prefix ci \
--resource-type functions \
--cache regression-cache

- name: Generate test summary
if: always()
run: |
echo "Regression Test Summary" > test-summary.txt
echo "======================" >> test-summary.txt
echo "Platform: ${{ inputs.platform }}" >> test-summary.txt
echo "Language: ${{ inputs.language }}" >> test-summary.txt
echo "Version: ${{ inputs.version }}" >> test-summary.txt
echo "" >> test-summary.txt
if ls regression_*.json 1> /dev/null 2>&1; then
ls -1 regression_*.json | wc -l | xargs echo "Benchmarks tested:" >> test-summary.txt
echo "" >> test-summary.txt
echo "Results saved to artifacts/results/" >> test-summary.txt
else
echo "No benchmark results found" >> test-summary.txt
fi

- name: Upload test summary
if: always()
uses: actions/upload-artifact@v4
with:
name: test-summary-${{ inputs.platform }}-${{ inputs.language }}-${{ inputs.version }}
path: test-summary.txt

- name: Collect and upload regression results
if: always()
run: |
mkdir -p results
if ls regression_*.json 1> /dev/null 2>&1; then
mv regression_*.json results/ || true
fi

- name: Upload regression results
if: always()
uses: actions/upload-artifact@v4
with:
name: results-${{ inputs.platform }}-${{ inputs.language }}-${{ inputs.version }}
path: results/
if-no-files-found: ignore

- name: Upload cache snapshot
if: always()
uses: actions/upload-artifact@v4
with:
name: cache-snapshot-${{ inputs.platform }}-${{ inputs.language }}-${{ inputs.version }}
path: regression-cache/
if-no-files-found: ignore
Comment thread
coderabbitai[bot] marked this conversation as resolved.

55 changes: 55 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Lint

on:
push:
pull_request:
workflow_dispatch:

jobs:
linting:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install uv
uses: astral-sh/setup-uv@v4

- name: Install system dependencies
run: sudo apt update && sudo apt install -y libcurl4-openssl-dev

- name: Cache uv dependencies
uses: actions/cache@v4
with:
path: ~/.cache/uv
key: uv-${{ runner.os }}-${{ hashFiles('requirements.txt', 'pyproject.toml') }}
restore-keys: |
uv-${{ runner.os }}-

- name: Install SeBS with dev dependencies
run: uv sync --extra dev

- name: Python code formatting with black
run: uv run black sebs --check --config .black.toml

- name: Python code lint with flake8
run: uv run flake8 sebs --config=.flake8.cfg --tee --output-file flake-reports

- name: Python static code verification with mypy
run: uv run mypy sebs --config-file=.mypy.ini

- name: Check for Python documentation coverage
run: uv run interrogate -v --fail-under 100 sebs

- name: Upload flake8 reports
if: always()
uses: actions/upload-artifact@v4
with:
name: flake-reports
path: flake-reports
75 changes: 75 additions & 0 deletions .github/workflows/regression.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Regression Tests

on:
push:
branches:
- master
- 'feature/**'
workflow_dispatch:

jobs:
regression:
strategy:
matrix:
include:
- platform: aws
language: python
version: "3.11"
architecture: "x64"
- platform: aws
language: python
version: "3.11"
architecture: "arm64"
- platform: aws
language: nodejs
version: "16"
architecture: "x64"
- platform: aws
language: nodejs
version: "16"
architecture: "arm64"
- platform: aws
language: cpp
version: "all"
architecture: "x64"
- platform: aws
language: java
version: "17"
architecture: "x64"
- platform: aws
language: java
version: "17"
architecture: "arm64"
- platform: gcp
language: python
version: "3.11"
architecture: "x64"
- platform: gcp
language: nodejs
version: "20"
architecture: "x64"
- platform: gcp
language: java
version: "17"
architecture: "x64"
- platform: azure
language: python
version: "3.11"
architecture: "x64"
- platform: azure
language: nodejs
version: "20"
architecture: "x64"
- platform: azure
language: java
version: "17"
architecture: "x64"
fail-fast: false

uses: ./.github/workflows/_regression-job.yml
with:
platform: ${{ matrix.platform }}
language: ${{ matrix.language }}
version: ${{ matrix.version }}
architecture: ${{ matrix.architecture }}
secrets: inherit
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

[![CircleCI](https://circleci.com/gh/spcl/serverless-benchmarks.svg?style=shield)](https://circleci.com/gh/spcl/serverless-benchmarks)
[![Code Linting](https://github.com/spcl/serverless-benchmarks/actions/workflows/lint.yml/badge.svg)](https://github.com/spcl/serverless-benchmarks/actions)
[![Regression](https://github.com/spcl/serverless-benchmarks/actions/workflows/regression.yml/badge.svg)](https://github.com/spcl/serverless-benchmarks/actions)
[![Documentation Status](https://readthedocs.org/projects/sebs/badge/?version=latest)](https://sebs.readthedocs.io/en/latest/?badge=latest)
![Release](https://img.shields.io/github/v/release/spcl/serverless-benchmarks)
![License](https://img.shields.io/github/license/spcl/serverless-benchmarks)
Expand Down
Loading
Loading