Skip to content

Commit c9c5b6f

Browse files
authored
Merge pull request #944 from sanders41/deploy
Fix production deploy workflow for fastapi
2 parents ad41a84 + c8b2a02 commit c9c5b6f

File tree

2 files changed

+71
-2
lines changed

2 files changed

+71
-2
lines changed

src/github_actions.rs

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1995,6 +1995,75 @@ jobs:
19951995
"#.to_string()
19961996
}
19971997

1998+
#[cfg(feature = "fastapi")]
1999+
fn create_production_deploy_file() -> String {
2000+
r#"name: Deploy to Production
2001+
on:
2002+
release:
2003+
types:
2004+
- published
2005+
jobs:
2006+
deploy:
2007+
runs-on:
2008+
- self-hosted
2009+
- production
2010+
env:
2011+
ENVIRONMENT: production
2012+
DOMAIN: ${{ secrets.DOMAIN_PRODUCTION }}
2013+
STACK_NAME: ${{ secrets.STACK_NAME_PRODUCTION }}
2014+
SECRET_KEY: ${{ secrets.SECRET_KEY }}
2015+
FIRST_SUPERUSER_EMAIL: ${{ secrets.FIRST_SUPERUSER_EMAIL }}
2016+
FIRST_SUPERUSER_PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}
2017+
FIRST_SUPERUSER_NAME: ${{ secrets.FIRST_SUPERUSER_NAME }}
2018+
POSTGRES_HOST: ${{ secrets.POSTGRES_HOST }}
2019+
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
2020+
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
2021+
POSTGRES_DB: ${{ secrets.POSTGRES_DB }}
2022+
VALKEY_HOST: ${{ secrets.VALKEY_HOST }}
2023+
VALKEY_PASSWORD: ${{ secrets.VALKEY_PASSWORD }}
2024+
USERNAME: ${{ secrets.FIRST_SUPERUSER_EMAIL }}
2025+
PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}
2026+
EMAIL: ${{ secrets.FIRST_SUPERUSER_EMAIL }}
2027+
LOG_LEVEL: "INFO"
2028+
steps:
2029+
- name: Fix permissions
2030+
run: |
2031+
if [ -d "./data" ]; then
2032+
sudo chown -R $USER:$USER ./data
2033+
fi
2034+
- name: Checkout
2035+
uses: actions/checkout@v5
2036+
- name: Create .env file
2037+
run: |
2038+
HASHED_PASSWORD=$(openssl passwd -apr1 "${PASSWORD}" | sed 's/\$/\$\$/g')
2039+
cat > .env << EOF
2040+
ENVIRONMENT=${ENVIRONMENT}
2041+
DOMAIN=${DOMAIN}
2042+
STACK_NAME=${STACK_NAME}
2043+
SECRET_KEY=${SECRET_KEY}
2044+
FIRST_SUPERUSER_EMAIL=${FIRST_SUPERUSER_EMAIL}
2045+
FIRST_SUPERUSER_PASSWORD=${FIRST_SUPERUSER_PASSWORD}
2046+
FIRST_SUPERUSER_NAME=${FIRST_SUPERUSER_NAME}
2047+
POSTGRES_HOST=${POSTGRES_HOST}
2048+
POSTGRES_USER=${POSTGRES_USER}
2049+
POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
2050+
POSTGRES_DB=${POSTGRES_DB}
2051+
VALKEY_HOST=${VALKEY_HOST}
2052+
VALKEY_PASSWORD=${VALKEY_PASSWORD}
2053+
USERNAME=${FIRST_SUPERUSER_EMAIL}
2054+
PASSWORD=${FIRST_SUPERUSER_PASSWORD}
2055+
HASHED_PASSWORD=${HASHED_PASSWORD}
2056+
EMAIL=${FIRST_SUPERUSER_EMAIL}
2057+
LOG_LEVEL=${LOG_LEVEL}
2058+
EOF
2059+
- name: Build and restart containers
2060+
timeout-minutes: 15
2061+
run: |
2062+
docker compose -f docker-compose.yml --project-name ${{ secrets.STACK_NAME_PRODUCTION }} build
2063+
docker compose -f docker-compose.yml --project-name ${{ secrets.STACK_NAME_PRODUCTION }} up -d
2064+
"#.to_string()
2065+
}
2066+
19982067
#[cfg(feature = "fastapi")]
19992068
pub fn save_deploy_files(project_info: &ProjectInfo) -> Result<()> {
20002069
let testing_file_path = project_info
@@ -2007,7 +2076,7 @@ pub fn save_deploy_files(project_info: &ProjectInfo) -> Result<()> {
20072076
let production_file_path = project_info
20082077
.base_dir()
20092078
.join(".github/workflows/deploy_production.yml");
2010-
let production_content = create_testing_deploy_file();
2079+
let production_content = create_production_deploy_file();
20112080

20122081
save_file_with_content(&production_file_path, &production_content)?;
20132082

src/snapshots/python_project__github_actions__tests__save_deploy_files-2.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
source: src/github_actions.rs
33
expression: production_content
44
---
5-
"name: Deploy to Testing\non:\n push:\n branches:\n - main\n workflow_dispatch:\njobs:\n deploy:\n runs-on:\n - self-hosted\n - testing\n env:\n ENVIRONMENT: testing\n DOMAIN: ${{ secrets.DOMAIN_TESTING }}\n STACK_NAME: ${{ secrets.STACK_NAME_TESTING }}\n SECRET_KEY: ${{ secrets.SECRET_KEY }}\n FIRST_SUPERUSER_EMAIL: ${{ secrets.FIRST_SUPERUSER_EMAIL }}\n FIRST_SUPERUSER_PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}\n FIRST_SUPERUSER_NAME: ${{ secrets.FIRST_SUPERUSER_NAME }}\n POSTGRES_HOST: ${{ secrets.POSTGRES_HOST }}\n POSTGRES_USER: ${{ secrets.POSTGRES_USER }}\n POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}\n POSTGRES_DB: ${{ secrets.POSTGRES_DB }}\n VALKEY_HOST: ${{ secrets.VALKEY_HOST }}\n VALKEY_PASSWORD: ${{ secrets.VALKEY_PASSWORD }}\n HANDWRITING_OCR_TOKEN: ${{ secrets.HANDWRITING_OCR_TOKEN }}\n USERNAME: ${{ secrets.FIRST_SUPERUSER_EMAIL }}\n PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}\n EMAIL: ${{ secrets.FIRST_SUPERUSER_EMAIL }}\n ERROR_NOTIFICATION_URL: ${{ secrets.ERROR_NOTIFICATION_URL_TESTING }}\n LOG_LEVEL: \"DEBUG\"\n steps:\n - name: Fix permissions\n run: |\n if [ -d \"./data\" ]; then\n sudo chown -R $USER:$USER ./data\n fi\n - name: Checkout\n uses: actions/checkout@v5\n - name: Create .env file\n run: |\n HASHED_PASSWORD=$(openssl passwd -apr1 \"${PASSWORD}\" | sed 's/\\$/\\$\\$/g')\n cat > .env << EOF\n ENVIRONMENT=${ENVIRONMENT}\n DOMAIN=${DOMAIN}\n STACK_NAME=${STACK_NAME}\n SECRET_KEY=${SECRET_KEY}\n FIRST_SUPERUSER_EMAIL=${FIRST_SUPERUSER_EMAIL}\n FIRST_SUPERUSER_PASSWORD=${FIRST_SUPERUSER_PASSWORD}\n FIRST_SUPERUSER_NAME=${FIRST_SUPERUSER_NAME}\n POSTGRES_HOST=${POSTGRES_HOST}\n POSTGRES_USER=${POSTGRES_USER}\n POSTGRES_PASSWORD=${POSTGRES_PASSWORD}\n POSTGRES_DB=${POSTGRES_DB}\n VALKEY_HOST=${VALKEY_HOST}\n VALKEY_PASSWORD=${VALKEY_PASSWORD}\n HANDWRITING_OCR_TOKEN=${HANDWRITING_OCR_TOKEN}\n USERNAME=${FIRST_SUPERUSER_EMAIL}\n PASSWORD=${FIRST_SUPERUSER_PASSWORD}\n HASHED_PASSWORD=${HASHED_PASSWORD}\n EMAIL=${FIRST_SUPERUSER_EMAIL}\n ERROR_NOTIFICATION_URL=${ERROR_NOTIFICATION_URL}\n LOG_LEVEL=${LOG_LEVEL}\n EOF\n - name: Build and restart containers\n timeout-minutes: 15\n run: |\n docker compose -f docker-compose.yml --project-name ${{ secrets.STACK_NAME_TESTING }} build\n docker compose -f docker-compose.yml --project-name ${{ secrets.STACK_NAME_TESTING }} up -d\n"
5+
"name: Deploy to Production\non:\n release:\n types:\n - published\njobs:\n deploy:\n runs-on:\n - self-hosted\n - production\n env:\n ENVIRONMENT: production\n DOMAIN: ${{ secrets.DOMAIN_PRODUCTION }}\n STACK_NAME: ${{ secrets.STACK_NAME_PRODUCTION }}\n SECRET_KEY: ${{ secrets.SECRET_KEY }}\n FIRST_SUPERUSER_EMAIL: ${{ secrets.FIRST_SUPERUSER_EMAIL }}\n FIRST_SUPERUSER_PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}\n FIRST_SUPERUSER_NAME: ${{ secrets.FIRST_SUPERUSER_NAME }}\n POSTGRES_HOST: ${{ secrets.POSTGRES_HOST }}\n POSTGRES_USER: ${{ secrets.POSTGRES_USER }}\n POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}\n POSTGRES_DB: ${{ secrets.POSTGRES_DB }}\n VALKEY_HOST: ${{ secrets.VALKEY_HOST }}\n VALKEY_PASSWORD: ${{ secrets.VALKEY_PASSWORD }}\n USERNAME: ${{ secrets.FIRST_SUPERUSER_EMAIL }}\n PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}\n EMAIL: ${{ secrets.FIRST_SUPERUSER_EMAIL }}\n LOG_LEVEL: \"INFO\"\n steps:\n - name: Fix permissions\n run: |\n if [ -d \"./data\" ]; then\n sudo chown -R $USER:$USER ./data\n fi\n - name: Checkout\n uses: actions/checkout@v5\n - name: Create .env file\n run: |\n HASHED_PASSWORD=$(openssl passwd -apr1 \"${PASSWORD}\" | sed 's/\\$/\\$\\$/g')\n cat > .env << EOF\n ENVIRONMENT=${ENVIRONMENT}\n DOMAIN=${DOMAIN}\n STACK_NAME=${STACK_NAME}\n SECRET_KEY=${SECRET_KEY}\n FIRST_SUPERUSER_EMAIL=${FIRST_SUPERUSER_EMAIL}\n FIRST_SUPERUSER_PASSWORD=${FIRST_SUPERUSER_PASSWORD}\n FIRST_SUPERUSER_NAME=${FIRST_SUPERUSER_NAME}\n POSTGRES_HOST=${POSTGRES_HOST}\n POSTGRES_USER=${POSTGRES_USER}\n POSTGRES_PASSWORD=${POSTGRES_PASSWORD}\n POSTGRES_DB=${POSTGRES_DB}\n VALKEY_HOST=${VALKEY_HOST}\n VALKEY_PASSWORD=${VALKEY_PASSWORD}\n USERNAME=${FIRST_SUPERUSER_EMAIL}\n PASSWORD=${FIRST_SUPERUSER_PASSWORD}\n HASHED_PASSWORD=${HASHED_PASSWORD}\n EMAIL=${FIRST_SUPERUSER_EMAIL}\n LOG_LEVEL=${LOG_LEVEL}\n EOF\n - name: Build and restart containers\n timeout-minutes: 15\n run: |\n docker compose -f docker-compose.yml --project-name ${{ secrets.STACK_NAME_PRODUCTION }} build\n docker compose -f docker-compose.yml --project-name ${{ secrets.STACK_NAME_PRODUCTION }} up -d\n"

0 commit comments

Comments
 (0)