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
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)
44 changes: 44 additions & 0 deletions .github/workflows/production-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
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'
jobs:
deploy:
uses: lambda-feedback/evaluation-function-workflows/.github/workflows/deploy.yml@deploy-request
with:
template-repository-name: 'lambda-feedback/evaluation-function-boilerplate-python'
build-file: "app/Dockerfile"
build-context: "./app"
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 }}
GCP_DB_CREDS: ${{ secrets.GCP_DB_CREDS }}
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
76 changes: 76 additions & 0 deletions .github/workflows/staging-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Deploy to Staging

on:
push:
branches:
- main
pull_request:
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.8"]
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 dependencies
run: |
python -m venv .venv
.venv/bin/pip install pytest
.venv/bin/pip install -r app/requirements.txt

# 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-${{ 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@deploy-request
with:
template-repository-name: "lambda-feedback/evaluation-function-boilerplate-python"
build-file: "app/Dockerfile"
build-context: "./app"
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 }}
194 changes: 0 additions & 194 deletions .github/workflows/test-and-deploy.yml

This file was deleted.

4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ For more information, look at the docs [here](https://lambda-feedback.github.io/

This version is specifically for python, however the ultimate goal is to make similar boilerplate repositories in any language, allowing tutors the freedom to code in what they feel most comfortable with.

## Deployment
[![Create Release Request](https://img.shields.io/badge/Create%20Release%20Request-blue?style=for-the-badge)](https://github.com/lambda-feedback/compareExpressions/issues/new?template=release-request.yml)


### Getting Started

1. Clone this repository
Expand Down
Loading