electron / forge

:electron: A complete tool for building and publishing Electron applications
https://electronforge.io
MIT License
6.45k stars 513 forks source link

Can't publish to S3 #259

Closed fredguth closed 7 years ago

fredguth commented 7 years ago

Please describe your issue: Although I have no problem on publishing on Github, I can't publish on S3.

*Console output when you run electron-forge with the environment variable `DEBUG=electron-forge:`. (Instructions on how to do so here). Please include the stack trace if one exists.** ...

$ DEBUG=electron-forge:* ./node_modules/electron-forge/dist/electron-forge.js publish electron-out/project
WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
  electron-forge:lifecycle Process Started: Checking your system +0ms
  electron-forge:lifecycle Process Succeeded: Checking your system +23ms
  electron-forge:runtime-config setting key: verbose to value: false +8ms
WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
  electron-forge:lifecycle Process Started: Resolving Forge Config +0ms
  electron-forge:project-resolver searching for project in: /Users/fredguth/Code/remoto/remoto-app/electron-out/project +2ms
  electron-forge:project-resolver electron-forge compatible package.json found in /Users/fredguth/Code/remoto/remoto-app/electron-out/project/package.json +9ms
  electron-forge:lifecycle Process Succeeded: Resolving Forge Config +16ms
  electron-forge:require-search searching [ '../makers/darwin/zip.js',
  '../makers/generic/zip.js',
  'electron-forge-maker-zip',
  'zip',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/zip',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/zip',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/makers/darwin/zip.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/makers/generic/zip.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/electron-forge-maker-zip',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/zip',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/zip',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/zip',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/makers/darwin/zip.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/makers/generic/zip.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/node_modules/electron-forge-maker-zip',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/node_modules/zip',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/zip',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/zip' ] relative to /Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api +1ms
  electron-forge:require-search testing ../makers/darwin/zip.js +2ms
  electron-forge:require-search testing ../makers/generic/zip.js +0ms
  electron-forge:require-search searching [ '../makers/darwin/dmg.js',
  '../makers/generic/dmg.js',
  'electron-forge-maker-dmg',
  'dmg',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/dmg',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/dmg',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/makers/darwin/dmg.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/makers/generic/dmg.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/electron-forge-maker-dmg',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/dmg',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/dmg',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/dmg',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/makers/darwin/dmg.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/makers/generic/dmg.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/node_modules/electron-forge-maker-dmg',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/node_modules/dmg',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/dmg',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/dmg' ] relative to /Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api +4ms
  electron-forge:require-search testing ../makers/darwin/dmg.js +0ms
We need to package your application before we can make it
  electron-forge:lifecycle Process Started: Preparing to Package Application for arch: x64 +8ms
  electron-forge:project-resolver searching for project in: /Users/fredguth/Code/remoto/remoto-app/electron-out/project +0ms
  electron-forge:project-resolver electron-forge compatible package.json found in /Users/fredguth/Code/remoto/remoto-app/electron-out/project/package.json +1ms
  electron-forge:hook could not find hook: generateAssets +7ms
  electron-forge:hook could not find hook: prePackage +0ms
  electron-forge:packager packaging with options { asar: true,
  overwrite: true,
  appCategoryType: 'public.app-category.productivity',
  appBundleId: 'me.remoto.Remoto',
  osxSign: { identity: 'Mac Developer: Frederico Guth (N3876635GL)' },
  appCopyright: 'Copyright (c) 2017 Remoto Tecnologia Eireli',
  name: 'Remoto',
  versionString:
   { CompanyName: 'Remoto Tecnologia Eireli',
     FileDescription: 'Remoto Desktop',
     ProductName: 'Remoto',
     InternalName: 'Remoto' },
  win32metadata: { CompanyName: 'Remoto Tecnologia Eireli' },
  protocols: [ { name: 'Remoto', schemes: [Object] } ],
  protocol: [ 'remoto' ],
  protocolName: 'Remoto',
  icon: 'assets/icons/icon',
  afterCopy: [ [Function], [Function], [Function], [Function] ],
  afterExtract: [],
  dir: '/Users/fredguth/Code/remoto/remoto-app/electron-out/project',
  arch: 'x64',
  platform: 'darwin',
  out: '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/out',
  electronVersion: '1.6.11',
  quiet: true } +0ms
  electron-forge:lifecycle Process Succeeded: Preparing to Package Application for arch: x64 +14s
  electron-forge:lifecycle Process Started: Compiling Application +5ms
