|
|
name: Process CSV and Track Progress |
|
|
|
|
|
on: |
|
|
workflow_dispatch: |
|
|
inputs: |
|
|
|
|
|
JOB_INDEX: |
|
|
description: 'Job Index (0-based)' |
|
|
required: true |
|
|
default: '0' |
|
|
TOTAL_JOBS: |
|
|
description: 'Total Jobs' |
|
|
required: true |
|
|
default: '1' |
|
|
SETUP_TYPE: |
|
|
description: 'Setup Type' |
|
|
required: true |
|
|
|
|
|
|
|
|
CAPTION_STYLE: |
|
|
description: 'Caption Style' |
|
|
required: false |
|
|
|
|
|
IS_A2E_LIP_SYNC: |
|
|
description: 'Is A2E Lip Sync' |
|
|
required: false |
|
|
USE_VEO: |
|
|
description: 'Use Veo' |
|
|
required: false |
|
|
IS_ONSCREEN_CTA: |
|
|
description: 'Is Onscreen CTA' |
|
|
required: false |
|
|
|
|
|
VIDEO_GENERATION_TYPE: |
|
|
description: 'Video Generation Type (runway, grok, gemini, fal)' |
|
|
required: false |
|
|
GENERATION_COUNT: |
|
|
description: 'Generation Count' |
|
|
required: false |
|
|
USE_1X1_RATIO: |
|
|
description: 'Use 1x1 Ratio' |
|
|
required: false |
|
|
ON_SCREEN_TEXT: |
|
|
description: 'On Screen Text' |
|
|
required: false |
|
|
AI_GENERATION: |
|
|
description: 'AI Generation (True/False)' |
|
|
required: false |
|
|
VIDEO_MERGE_TYPE: |
|
|
description: 'Video Merge Type' |
|
|
required: false |
|
|
|
|
|
PRODUCT_NAME: |
|
|
description: 'Product Name' |
|
|
required: false |
|
|
PRODUCT_INFO: |
|
|
description: 'Product Info' |
|
|
required: false |
|
|
PRODUCT_VIDEO_LIBRARY_GSHEET_WORKSHEET: |
|
|
description: 'Product Video Library Worksheet' |
|
|
required: false |
|
|
|
|
|
|
|
|
GSHEET_ID: |
|
|
description: 'Google Sheet ID' |
|
|
required: true |
|
|
GSHEET_WORKSHEET_TEXT_OVERLAY: |
|
|
description: 'Text Overlay Worksheet' |
|
|
required: false |
|
|
GSHEET_WORKSHEET_TEXT_OVERLAY_COLUMN: |
|
|
description: 'Text Overlay Column' |
|
|
required: false |
|
|
VIDEO_LIBRARY_GSHEET_WORKSHEET: |
|
|
description: 'Video Library Worksheet' |
|
|
required: true |
|
|
AUDIO_LIBRARY_GSHEET_WORKSHEET: |
|
|
description: 'Audio Library Worksheet' |
|
|
required: true |
|
|
DRIVE_UPLOAD_FOLDER_ID: |
|
|
description: 'Drive Upload Folder ID (Shared Drive)' |
|
|
required: false |
|
|
CONTENT_STRATEGY_GSHEET_WORKSHEET: |
|
|
description: 'Content Strategy Worksheet' |
|
|
required: false |
|
|
|
|
|
|
|
|
GCS_BUCKET_NAME: |
|
|
description: 'GCS Bucket Name' |
|
|
required: false |
|
|
GCS_BUCKET_FOLDER_NAME: |
|
|
description: 'GCS Bucket Folder Name' |
|
|
required: false |
|
|
|
|
|
push: |
|
|
tags: |
|
|
- 'run_wip*' |
|
|
|
|
|
|
|
|
|
|
|
jobs: |
|
|
run-processor: |
|
|
runs-on: ubuntu-latest |
|
|
|
|
|
permissions: |
|
|
contents: write |
|
|
id-token: write |
|
|
|
|
|
steps: |
|
|
- name: Checkout code |
|
|
uses: actions/checkout@v4 |
|
|
with: |
|
|
token: ${{ secrets.GITHUB_TOKEN }} |
|
|
ref: feature/video-revamp |
|
|
|
|
|
- name: Set up Python |
|
|
uses: actions/setup-python@v5 |
|
|
with: |
|
|
python-version: '3.11' |
|
|
cache: pip |
|
|
|
|
|
- name: Setup FFmpeg |
|
|
uses: FedericoCarboni/setup-ffmpeg@v3 |
|
|
with: |
|
|
ffmpeg-version: release |
|
|
|
|
|
- name: Cache apt packages |
|
|
uses: awalsh128/cache-apt-pkgs-action@v1.4.3 |
|
|
with: |
|
|
packages: ffmpeg libsndfile1 libgl1 |
|
|
version: 1.0 |
|
|
|
|
|
- name: Install Python Dependencies |
|
|
run: | |
|
|
python -m pip install --upgrade pip wheel setuptools |
|
|
pip install --prefer-binary -r requirements.txt |
|
|
|
|
|
- name: Authenticate to Google Cloud - Final Data |
|
|
id: auth_final_data |
|
|
uses: google-github-actions/auth@v2 |
|
|
with: |
|
|
workload_identity_provider: 'projects/562552765087/locations/global/workloadIdentityPools/elvoro/providers/elvorogithub' |
|
|
service_account: 'elvoro@elvoro-final-videos.iam.gserviceaccount.com' |
|
|
audience: 'sts.googleapis.com' |
|
|
create_credentials_file: true |
|
|
|
|
|
- name: Save Final Data credentials |
|
|
run: | |
|
|
cp "${{ steps.auth_final_data.outputs.credentials_file_path }}" ./final-data-key.json |
|
|
echo "GCLOUD_FINAL_DATA_CREDENTIALS=./final-data-key.json" >> $GITHUB_ENV |
|
|
echo "GCP_PROJECT_FINAL=elvoro-final-videos" >> $GITHUB_ENV |
|
|
|
|
|
- name: Authenticate to Google Cloud - Test Data |
|
|
id: auth_test_data |
|
|
uses: google-github-actions/auth@v2 |
|
|
with: |
|
|
workload_identity_provider: 'projects/181713295829/locations/global/workloadIdentityPools/test-elvoro-data/providers/github' |
|
|
service_account: 'clientdata@elvoro-483807.iam.gserviceaccount.com' |
|
|
audience: 'sts.googleapis.com' |
|
|
create_credentials_file: true |
|
|
|
|
|
- name: Save Test Data credentials |
|
|
run: | |
|
|
cp "${{ steps.auth_test_data.outputs.credentials_file_path }}" ./test-data-key.json |
|
|
echo "GCLOUD_TEST_DATA_CREDENTIALS=./test-data-key.json" >> $GITHUB_ENV |
|
|
echo "GCP_PROJECT_TEST=elvoro-483807" >> $GITHUB_ENV |
|
|
|
|
|
- name: Configure Git for commits |
|
|
run: | |
|
|
git config --global user.name "github-actions[bot]" |
|
|
git config --global user.email "github-actions[bot]@users.noreply.github.com" |
|
|
|
|
|
- name: Run processor |
|
|
env: |
|
|
|
|
|
JOB_INDEX: ${{ github.event.inputs.JOB_INDEX || vars.JOB_INDEX || 0 }} |
|
|
TOTAL_JOBS: ${{ github.event.inputs.TOTAL_JOBS || vars.TOTAL_JOBS || 1 }} |
|
|
SETUP_TYPE: ${{ github.event.inputs.SETUP_TYPE || vars.SETUP_TYPE }} |
|
|
|
|
|
|
|
|
CAPTION_STYLE: ${{ github.event.inputs.CAPTION_STYLE || vars.CAPTION_STYLE }} |
|
|
CONTENT_STRATEGY_FILE: ${{ vars.CONTENT_STRATEGY_FILE }} |
|
|
IS_A2E_LIP_SYNC: ${{ github.event.inputs.IS_A2E_LIP_SYNC || vars.IS_A2E_LIP_SYNC }} |
|
|
USE_VEO: ${{ github.event.inputs.USE_VEO || vars.USE_VEO }} |
|
|
IS_ONSCREEN_CTA: ${{ github.event.inputs.IS_ONSCREEN_CTA || vars.IS_ONSCREEN_CTA }} |
|
|
DELETE_ALL_A2E_VIDEOS: ${{ vars.DELETE_ALL_A2E_VIDEOS }} |
|
|
VIDEO_GENERATION_TYPE: ${{ github.event.inputs.VIDEO_GENERATION_TYPE || vars.VIDEO_GENERATION_TYPE }} |
|
|
GENERATION_COUNT: ${{ github.event.inputs.GENERATION_COUNT || vars.GENERATION_COUNT }} |
|
|
USE_1X1_RATIO: ${{ github.event.inputs.USE_1X1_RATIO || vars.USE_1X1_RATIO }} |
|
|
ON_SCREEN_TEXT: ${{ github.event.inputs.ON_SCREEN_TEXT || vars.ON_SCREEN_TEXT }} |
|
|
AI_GENERATION: ${{ github.event.inputs.AI_GENERATION || vars.AI_GENERATION }} |
|
|
VIDEO_MERGE_TYPE: ${{ github.event.inputs.VIDEO_MERGE_TYPE || vars.VIDEO_MERGE_TYPE }} |
|
|
|
|
|
|
|
|
GSHEET_ID: ${{ github.event.inputs.GSHEET_ID || vars.GSHEET_ID }} |
|
|
GSHEET_WORKSHEET_TEXT_OVERLAY: ${{ github.event.inputs.GSHEET_WORKSHEET_TEXT_OVERLAY || vars.GSHEET_WORKSHEET_TEXT_OVERLAY }} |
|
|
GSHEET_WORKSHEET_TEXT_OVERLAY_COLUMN: ${{ github.event.inputs.GSHEET_WORKSHEET_TEXT_OVERLAY_COLUMN || vars.GSHEET_WORKSHEET_TEXT_OVERLAY_COLUMN }} |
|
|
VIDEO_LIBRARY_GSHEET_WORKSHEET: ${{ github.event.inputs.VIDEO_LIBRARY_GSHEET_WORKSHEET || vars.VIDEO_LIBRARY_GSHEET_WORKSHEET }} |
|
|
AUDIO_LIBRARY_GSHEET_WORKSHEET: ${{ github.event.inputs.AUDIO_LIBRARY_GSHEET_WORKSHEET || vars.AUDIO_LIBRARY_GSHEET_WORKSHEET }} |
|
|
DRIVE_UPLOAD_FOLDER_ID: ${{ github.event.inputs.DRIVE_UPLOAD_FOLDER_ID || vars.DRIVE_UPLOAD_FOLDER_ID }} |
|
|
CONTENT_STRATEGY_GSHEET_WORKSHEET: ${{ github.event.inputs.CONTENT_STRATEGY_GSHEET_WORKSHEET || vars.CONTENT_STRATEGY_GSHEET_WORKSHEET }} |
|
|
GCS_BUCKET_FOLDER_NAME: ${{ github.event.inputs.GCS_BUCKET_FOLDER_NAME || vars.GCS_BUCKET_FOLDER_NAME }} |
|
|
PRODUCT_NAME: ${{ github.event.inputs.PRODUCT_NAME || vars.PRODUCT_NAME }} |
|
|
PRODUCT_INFO: ${{ github.event.inputs.PRODUCT_INFO || vars.PRODUCT_INFO }} |
|
|
PRODUCT_VIDEO_LIBRARY_GSHEET_WORKSHEET: ${{ github.event.inputs.PRODUCT_VIDEO_LIBRARY_GSHEET_WORKSHEET || vars.PRODUCT_VIDEO_LIBRARY_GSHEET_WORKSHEET }} |
|
|
|
|
|
|
|
|
RUNWAY_2ND_API_KEY: ${{ secrets.RUNWAY_2ND_API_KEY }} |
|
|
RUNWAY_3RD_API_KEY: ${{ secrets.RUNWAY_3RD_API_KEY }} |
|
|
RUNWAY_4TH_API_KEY: ${{ secrets.RUNWAY_4TH_API_KEY }} |
|
|
GCS_BUCKET_NAME: ${{ github.event.inputs.GCS_BUCKET_NAME || secrets.GCS_BUCKET_NAME }} |
|
|
SPARK_KEY: ${{ secrets.SPARK_KEY }} |
|
|
A2E_API_KEY: ${{ secrets.A2E_API_KEY }} |
|
|
|
|
|
|
|
|
GOOGLE_AISTUDIO_IMAGEN_API_KEY: ${{ secrets.GOOGLE_AISTUDIO_IMAGEN_API_KEY }} |
|
|
GOOGLE_AISTUDIO_2ND_API_KEY: ${{ secrets.GOOGLE_AISTUDIO_2ND_API_KEY }} |
|
|
GOOGLE_AISTUDIO_3RD_API_KEY: ${{ secrets.GOOGLE_AISTUDIO_3RD_API_KEY }} |
|
|
GOOGLE_AI_API_KEY: ${{ secrets.GOOGLE_AI_API_KEY }} |
|
|
GOOGLE_AI_API_KEY_1: ${{ secrets.GOOGLE_AI_API_KEY_1 }} |
|
|
GOOGLE_AI_API_KEY_2: ${{ secrets.GOOGLE_AI_API_KEY_2 }} |
|
|
RUNWAYML_API_KEY: ${{ secrets.RUNWAY_API_KEY }} |
|
|
XAI_GROK_API_KEY: ${{ secrets.XAI_GROK_API_KEY }} |
|
|
ONEUP_API_KEY: ${{ secrets.ONEUP_API_KEY }} |
|
|
|
|
|
run: | |
|
|
echo "🚀 Starting Video Generation..." |
|
|
python src/main.py --verbose |