Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
53 changes: 53 additions & 0 deletions .github/ISSUE_TEMPLATE/release-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: "Release Request"
description: "Request a deployment by specifying the evaluation function, changes, target commit/branch, and test confirmation."
title: "Release Request"
labels:
- release
- deployment
assignees: []
body:
- type: textarea
id: description_of_changes
attributes:
label: Description of changes
description: "Summarize what is changing and why. Include links to PRs, issues, or changelogs."
placeholder: |
- What changed:
- Why:
- Related PRs/Issues: #123, #456
render: markdown
validations:
required: true

- type: input
id: branch_to_deploy
attributes:
label: Branch to deploy
description: |
Specify Branch name to deploy.
placeholder: "e.g., release/2025-09-29"
validations:
required: true

- type: dropdown
id: version-bump
attributes:
label: "🚀 What kind of update is this?"
description: "Tell us how significant this change is. This helps us set the correct new version number."
options:
- "Patch: A small fix for a bug. It won't break anything for existing users. (e.g., 1.2.3 ➔ 1.2.4)"
- "Minor: Adds a new feature, but doesn't change how existing ones work. A safe update. (e.g., 1.2.3 ➔ 1.3.0)"
- "Major: A big change that alters existing features. Users may need to update their work to adapt. (e.g., 1.2.3 ➔ 2.0.0)"
default: 0
validations:
required: true

- type: markdown
attributes:
value: |
---
### ⚡ Click the Link Below to Run the Workflow
Clicking the link will take you to the Actions page. You will need to click the **"Run workflow"** button there to start the process.
## [➡️ Go to Workflow Run Page](../actions/workflows/production-deploy.yml)
105 changes: 0 additions & 105 deletions .github/workflows/deploy.yml

This file was deleted.

49 changes: 49 additions & 0 deletions .github/workflows/pre_production_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Run Pre-Production Validation Tests

on:
workflow_dispatch:
inputs:
eval_function:
type: string
description: "The name of the evaluation function to test"
required: true
sql_limit:
type: number
description: "The maximum number of SQL test cases to run"
required: false
default: 500
seed:
type: string
description: "Random seed for reproducible sampling (float in [-1.0, 1.0]). Leave blank to auto-generate."
required: false
default: ''
request_delay:
type: string
description: "Delay (seconds) between dispatching requests"
required: false
default: '0'
max_concurrency:
type: string
description: "Max concurrent requests (lower for GPT-backed functions)"
required: false
default: '5'

