Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 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
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.

144 changes: 144 additions & 0 deletions .github/workflows/_regression-job.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
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: Restore SeBS cache
uses: actions/cache/restore@v4
with:
path: regression-cache/
key: sebs-cache-${{ github.ref_name }}-${{ inputs.platform }}-${{ inputs.language }}-${{ inputs.version }}
restore-keys: |
sebs-cache-${{ github.ref_name }}-

- 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

- 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: cache/
if-no-files-found: ignore
Comment on lines +131 to +137
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Upload the correct cache directory in the snapshot artifact.

This workflow restores/saves regression-cache/, but snapshot upload points to cache/, so the artifact can miss the actual cache used by regression runs.

🛠️ Proposed fix
       - name: Upload cache snapshot
         if: always()
         uses: actions/upload-artifact@v4
         with:
           name: cache-snapshot-${{ inputs.platform }}-${{ inputs.language }}-${{ inputs.version }}
-          path: cache/
+          path: regression-cache/
           if-no-files-found: ignore
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/_regression-job.yml around lines 113 - 119, The "Upload
cache snapshot" step is uploading the wrong directory (path: cache/) while the
workflow restores/saves regression-cache/; update the step to upload the actual
regression cache by changing the path from "cache/" to "regression-cache/". Keep
the step name "Upload cache snapshot" and the artifact name template (name:
cache-snapshot-${{ inputs.platform }}-${{ inputs.language }}-${{ inputs.version
}}) unchanged so the snapshot contains the real regression-cache contents.
Ensure "if-no-files-found: ignore" remains to avoid failing when the directory
is absent.


- name: Save SeBS cache
if: success()
uses: actions/cache/save@v4
with:
path: regression-cache/
key: sebs-cache-${{ github.ref_name }}-${{ inputs.platform }}-${{ inputs.language }}-${{ inputs.version }}
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