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 }}