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)
18 changes: 0 additions & 18 deletions .github/workflows/build.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 }}
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
name: Deploy to Lambda Feedback
name: Deploy to Staging

on:
push:
branches:
- main
- master
workflow_dispatch:

jobs:
deploy:
uses: lambda-feedback/evaluation-function-workflows/.github/workflows/deploy.yml@main
with:
template-repository-name: 'lambda-feedback/evaluation-function-boilerplate-wolfram'
build-platforms: 'gcp'
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}}
Expand Down
15 changes: 4 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

This repository contains the boilerplate code needed to create a containerized evaluation function written in Wolfram Language.

## Deployment
[![Create Release Request](https://img.shields.io/badge/Create%20Release%20Request-blue?style=for-the-badge)](https://github.com/lambda-feedback/{REPO_NAME_HERE}/issues/new?template=release-request.yml)
To deploy to production, update the README button above to point to the correct repository.

## Quickstart

This chapter helps you to quickly set up a new Wolfram evaluation function using this template repository.
Expand Down Expand Up @@ -126,17 +130,6 @@ shimmy -c "wolframscript" -a "-f" -a "evaluation_function.wl" -i file
- [Wolfram Engine](https://www.wolfram.com/engine/)
- [Wolfram Engine License](#development-license)

### Repository Structure

```bash
.github/workflows/
build.yml # builds the public evaluation function image
deploy.yml # deploys the evaluation function to Lambda Feedback

evaluation_function.wl # evaluation function source code

config.json # evaluation function deployment configuration file
```

### Development Workflow

Expand Down