Skip to content

electron-builder Google Cloud Storage bucket publisher (because GCS's S3-compat API doesn't support the S3 publisher)

License

Notifications You must be signed in to change notification settings

uihoh0/electron-publisher-gcs

Repository files navigation

electron-publisher-gcs

Build Status

electron-builder Google Cloud Storage bucket publisher (because GCS's S3-compat API doesn't support the S3 publisher)

Heavily inspired by @zalewskip123's electron-publisher-simple-http

How to Use

Install electron-publisher-gcs through your package manager (yarn, npm, pnpm, etc...) Next, set your publish provider to gcs. Add a new root object publish-gcs to your package.json. (see publish-gcs object)

// Your package.json file
{
  "name": "cool-app",
  "build": {
    "appId": "app.cool",
    "compression": "normal",
    "productName": "Cool App",
    "win": {
      "target": "nsis",
      "publish": [
        {
          "provider": "generic",
          "url": "https://releases.cool.app/${name}/${os}/${arch}/"
        },
        "gcs"
      ]
    }
  },
  "publish-gcs": {
    "bucket": "releases.cool.app", // Your GCS bucket
    "path": "/${name}/${os}/${arch}/${filename}",
    "serviceAccount": "D:\\cool-app\\secrets\\service-account.json",
    "public": true,
    "resumable": true
  }
}

publish-gcs object

{
  "bucket": "releases.cool.app",
  "path": "/${name}/${os}/${arch}/${filename}",
  "serviceAccount": "D:\\cool-app\\secrets\\service-account.json",
  "public": true,
  "resumable": true
}

bucket

Type: string

The Google Cloud Storage bucket name

Examples:

releases.cool.app
cool-app-releases

Both can be accessible from {bucket_name}.storage.googleapis.com.

path

Type: string
Default: /${name}/${os}/${arch}/${filename}

  • name: the app's name (from electron-builder)
  • os: task.packager.platform.name
  • arch: Architecture
  • filename: The filename of the file being uploaded

Example:

/${name}/${os}/${arch}/${filename}

serviceAccount

Type: string or object

Path to a service account JSON file or an object containing the JSON content as an object

Examples:

D:\\cool-app\\secrets\\service-account.json
{
  "type": "service_account",
  "project_id": "cool-app-xxxxxx",
  "private_key_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "private_key": "-----BEGIN PRIVATE KEY-----\nxxxxxxxxxxx\n-----END PRIVATE KEY-----\n",
  "client_email": "[email protected]",
  "client_id": "xxxxxx",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/service-account%40cool-app-xxxxxx.iam.gserviceaccount.com"
}

public

Type: boolean
Default: true

See Bucket#upload (options.public)

resumable

Type: boolean
Default: true

See Bucket#upload (options.resumable)

About

electron-builder Google Cloud Storage bucket publisher (because GCS's S3-compat API doesn't support the S3 publisher)

Resources

License

Stars

Watchers

Forks

Packages

No packages published