wails-release/action.yml

65 lines
4.1 KiB
YAML
Raw Normal View History

name: Wails Release
description: Build, sign, notarize and (optionally) upload a Wails macOS app
branding:
icon: package
color: blue
inputs:
working-directory: { description: "Directory containing wails.json", required: false, default: "." }
app-name: { description: "Override the app name (defaults to wails.json `name`)", required: false }
version: { description: "Override the version (defaults to tag/SHA logic)", required: false }
wails-version: { description: "Override the Wails CLI version (defaults to project go.mod)", required: false }
extra-build-flags: { description: "Additional flags appended to `wails build`", required: false }
developer-id-cert-base64: { description: "Base64-encoded Developer ID .p12", required: true }
developer-id-cert-password: { description: ".p12 password", required: true }
notarization-method: { description: "api-key | apple-id | auto", required: false, default: "auto" }
notarization-api-key-base64: { description: "Base64-encoded App Store Connect .p8", required: false }
notarization-api-key-id: { description: "App Store Connect API key ID", required: false }
notarization-api-issuer-id: { description: "App Store Connect issuer ID", required: false }
notarization-apple-id: { description: "Apple ID (e.g. user@example.com)", required: false }
notarization-apple-password: { description: "App-specific password", required: false }
notarization-team-id: { description: "Apple developer Team ID", required: false }
s3-bucket: { description: "S3 bucket name. If empty, upload is skipped.", required: false }
s3-key: { description: "Object key. Supports {version} and {filename} placeholders.", required: false }
s3-endpoint-url: { description: "Custom endpoint for S3-compatible storage (MinIO, R2, etc.)", required: false }
s3-region: { description: "AWS region", required: false, default: "us-east-1" }
outputs:
2026-05-02 01:43:16 +00:00
version: { description: "Resolved version string", value: "${{ steps.run.outputs.version }}" }
app-name: { description: "Resolved app name", value: "${{ steps.run.outputs.app-name }}" }
artifact-path: { description: "Local absolute path to the .app.zip", value: "${{ steps.run.outputs.artifact-path }}" }
artifact-filename: { description: "Filename of the .app.zip", value: "${{ steps.run.outputs.artifact-filename }}" }
s3-url: { description: "s3://… URL if uploaded, else empty", value: "${{ steps.run.outputs.s3-url }}" }
runs:
using: composite
steps:
- id: run
shell: bash
env:
INPUT_WORKING_DIRECTORY: ${{ inputs.working-directory }}
INPUT_APP_NAME: ${{ inputs.app-name }}
INPUT_VERSION: ${{ inputs.version }}
INPUT_WAILS_VERSION: ${{ inputs.wails-version }}
INPUT_EXTRA_BUILD_FLAGS: ${{ inputs.extra-build-flags }}
INPUT_DEVELOPER_ID_CERT_BASE64: ${{ inputs.developer-id-cert-base64 }}
INPUT_DEVELOPER_ID_CERT_PASSWORD: ${{ inputs.developer-id-cert-password }}
INPUT_NOTARIZATION_METHOD: ${{ inputs.notarization-method }}
INPUT_NOTARIZATION_API_KEY_BASE64: ${{ inputs.notarization-api-key-base64 }}
INPUT_NOTARIZATION_API_KEY_ID: ${{ inputs.notarization-api-key-id }}
INPUT_NOTARIZATION_API_ISSUER_ID: ${{ inputs.notarization-api-issuer-id }}
INPUT_NOTARIZATION_APPLE_ID: ${{ inputs.notarization-apple-id }}
INPUT_NOTARIZATION_APPLE_PASSWORD: ${{ inputs.notarization-apple-password }}
INPUT_NOTARIZATION_TEAM_ID: ${{ inputs.notarization-team-id }}
INPUT_S3_BUCKET: ${{ inputs.s3-bucket }}
INPUT_S3_KEY: ${{ inputs.s3-key }}
INPUT_S3_ENDPOINT_URL: ${{ inputs.s3-endpoint-url }}
INPUT_S3_REGION: ${{ inputs.s3-region }}
run: |
set -euo pipefail
2026-05-02 01:47:13 +00:00
go install "lmika.dev/${{ github.action_repository }}/cmd/wails-release@${{ github.action_ref }}"
"$(go env GOPATH)/bin/wails-release"