jobs:
run-pre-production-tests:
name: 🧪 Run Staging Validation Tests
uses: lambda-feedback/Database-Testing/.github/workflows/test_evaluation_function.yml@main
with:
eval_function: ${{ inputs.eval_function }}
sql_limit: ${{ inputs.sql_limit }}
seed: ${{ inputs.seed }}
request_delay: ${{ inputs.request_delay }}
max_concurrency: ${{ inputs.max_concurrency }}
secrets:
TEST_API_ENDPOINT: ${{ secrets.TEST_API_ENDPOINT }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
DB_HOST: ${{ secrets.DB_HOST }}
DB_PORT: ${{ secrets.DB_PORT }}
DB_NAME: ${{ secrets.DB_NAME }}
GCP_SERVICE_ACCOUNT_KEY: ${{ secrets.GCP_DB_CREDS }}
GCP_PROJECT_ID: ${{ secrets.GCP_DB_PROJECT_ID }}
60 changes: 60 additions & 0 deletions .github/workflows/production-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Deploy to Production

on:
workflow_dispatch:
inputs:
version-bump:
description: 'Version bump type'
required: true
type: choice
options:
- patch
- minor
- major
default: patch
branch:
description: 'Branch to release from'
required: true
type: string
default: 'main'
seed:
description: 'Random seed for reproducible sampling (float in [-1.0, 1.0]). Leave blank to auto-generate.'
required: false
type: string
default: ''
request_delay:
description: 'Delay (seconds) between dispatching requests'
required: false
type: string
default: '0'
max_concurrency:
description: 'Max concurrent requests (lower for GPT-backed functions)'
required: false
type: string
default: '5'
jobs:
deploy:
uses: lambda-feedback/evaluation-function-workflows/.github/workflows/deploy.yml@main
with:
template-repository-name: 'lambda-feedback/evaluation-function-boilerplate-python'
environment: "production"
version-bump: ${{ inputs.version-bump }}
branch: ${{ inputs.branch }}
run-database-tests: false
seed: ${{ inputs.seed }}
request_delay: ${{ inputs.request_delay }}
max_concurrency: ${{ inputs.max_concurrency }}

secrets:
aws-key-id: ${{ secrets.LAMBDA_CONTAINER_PIPELINE_AWS_ID }}
aws-secret-key: ${{ secrets.LAMBDA_CONTAINER_PIPELINE_AWS_SECRET}}
function-admin-api-key: ${{ secrets.FUNCTION_ADMIN_API_KEY}}
gcp_credentials: ${{ secrets.GCP_DEPLOY }}
TEST_API_ENDPOINT: ${{ secrets.TEST_API_ENDPOINT }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
DB_HOST: ${{ secrets.DB_HOST }}
DB_PORT: ${{ secrets.DB_PORT }}
DB_NAME: ${{ secrets.DB_NAME }}
GCP_DB_CREDS: ${{ secrets.GCP_DB_CREDS }}
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
65 changes: 65 additions & 0 deletions .github/workflows/staging-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Deploy to Staging

on:
push:
branches:
- main
workflow_dispatch:

jobs:
test:
name: Test
runs-on: ubuntu-latest
permissions:
contents: read
actions: read
checks: write
pull-requests: write
strategy:
fail-fast: false
matrix:
python-version: ["3.12"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
id: python-setup
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install Poetry
run: pip install poetry

- name: Install dependencies
run: poetry install

- name: Lint with flake8
run: |
poetry run flake8 ./evaluation_function --count --select=E9,F63,F7,F82 --show-source --statistics
poetry run flake8 ./evaluation_function --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

- name: Run tests
if: always()
run: poetry run pytest --junit-xml=./reports/pytest.xml --tb=auto -v

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-${{ matrix.python-version }}
path: ./reports/pytest.xml
if-no-files-found: warn
deploy:
needs: test
uses: lambda-feedback/evaluation-function-workflows/.github/workflows/deploy.yml@main
with:
template-repository-name: "lambda-feedback/evaluation-function-boilerplate-python"
build-platforms: "aws"
environment: "staging"
lfs: false
secrets:
aws-key-id: ${{ secrets.LAMBDA_CONTAINER_PIPELINE_AWS_ID }}
aws-secret-key: ${{ secrets.LAMBDA_CONTAINER_PIPELINE_AWS_SECRET}}
function-admin-api-key: ${{ secrets.FUNCTION_ADMIN_API_KEY}}
gcp_credentials: ${{ secrets.GCP_DEPLOY }}
49 changes: 49 additions & 0 deletions .github/workflows/test-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Test and Lint

on:
pull_request:

jobs:
test:
name: Test
runs-on: ubuntu-latest
permissions:
contents: read
actions: read
checks: write
pull-requests: write
strategy:
fail-fast: false
matrix:
python-version: ["3.12"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
id: python-setup
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install Poetry
run: pip install poetry

- name: Install dependencies
run: poetry install

- name: Lint with flake8
run: |
poetry run flake8 ./evaluation_function --count --select=E9,F63,F7,F82 --show-source --statistics
poetry run flake8 ./evaluation_function --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

- name: Run tests
if: always()
run: poetry run pytest --junit-xml=./reports/pytest.xml --tb=auto -v

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-${{ matrix.python-version }}
path: ./reports/pytest.xml
if-no-files-found: warn
Loading
Loading