obs-studio/.github/workflows/dispatch.yaml
2024-05-02 16:40:09 -04:00

152 lines
5 KiB
YAML

name: Dispatch
run-name: Dispatched Repository Actions - ${{ inputs.job }} ⌛️
on:
workflow_dispatch:
inputs:
job:
description: Dispatch job to run
required: true
type: choice
options:
- steam
- services
- translations
- documentation
- patches
ref:
description: GitHub reference to use for job
type: string
required: false
customAssetWindows:
description: Custom Windows build for Steam Upload
type: string
required: false
customAssetMacOSApple:
description: Custom macOS Apple Silicon build for Steam Upload
type: string
required: false
customAssetMacOSIntel:
description: Custom macOS Intel build for Steam Upload
type: string
required: false
channel:
description: Channel to use when generating Windows update files
type: string
required: false
permissions:
contents: write
jobs:
services-validation:
name: Validate Services 🕵️
if: github.repository_owner == 'obsproject' && inputs.job == 'services'
runs-on: macos-14
permissions:
checks: write
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Check for Defunct Services 📉
uses: ./.github/actions/services-validator
with:
repositorySecret: ${{ secrets.GITHUB_TOKEN }}
checkApiSecret: ${{ secrets.CHECK_SERVERS_API_KEY }}
checkApiServers: ${{ secrets.CHECK_SERVERS_LIST }}
runSchemaChecks: true
runServiceChecks: true
createPullRequest: true
download-language-files:
name: Download Language Files 🌐
if: github.repository_owner == 'obsproject' && inputs.job == 'translations'
runs-on: ubuntu-22.04
env:
CROWDIN_PAT: ${{ secrets.CROWDIN_SYNC_CROWDIN_PAT }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ secrets.CROWDIN_SYNC_GITHUB_PAT }}
fetch-depth: 0
- uses: obsproject/obs-crowdin-sync/download@30b5446e3b5eb19595aa68a81ddf896a857302cf
steam-upload:
name: Upload Steam Builds 🚂
if: github.repository_owner == 'obsproject' && inputs.job == 'steam'
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/steam-upload
with:
steamSecret: ${{ secrets.STEAM_SHARED_SECRET }}
steamUser: ${{ secrets.STEAM_USER }}
steamPassword: ${{ secrets.STEAM_PASSWORD }}
tagName: ${{ inputs.ref }}
customAssetWindows: ${{ inputs.customAssetWindows }}
customAssetMacOSApple: ${{ inputs.customAssetMacOSApple }}
customAssetMacOSIntel: ${{ inputs.customAssetMacOSIntel }}
workflowSecret: ${{ github.token }}
preview: false
update-documentation:
name: Update Documentation 📖
if: github.repository_owner == 'obsproject' && inputs.job == 'documentation'
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/generate-docs
update-documentation-cloudflare:
name: Update Documentation for Cloudflare ☁️
if: github.repository_owner == 'obsproject' && inputs.job == 'documentation'
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/generate-docs
with:
disableLinkExtensions: true
deploy-documentation:
name: Deploy Documentation to Cloudflare ☁️
if: github.repository_owner == 'obsproject' && inputs.job == 'documentation'
runs-on: ubuntu-22.04
needs: update-documentation-cloudflare
defaults:
run:
shell: bash
environment:
name: cf-pages-deploy
steps:
- name: Get Commit Information 🆔
id: setup
run: |
: Get Commit Hash 🆔
echo "commitHash=${GITHUB_SHA:0:9}" >> $GITHUB_OUTPUT
- uses: actions/download-artifact@v4
with:
name: OBS Studio Docs (No Extensions) ${{ steps.setup.outputs.commitHash }}
path: docs
- name: Publish to Live Page
uses: cloudflare/wrangler-action@4c10c1822abba527d820b29e6333e7f5dac2cabd
with:
workingDirectory: docs
apiToken: ${{ secrets.CF_API_TOKEN }}
accountId: ${{ secrets.CF_ACCOUNT_ID }}
command: pages publish . --project-name=${{ vars.CF_PAGES_PROJECT }} --commit-hash='${{ steps.setup.outputs.commitHash }}'
windows-patches:
name: Create Windows Patches 🩹
if: github.repository_owner == 'obsproject' && inputs.job == 'patches'
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/windows-patches
with:
tagName: ${{ inputs.ref }}
workflowSecret: ${{ github.token }}
channel: ${{ inputs.channel }}
gcsAccessKeyId: ${{ secrets.GCS_ACCESS_KEY_ID }}
gcsAccessKeySecret: ${{ secrets.GCS_ACCESS_KEY_SECRET }}