mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-02-01 10:02:11 -05:00
When merging the PR for the previous commits, I forgot the note that stated that it required a merge commit to preserve the pinned commit hash for the workflow. Thus, when I merged with "Rebase and merge", the commit hash changed, and the workflow broke. Update the commit hash to the correct version and fix my mistake.
310 lines
11 KiB
YAML
310 lines
11 KiB
YAML
name: Push
|
|
run-name: ${{ github.ref_name }} push run 🚀
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- '**.md'
|
|
branches:
|
|
- master
|
|
- 'release/**'
|
|
tags:
|
|
- '*'
|
|
permissions:
|
|
contents: write
|
|
jobs:
|
|
check-format:
|
|
name: Format 🔍
|
|
if: github.ref_name == 'master'
|
|
uses: ./.github/workflows/check-format.yaml
|
|
permissions:
|
|
contents: read
|
|
|
|
build-project:
|
|
name: Build 🧱
|
|
uses: ./.github/workflows/build-project.yaml
|
|
secrets: inherit
|
|
permissions:
|
|
contents: read
|
|
|
|
compatibility-validation:
|
|
name: Validate Compatibility 🕵️
|
|
if: github.ref_name == 'master'
|
|
runs-on: ubuntu-22.04
|
|
permissions:
|
|
checks: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Check for Changed Files ✅
|
|
uses: ./.github/actions/check-changes
|
|
id: checks
|
|
with:
|
|
baseRef: ${{ github.event.before }}
|
|
checkGlob: plugins/win-capture/data/*.json
|
|
|
|
- name: Check for Invalid Compatibility Data 📉
|
|
if: fromJSON(steps.checks.outputs.hasChangedFiles)
|
|
uses: ./.github/actions/compatibility-validator
|
|
with:
|
|
repositorySecret: ${{ github.token }}
|
|
|
|
services-validation:
|
|
name: Validate Services 🕵️
|
|
if: github.ref_name == 'master'
|
|
runs-on: ubuntu-22.04
|
|
permissions:
|
|
checks: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Check for Changed Files ✅
|
|
uses: ./.github/actions/check-changes
|
|
id: checks
|
|
with:
|
|
baseRef: ${{ github.event.before }}
|
|
checkGlob: plugins/rtmp-services/data/*.json
|
|
|
|
- name: Check Services JSON Schema 📉
|
|
if: fromJSON(steps.checks.outputs.hasChangedFiles)
|
|
uses: ./.github/actions/services-validator
|
|
with:
|
|
repositorySecret: ${{ github.token }}
|
|
runSchemaChecks: true
|
|
runServiceChecks: false
|
|
|
|
update-documentation:
|
|
name: Update Documentation 📖
|
|
if: github.repository_owner == 'obsproject' && (github.ref_name == 'master' || github.ref_type == 'tag')
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Check for Changed Files ✅
|
|
if: github.ref_type != 'tag'
|
|
uses: ./.github/actions/check-changes
|
|
id: checks
|
|
with:
|
|
baseRef: ${{ github.event.before }}
|
|
checkGlob: '!(cmake*)'
|
|
|
|
- uses: ./.github/actions/generate-docs
|
|
if: github.ref_type == 'tag' || fromJSON(steps.checks.outputs.hasChangedFiles)
|
|
with:
|
|
disableLinkExtensions: ${{ github.ref_type == 'tag' }}
|
|
|
|
deploy-documentation:
|
|
name: Deploy Documentation to Cloudflare ☁️
|
|
if: github.repository_owner == 'obsproject' && github.ref_type == 'tag'
|
|
runs-on: ubuntu-22.04
|
|
needs: update-documentation
|
|
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: Set Up Redirects 🔄
|
|
run: |
|
|
: Set Up Redirects 🔄
|
|
if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi
|
|
|
|
echo "/previous/27.2 https://obsproject.com/docs/27.2 302" >> docs/_redirects
|
|
echo "/previous/:major.:minor https://:major-:minor.${{ vars.CF_PAGES_PROJECT }}.pages.dev 302" >> docs/_redirects
|
|
|
|
- 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 }}'
|
|
|
|
create-appcast:
|
|
name: Create Sparkle Appcast 🎙️
|
|
if: github.repository_owner == 'obsproject' && github.ref_type == 'tag'
|
|
runs-on: macos-14
|
|
needs: build-project
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
target: [arm64, x86_64]
|
|
defaults:
|
|
run:
|
|
shell: zsh --no-rcs --errexit --pipefail {0}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
ref: ${{ github.ref }}
|
|
|
|
- name: Set Up Environment 🔧
|
|
id: setup
|
|
run: |
|
|
: Set Up Environment 🔧
|
|
if (( ${+RUNNER_DEBUG} )) setopt XTRACE
|
|
|
|
local channel='stable'
|
|
if [[ ${GITHUB_REF_NAME} == *(beta|rc)* ]] {
|
|
channel='beta'
|
|
}
|
|
|
|
local -A arch_names=(x86_64 intel arm64 apple)
|
|
print "cpuName=${arch_names[${{ matrix.target }}]}" >> $GITHUB_OUTPUT
|
|
print "commitHash=${GITHUB_SHA:0:9}" >> $GITHUB_OUTPUT
|
|
print "channel=${channel}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Download Artifact 📥
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: obs-studio-macos-${{ matrix.target }}-${{ steps.setup.outputs.commitHash }}
|
|
|
|
- name: Generate Appcast 🎙️
|
|
id: generate-appcast
|
|
uses: ./.github/actions/sparkle-appcast
|
|
with:
|
|
sparklePrivateKey: ${{ secrets.SPARKLE_PRIVATE_KEY }}
|
|
baseImage: ${{ github.workspace }}/obs-studio-*-macos-${{ steps.setup.outputs.cpuName }}.dmg
|
|
channel: ${{ steps.setup.outputs.channel }}
|
|
count: 1
|
|
urlPrefix: 'https://cdn-fastly.obsproject.com/downloads'
|
|
customTitle: 'OBS Studio'
|
|
customLink: 'https://obsproject.com/'
|
|
|
|
- name: Upload Artifacts 📡
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: macos-sparkle-update-${{ matrix.target }}
|
|
path: ${{ github.workspace }}/output
|
|
|
|
merge-appcasts:
|
|
runs-on: ubuntu-22.04
|
|
needs: create-appcast
|
|
steps:
|
|
- name: Merge Appcasts
|
|
uses: actions/upload-artifact/merge@v4
|
|
with:
|
|
name: macos-sparkle-update
|
|
pattern: macos-sparkle-update-*
|
|
delete-merged: true
|
|
|
|
sign-windows-build:
|
|
name: Windows Signing ✍️
|
|
uses: obsproject/obs-studio/.github/workflows/sign-windows.yaml@ffd5879ec95f09e4e551b839f5fe6738058231c1
|
|
if: github.repository_owner == 'obsproject' && github.ref_type == 'tag'
|
|
needs: build-project
|
|
permissions:
|
|
contents: 'read'
|
|
id-token: 'write'
|
|
secrets: inherit
|
|
|
|
create-release:
|
|
name: Create Release 🛫
|
|
if: github.ref_type == 'tag'
|
|
runs-on: ubuntu-22.04
|
|
needs: build-project
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
steps:
|
|
- name: Check Release Tag ☑️
|
|
id: check
|
|
run: |
|
|
: Check Release Tag ☑️
|
|
if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi
|
|
shopt -s extglob
|
|
|
|
case "${GITHUB_REF_NAME}" in
|
|
+([0-9]).+([0-9]).+([0-9]) )
|
|
echo 'validTag=true' >> $GITHUB_OUTPUT
|
|
echo 'prerelease=false' >> $GITHUB_OUTPUT
|
|
echo "version=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT
|
|
;;
|
|
+([0-9]).+([0-9]).+([0-9])-@(beta|rc)*([0-9]) )
|
|
echo 'validTag=true' >> $GITHUB_OUTPUT
|
|
echo 'prerelease=true' >> $GITHUB_OUTPUT
|
|
echo "version=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT
|
|
;;
|
|
*) echo 'validTag=false' >> $GITHUB_OUTPUT ;;
|
|
esac
|
|
|
|
- name: Download Build Artifacts 📥
|
|
uses: actions/download-artifact@v4
|
|
if: ${{ fromJSON(steps.check.outputs.validTag) }}
|
|
|
|
- name: Rename Files 🏷️
|
|
if: fromJSON(steps.check.outputs.validTag)
|
|
run: |
|
|
: Rename Files 🏷️
|
|
if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi
|
|
|
|
root_dir="${PWD}"
|
|
|
|
commit_hash="${GITHUB_SHA:0:9}"
|
|
macos_arm64_artifact_name="obs-studio-macos-arm64-${commit_hash}"
|
|
macos_arm64_dsym_artifact_name="obs-studio-macos-arm64-${commit_hash}-dSYMs"
|
|
macos_intel_artifact_name="obs-studio-macos-x86_64-${commit_hash}"
|
|
macos_intel_dsym_artifact_name="obs-studio-macos-x86_64-${commit_hash}-dSYMs"
|
|
ubuntu_x86_64_artifact_name="obs-studio-ubuntu-22.04-x86_64-${commit_hash}"
|
|
ubuntu_x86_64_debug_name="obs-studio-ubuntu-22.04-x86_64-${commit_hash}-dbgsym"
|
|
|
|
echo '::group::Renaming Artifacts'
|
|
mv -v "${macos_arm64_artifact_name}/"obs-studio-*-macos-apple.dmg \
|
|
"${root_dir}"/OBS-Studio-${{ steps.check.outputs.version }}-macOS-Apple.dmg
|
|
mv -v "${macos_arm64_dsym_artifact_name}/"obs-studio-*-macos-apple-dSYMs.tar.xz \
|
|
"${root_dir}"/OBS-Studio-${{ steps.check.outputs.version }}-macOS-Apple-dSYMs.tar.xz
|
|
mv -v "${macos_intel_artifact_name}/"obs-studio-*-macos-intel.dmg \
|
|
"${root_dir}"/OBS-Studio-${{ steps.check.outputs.version }}-macOS-Intel.dmg
|
|
mv -v "${macos_intel_dsym_artifact_name}/"obs-studio-*-macos-intel-dSYMs.tar.xz \
|
|
"${root_dir}"/OBS-Studio-${{ steps.check.outputs.version }}-macOS-Intel-dSYMs.tar.xz
|
|
mv -v "${ubuntu_x86_64_artifact_name}/"obs-studio-*-x86_64-linux-gnu.deb \
|
|
"${root_dir}"/OBS-Studio-${{ steps.check.outputs.version }}-Ubuntu-x86_64.deb
|
|
mv -v "${ubuntu_x86_64_debug_name}/"obs-studio-*-x86_64-linux-gnu-dbgsym.ddeb \
|
|
"${root_dir}"/OBS-Studio-${{ steps.check.outputs.version }}-Ubuntu-x86_64-dbsym.ddeb
|
|
echo '::endgroup::'
|
|
|
|
- name: Generate Checksums 🪪
|
|
if: fromJSON(steps.check.outputs.validTag)
|
|
run: |
|
|
: Generate Checksums 🪪
|
|
if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi
|
|
shopt -s extglob
|
|
|
|
echo "### Checksums" > ${{ github.workspace }}/CHECKSUMS.txt
|
|
for file in ${{ github.workspace }}/@(*.deb|*.ddeb|*.dmg|*.tar.xz); do
|
|
echo " ${file##*/}: $(sha256sum "${file}" | cut -d " " -f 1)" >> ${{ github.workspace }}/CHECKSUMS.txt
|
|
done
|
|
|
|
- name: Create Release 🛫
|
|
if: fromJSON(steps.check.outputs.validTag)
|
|
id: create_release
|
|
uses: softprops/action-gh-release@d4e8205d7e959a9107da6396278b2f1f07af0f9b
|
|
with:
|
|
draft: true
|
|
prerelease: ${{ fromJSON(steps.check.outputs.prerelease) }}
|
|
tag_name: ${{ steps.check.outputs.version }}
|
|
name: OBS Studio ${{ steps.check.outputs.version }}
|
|
body_path: ${{ github.workspace }}/CHECKSUMS.txt
|
|
files: |
|
|
${{ github.workspace }}/OBS-Studio-${{ steps.check.outputs.version }}-macOS-*.dmg
|
|
${{ github.workspace }}/OBS-Studio-${{ steps.check.outputs.version }}-macOS-*-dSYMs.tar.xz
|
|
${{ github.workspace }}/OBS-Studio-${{ steps.check.outputs.version }}-Ubuntu-*.deb
|
|
${{ github.workspace }}/OBS-Studio-${{ steps.check.outputs.version }}-Ubuntu-*.ddeb
|