an OBS plugin to display the status of an ongoing cd recording as a dock

Joel Bethke 257c4f26c9 Merge pull request #15 from PatTheMav/template-overhaul 3 سال پیش
.github 652a4b77b5 CI: Update default CI from Azure to Github Actions 3 سال پیش
CI 652a4b77b5 CI: Update default CI from Azure to Github Actions 3 سال پیش
bundle 78acad2be1 cmake: Add macOS bundle support files 3 سال پیش
data b75e67843c add data locale template 5 سال پیش
external c89591ac0a cmake: Remove outdated libobs CMake finder 3 سال پیش
installer ee94f89963 CI: Update Windows build scripts 3 سال پیش
src fd1cf3f727 easily ignore generated files 5 سال پیش
.gitignore fd1cf3f727 easily ignore generated files 5 سال پیش
CMakeLists.txt cdc6df7c3a cmake: Update CMakeLists.txt to use modern target-based semantics 3 سال پیش
LICENSE aeb812bc4c Initial commit 7 سال پیش
README.md 8ecc203311 Update Readme file to reflect the changes 3 سال پیش

README.md

OBS Plugin Template

Introduction

This plugin is meant to make it easy to quickstart development of new OBS plugins. It includes:

  • The CMake project file
  • Boilerplate plugin source code
  • A continuous-integration configuration for automated builds (a.k.a Build Bot)

Configuring

Open CMakeLists.txt and edit the following lines at the beginning:

# Change `obs-plugintemplate` to your plugin's name in a machine-readable format
# (e.g.: obs-myawesomeplugin) and set the value next to `VERSION` as your plugin's current version
project(obs-plugintemplate VERSION 1.0.0)

# Replace `Your Name Here` with the name (yours or your organization's) you want
# to see as the author of the plugin (in the plugin's metadata itself and in the installers)
set(PLUGIN_AUTHOR "Your Name Here")

# Replace `com.example.obs-plugin-template` with a unique Bundle ID for macOS releases
# (used both in the installer and when submitting the installer for notarization)
set(MACOS_BUNDLEID "com.example.obs-plugintemplate")

# Replace `me@contoso.com` with the maintainer email address you want to put in Linux packages
set(LINUX_MAINTAINER_EMAIL "me@contoso.com")

CI / Build Bot

The contained build scripts are used by the local main build script as well as by CI - every sub-script can be run individually as well - by default a workflow for Github Actions is provided, allowing your plugin to use CI right from your Github repository.

Retrieving build artifacts

Each build produces installers and packages that you can use for testing and releases. These artifacts can be found on the action result page via the "Actions" tab in your Github repository.

Building a Release

Simply create and push a tag and Github Actions will run the pipeline in Release Mode. This mode uses the tag as its version number instead of the git ref in normal mode.

Signing and Notarizing on macOS

On macOS, Release Mode builds can be signed and sent to Apple for notarization if the necessary codesigning credentials are added as secrets to your repository. You'll need a paid Apple Developer Account for this.

  • On your Apple Developer dashboard, go to "Certificates, IDs & Profiles" and create two signing certificates:
    • One of the "Developer ID Application" type. It will be used to sign the plugin's binaries
    • One of the "Developer ID Installer" type. It will be used to sign the plugin's installer
  • Using the Keychain app on macOS, export these two certificates and keys into a .p12 file protected with a strong password
  • Encode the .p12 file into its base64 representation by running base64 YOUR_P12_FILE
  • Add the following secrets in your Github repository settings:
    • MACOS_SIGNING_APPLICATION_IDENTITY: Name of the "Developer ID Application" signing certificate generated earlier
    • MACOS_SIGNING_INSTALLER_IDENTITY: Name of "Developer ID Installer" signing certificate generated earlier
    • MACOS_SIGNING_CERT: Base64-encoded string generated above
    • MACOS_SIGNING_CERT_PASSWORD: Password used to generate the .p12 certificate
    • MACOS_NOTARIZATION_USERNAME: Your Apple Developer account's username
    • MACOS_NOTARIZATION_PASSWORD: Your Apple Developer account's password (use a generated "app password" for this)