Kaynağa Gözat

CI: Add Github Actions repository actions

PatTheMav 3 yıl önce
ebeveyn
işleme
4d34e11f2f

+ 66 - 0
.github/actions/build-plugin/action.yml

@@ -0,0 +1,66 @@
+name: 'Setup and build plugin'
+description: 'Builds the plugin for specified architecture and build config.'
+inputs:
+  target:
+    description: 'Build target for dependencies'
+    required: true
+  config:
+    description: 'Build configuration'
+    required: false
+    default: 'Release'
+  codesign:
+    description: 'Enable codesigning (macOS only)'
+    required: false
+    default: 'false'
+  codesignIdent:
+    description: 'Developer ID for application codesigning (macOS only)'
+    required: false
+    default: '-'
+  visualStudio:
+    description: 'Visual Studio version (Windows only)'
+    required: false
+    default: 'Visual Studio 16 2019'
+  workingDirectory:
+    description: 'Working directory for packaging'
+    required: false
+    default: ${{ github.workspace }}
+runs:
+  using: 'composite'
+  steps:
+    - name: Run macOS Build
+      if: ${{ runner.os == 'macOS' }}
+      shell: zsh {0}
+      env:
+        CODESIGN_IDENT: ${{ inputs.codesignIdent }}
+      run: |
+        build_args=(
+          -c ${{ inputs.config }}
+          -t macos-${{ inputs.target }}
+        )
+
+        if [[ '${{ inputs.codesign }}' == 'true' ]] build_args+=(-s)
+
+        ${{ inputs.workingDirectory }}/.github/scripts/build-macos.zsh ${build_args}
+
+    - name: Run Linux Build
+      if: ${{ runner.os == 'Linux' }}
+      shell: bash
+      run: |
+        build_args=(
+          -c ${{ inputs.config }}
+          -t linux-${{ inputs.target }}
+        )
+
+        ${{ inputs.workingDirectory }}/.github/scripts/build-linux.sh ${build_args[@]}
+
+    - name: Run Windows Build
+      if: ${{ runner.os == 'Windows' }}
+      shell: pwsh
+      run: |
+        $BuildArgs = @{
+          Target = '${{ inputs.target }}'
+          Configuration = '${{ inputs.config }}'
+          CMakeGenerator = '${{ inputs.visualStudio }}'
+        }
+
+        ${{ inputs.workingDirectory }}/.github/scripts/Build-Windows.ps1 @BuildArgs

+ 89 - 0
.github/actions/package-plugin/action.yml

@@ -0,0 +1,89 @@
+name: 'Package plugin'
+description: 'Packages the plugin for specified architecture and build config.'
+inputs:
+  target:
+    description: 'Build target for dependencies'
+    required: true
+  config:
+    description: 'Build configuration'
+    required: false
+    default: 'Release'
+  codesign:
+    description: 'Enable codesigning (macOS only)'
+    required: false
+    default: 'false'
+  notarize:
+    description: 'Enable notarization (macOS only)'
+    required: false
+    default: 'false'
+  codesignIdent:
+    description: 'Developer ID for application codesigning (macOS only)'
+    required: false
+    default: '-'
+  installerIdent:
+    description: 'Developer ID for installer package codesigning (macOS only)'
+    required: false
+    default: ''
+  codesignUser:
+    description: 'Apple ID username for notarization (macOS only)'
+    required: false
+    default: ''
+  codesignPass:
+    description: 'Apple ID password for notarization (macOS only)'
+    required: false
+    default: ''
+  createInstaller:
+    description: 'Create InnoSetup installer (Windows only)'
+    required: false
+    default: 'false'
+  workingDirectory:
+    description: 'Working directory for packaging'
+    required: false
+    default: ${{ github.workspace }}
+runs:
+  using: 'composite'
+  steps:
+    - name: Run macOS packaging
+      if: ${{ runner.os == 'macOS' }}
+      shell: zsh {0}
+      env:
+        CODESIGN_IDENT: ${{ inputs.codesignIdent }}
+        CODESIGN_IDENT_INSTALLER: ${{ inputs.installerIdent }}
+        CODESIGN_IDENT_USER: ${{ inputs.codesignUser }}
+        CODESIGN_IDENT_PASS: ${{ inputs.codesignPass }}
+      run: |
+        package_args=(
+          -c ${{ inputs.config }}
+          -t macos-${{ inputs.target }}
+        )
+
+        if [[ '${{ inputs.codesign }}' == 'true' ]] package_args+=(-s)
+        if [[ '${{ inputs.notarize }}' == 'true' ]] package_args+=(-n)
+
+        ${{ inputs.workingDirectory }}/.github/scripts/package-macos.zsh ${package_args}
+
+    - name: Run Linux packaging
+      if: ${{ runner.os == 'Linux' }}
+      shell: bash
+      run: |
+        package_args=(
+          -c ${{ inputs.config }}
+          -t linux-${{ inputs.target }}
+        )
+
+        ${{ inputs.workingDirectory }}/.github/scripts/package-linux.sh ${package_args[@]}
+
+    - name: Run Windows packaging
+      if: ${{ runner.os == 'Windows' }}
+      shell: pwsh
+      run: |
+        $PackageArgs = @{
+          Target = '${{ inputs.target }}'
+          Configuration = '${{ inputs.config }}'
+        }
+
+        if ( '${{ inputs.createInstaller }}' -eq 'true' ) {
+          $PackageArgs += @{BuildInstaller = $true}
+        }
+
+        ${{ inputs.workingDirectory }}/.github/scripts/Package-Windows.ps1 @PackageArgs