Failed to compile file: /var/folders/qm/_sscwp3x7fbf9brf4l9jbsk40000gn/T/electron-packager/darwin-x64/Remoto-darwin-x64/Electron.app/Contents/Resources/app/ember/crossdomain.xml
Compiling /var/folders/qm/_sscwp3x7fbf9brf4l9jbsk40000gn/T/electron-packager/darwin-x64/Remoto-darwin-x64/Electron.app/Contents/Resources/app/ember/crossdomain.xml resulted in a MIME type of application/xml, which we don't know how to handle
  electron-forge:lifecycle Process Succeeded: Compiling Application +3s
  electron-forge:lifecycle Process Started: Preparing native dependencies +1ms
  electron-forge:lifecycle Process Succeeded: Preparing native dependencies +9s
  electron-forge:lifecycle Process Started: Packaging Application +1ms
  electron-forge:hook could not find hook: postPackage +27s
  electron-forge:lifecycle Process Succeeded: Packaging Application +2ms
Making for the following targets:
  electron-forge:hook could not find hook: preMake +5ms
  electron-forge:lifecycle Process Started: Making for target: zip - On platform: darwin - For arch: x64 +3ms
  electron-forge:lifecycle Process Succeeded: Making for target: zip - On platform: darwin - For arch: x64 +14s
  electron-forge:lifecycle Process Started: Making for target: dmg - On platform: darwin - For arch: x64 +1ms
  electron-forge:lifecycle Process Succeeded: Making for target: dmg - On platform: darwin - For arch: x64 +16s
  electron-forge:hook could not find hook: postMake +1ms
  electron-forge:project-resolver searching for project in: /Users/fredguth/Code/remoto/remoto-app/electron-out/project +1ms
  electron-forge:project-resolver electron-forge compatible package.json found in /Users/fredguth/Code/remoto/remoto-app/electron-out/project/package.json +2ms
  electron-forge:lifecycle Process Started: Resolving publish target: github +17ms
  electron-forge:require-search searching [ '../publishers/github.js',
  'electron-forge-publisher-github',
  'github',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/github',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/github',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/publishers/github.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/electron-forge-publisher-github',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/github',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/github',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/github',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/publishers/github.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/node_modules/electron-forge-publisher-github',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/node_modules/github',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/github',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/github' ] relative to /Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api +0ms
  electron-forge:require-search testing ../publishers/github.js +2ms
  electron-forge:lifecycle Process Succeeded: Resolving publish target: github +33ms
  electron-forge:lifecycle Process Started: Searching for target Release +2ms
  electron-forge:lifecycle Process Succeeded: Searching for target Release +1s
  electron-forge:lifecycle Process Started: Uploading Artifacts 0/2 +1ms
  electron-forge:lifecycle Process Succeeded: Uploading Artifacts 0/2 +4ms
  electron-forge:lifecycle Process Started: Resolving publish target: s3 +1ms
  electron-forge:require-search searching [ '../publishers/s3.js',
  'electron-forge-publisher-s3',
  's3',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/s3',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/s3',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/publishers/s3.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/electron-forge-publisher-s3',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/s3',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/s3',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/s3',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/publishers/s3.js',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/node_modules/electron-forge-publisher-s3',
  '/Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api/node_modules/s3',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/s3',
  '/Users/fredguth/Code/remoto/remoto-app/electron-out/project/node_modules/s3' ] relative to /Users/fredguth/Code/remoto/remoto-app/node_modules/electron-forge/dist/api +0ms
  electron-forge:require-search testing ../publishers/s3.js +0ms
  electron-forge:lifecycle Process Succeeded: Resolving publish target: s3 +597ms

Electron forge was terminated:
In order to publish to s3 you must set the "s3.accessKeyId", "process.env.ELECTRON_FORGE_S3_SECRET_ACCESS_KEY" and "s3.bucket" properties in your forge config. See the docs for more info

What command line arguments are you passing?

$ DEBUG=electron-forge:* ./node_modules/electron-forge/dist/electron-forge.js publish electron-out/project

What does your config.forge data in package.json look like?

const path = require('path');

function getWindowsSigningCert() {
    if (process.platform !== 'win32') {
        return;
    }

    if (process.env.WINDOWS_CERTIFICATE) {
        return process.env.WINDOWS_CERTIFICATE;
    } else {
        console.log('Codesigning certificate can not be found, release build will fail');
        console.log('To fix, set CODESIGN_CERTIFICATE');
    }
}

function getWindowsSigningPassword() {
    if (process.platform !== 'win32') {
        return;
    }

    if (process.env.WINDOWS_PASSWORD) {
        return process.env.WINDOWS_PASSWORD;
    } else {
        console.log('Codesigning password can not be found, release build will fail');
        console.log('To fix, set CODESIGN_PASSWORD');
    }
}

