name: catalogue-publish description: > Publish a built artifact to the SilverDESK App Catalogue (desk.silverlined.uk/api/catalogue/publish). A 409 (already published) is treated as success. The publish key is passed through the environment only. inputs: app: description: App slug (e.g. silvermail) required: true file: description: Path to the artifact required: true platform: description: android | macos | linux | windows required: true arch: description: Architecture (x64, arm64, ...) required: true format: description: apk | dmg | zip | deb | appimage | msi | exe | msix | pwa | nupkg required: true version: description: Version string required: true channel: description: alpha | beta | rc | stable required: true publish-key: description: Catalogue publish key (secrets.CATALOGUE_PUBLISH_KEY) required: true version-code: description: Version code (derived from strict semver MAJOR.MINOR.PATCH when empty) required: false default: '' notes-file: description: Release notes file (max 500 chars) required: false default: '' signer-identity: description: Signer identity, if the artifact is signed required: false default: '' catalogue-url: description: Catalogue base URL required: false default: https://desk.silverlined.uk dry-run: description: "'true' to print the redacted request and stop" required: false default: 'false' runs: using: composite steps: - name: Publish to catalogue (${{ inputs.app }} ${{ inputs.version }}) shell: bash env: INPUT_APP: ${{ inputs.app }} INPUT_FILE: ${{ inputs.file }} INPUT_PLATFORM: ${{ inputs.platform }} INPUT_ARCH: ${{ inputs.arch }} INPUT_FORMAT: ${{ inputs.format }} INPUT_VERSION: ${{ inputs.version }} INPUT_VERSION_CODE: ${{ inputs.version-code }} INPUT_CHANNEL: ${{ inputs.channel }} INPUT_NOTES_FILE: ${{ inputs.notes-file }} INPUT_SIGNER_IDENTITY: ${{ inputs.signer-identity }} INPUT_CATALOGUE_URL: ${{ inputs.catalogue-url }} INPUT_DRY_RUN: ${{ inputs.dry-run }} CATALOGUE_PUBLISH_KEY: ${{ inputs.publish-key }} run: bash "${{ github.action_path }}/run.sh"