Skip to content
Merged
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
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
blank_issues_enabled: false
contact_links: []
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)
7 changes: 5 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ jobs:
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: true
- name: pull lfs files
run: git lfs pull

- name: Set up Python ${{ matrix.python-version }}
id: python-setup
Expand Down Expand Up @@ -88,13 +91,13 @@ jobs:
contents: read
id-token: write
packages: write

deploy:
name: Deploy to Lambda Feedback
uses: lambda-feedback/evaluation-function-workflows/.github/workflows/deploy.yml@main
needs: test
with:
template-repository-name: "lambda-feedback/evaluation-function-boilerplate-wolfram"
template-repository-name: "lambda-feedback/evaluation-function-boilerplate-python"
permissions:
contents: read
id-token: write
Expand Down
40 changes: 40 additions & 0 deletions .github/workflows/production-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Deploy Production Version to Lambda Feedback

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'
jobs:
deploy:
uses: lambda-feedback/evaluation-function-workflows/.github/workflows/deploy.yml@deploy-request
with:
template-repository-name: 'lambda-feedback/evaluation-function-boilerplate-wolfram'
environment: "production"
version-bump: ${{ inputs.version-bump }}
branch: ${{ inputs.branch }}
run-tests: true

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 }}
98 changes: 98 additions & 0 deletions .github/workflows/staging-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: Deploy to Lambda Feedback

on:
push:
branches:
- main
- master
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
with:
fetch-depth: 0
lfs: true
- name: pull lfs files
run: git lfs pull
- name: Verify LFS files
run: git lfs ls-files
- name: Set up Python ${{ matrix.python-version }}
id: python-setup
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Load cached Poetry installation
id: poetry-cache
uses: actions/cache@v4
with:
path: ~/.local
key: poetry-0

- name: Install and configure Poetry
if: steps.poetry-cache.outputs.cache-hit != 'true'
uses: snok/install-poetry@v1
with:
virtualenvs-in-project: true

- name: Load cached venv
id: dependencies-cache
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.python-setup.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}

- name: Install dependencies
if: steps.dependencies-cache.outputs.cache-hit != 'true'
run: |
poetry install --with dev --no-interaction --no-root

# TODO: add linting / black / flake8
# - name: Lint with flake8
# run: |
# source .venv/bin/activate
# # stop the build if there are Python syntax errors or undefined names
# flake8 ./evaluation_function --count --select=E9,F63,F7,F82 --show-source --statistics
# # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
# flake8 ./evaluation_function --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

- name: Run tests
if: always()
run: |
source .venv/bin/activate
pytest --junit-xml=./reports/pytest.xml --tb=auto -v

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
path: ./reports/pytest.xml
if-no-files-found: warn
deploy:
needs: test
uses: lambda-feedback/evaluation-function-workflows/.github/workflows/deploy.yml@deploy-request
with:
template-repository-name: "lambda-feedback/evaluation-function-boilerplate-python"
build-platforms: "aws"
environment: "staging"
lfs: true
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 }}
Loading