module.exports = {
  "make_targets": {
    "darwin": ["zip", "dmg"],
    "linux": ["deb"],
    "win32": ['squirrel']
  },
  "publish_targets": {
    "darwin": ["s3"],
    "linux": ["github", "s3"],
    "win32": ["github", "s3"],
  },

  "electronPackagerConfig": {
    appCategoryType: 'public.app-category.productivity',
    appBundleId: 'me.remoto.Remoto',
    osxSign: {
      "identity": "Mac Developer: Frederico Guth (N3876635GL)"
    },
    appCopyright: `Copyright (c) ${new Date().getFullYear()} Remoto Tecnologia Eireli`,
    name: 'Remoto',
    versionString: {
        CompanyName: 'Remoto Tecnologia Eireli',
        FileDescription: 'Remoto Desktop',
        ProductName: 'Remoto',
        InternalName: 'Remoto'
    },
    win32metadata: {
      CompanyName: 'Remoto Tecnologia Eireli'
    },
    protocols: [
        {
            name: 'Remoto',
            schemes: ['remoto']
        }
    ],
    protocol: ['remoto'],
    protocolName: 'Remoto',
    overwrite: true,
    asar: true,
    icon: 'assets/icons/icon'
  },
  electronInstallerDMG: {
    title: 'Remoto',
    background: 'assets/dmg/installer_background.png',
    icon: 'assets/icons/icon.icns',
    iconsize: 120,
    window: {
        size: {
            width: 620,
            height: 480
        }
    },
    content: [
        {
            "x": 480,
            "y": 240,
            "type": "link",
            "path": "/Applications"
        },
        {
            "x": 160,
            "y": 240,
            "type": "file",
            "path": "electron-builds/Remoto-darwin-x64/Remoto.app"
        }
    ]
  },
  "electronWinstallerConfig": {
    name: 'Remoto',
    icon: 'assets/icons/icon',
    noMsi: true,
    authors: 'Remoto Tecnologia Eireli',
    exe: 'Remoto.exe',
    setupIcon: path.join(__dirname, '../assets/icons/icon.ico'),
    title: 'Remoto',
    iconUrl: `http://remoto.me/icons/icon.ico`,
    loadingGif: path.join(__dirname, '../assets/win/installer-windows.gif'),
    certificateFile: getWindowsSigningCert(),
    certificatePassword: getWindowsSigningPassword()
  },

  "electronInstallerDebian": {
    name: 'Remoto',
    maintainer: 'Remoto Team <contact@remoto.me>',
    homepage: 'https://remoto.me',
    genericName: 'Business Communication',
    arch: 'amd64',
    icon:  path.join(__dirname, '../assets/icons/icon.png'),
    bin: 'Remoto',
    productDescription: 'Keep your team close and your clients closer'
  },

  "github_repository": {
    "owner": "remoto-me",
    "name": "remoto-app"
  },

  "s3": {
    "accessKeyId": "AKIA...",
    "secretAccessKey": process.env.AWS_SECRET_ACCESS_KEY,
    "bucket": "remoto-releases",
    "public": true
  }
};

Please provide either a failing minimal testcase (with a link to the code) or detailed steps to reproduce your problem. Using electron-forge init is a good starting point, if that is not the source of your problem.

I am using ember-electron, an it is using electron-forge. Don't know how to build a simple testcase, sorry. I believe the problem is not in the ember-electron part, as I can "make" and also "publish to github".

I have tried before with "accessKey" instead of "accessKeyId", but I believe the README.md I was seeing with "accessKey" was old documentation by what I saw here: https://github.com/electron-userland/electron-forge/issues/143 and here: https://github.com/electron-userland/electron-forge/blob/master/src/publishers/s3.js#L19.

I do have AWS_SECRET_ACCESS_KEY in my environment:

$ env | grep ACCESS
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=...
ELECTRON_FORGE_S3_SECRET_ACCESS_KEY=...
MarshallOfSound commented 7 years ago

@fredguth I can see a potential issue in the code for handling this but not if you've set the secretAccessKey option correctly. Can you triple double backwards check that that option is actually set to a non-empty string 😄

MarshallOfSound commented 7 years ago

@fredguth Can you response to the above 😄

malept commented 7 years ago

Since the original issue reporter has not responded to the request for additional information in about two weeks, I'm going to assume that they either found the answer in another manner or decided not to pursue this issue. If I'm incorrect, they can respond with answers to the questions posed, and I'll reopen.