Приложение для упаковки электроники для окон с jenkins и электронным упаковщиком в Linux - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь автоматизировать сборку электронного приложения с помощью Jenkins. Раньше я делал это с помощью Electron-Packager непосредственно на ПК с Windows (поскольку приложение предназначено для использования в Windows), но теперь, когда я хочу использовать среду Linux для процесса сборки (например, Ubuntu), я получаю следующую ошибку:

15:55:32 Packaging app for platform win32 ia32 using electron v1.8.7
15:55:36 WARNING: Found 'electron' but not as a devDependency, pruning anyway
15:56:21 Could not find "wine" on your system.
15:56:21 
15:56:21 Wine is required to use the appCopyright, appVersion, buildVersion, icon, and 
15:56:21 win32metadata parameters for Windows targets.
15:56:21 
15:56:21 Make sure that the "wine" executable is in your PATH.
15:56:21 
15:56:21 See https://github.com/electron-userland/electron-packager#building-windows-apps-from-non-windows-platforms for details.

Старый скрипт упаковки (определенный в package.json)

electron-packager . test-app --overwrite --asar --platform=win32 --arch=ia32 --prune=true --out=release-builds

Как и предполагалось, я создал скрипт gulp для упаковки:

var opts = {
    name: pkg.name,
    platform: 'win32',
    arch: 'ia32',                           // ia32, x64 or all
    dir: './',                       // source location of app
    out: './edist/',              // destination location for app os/native binaries
    asar: true, // compress project/modules into an asar blob but don't use asar to pack the native compiled modules
    overwrite: true,
    prune: true,
    electronVersion: electronVersion ,       // Tell the packager what version of electron to build with
    appCopyright: pkg.copyright,            // copyright info
    appVersion: pkg.version,         // The version of the application we are building
    win32metadata: {                        // Windows Only config data
        CompanyName: pkg.authors,
        ProductName: pkg.name,
        FileDescription: pkg.description,
        OriginalFilename: pkg.name + '.exe'
    }
};

    gulp.task('build:electron', done =>  {

        console.log('Launching task to package binaries for ' + opts.name + ' v' + opts['appVersion']);

    packager(opts).then(appPaths => {
            console.log(' PackagerDone(). appPaths :  ', appPaths);

        var zippedPromises = appPaths.map(function (appPath) {
            console.log('Preparing pipe for zip ', appPath + ".zip");
            return zipFolder(appPath, appPath + ".zip");
        });

        Promise.all(zippedPromises).then(function () {
            console.log(' Zip file created.');        
        }).catch(function (error) {
            console.error(error, error.stack);
        });    

        done();
    });

    });

, который снова работает в Windows, но возвращает ту же ошибку в Ubuntu. (zipFolder преобразует папку релиза в zip-файл, я написал только дополнительную функцию)

У меня вопрос: можно ли вообще не устанавливать вино и заставить его работать?

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

В конце решения могут заключаться в том, чтобы либо запустить скрипт сборки непосредственно в среде Windows, либо установить Wine под Linux (где «жил Дженкинс»). Идея от @Kim Gentes помогла мне подумать, особенно, о том, как лучше и понятнее организовать скрипт сборки.

0 голосов
/ 14 марта 2019

Короткий ответ заключается в том, что вы можете более эффективно использовать API electron-packager при попытке запуска в среде сценария сборки / среды Jenkins.По крайней мере, это то, что я нашел.Это позволяет вам гораздо более кратко конфигурировать и параметризировать ваше здание.

В нашем случае мы обернули electron-packager в красивый gulp скрипт, чтобы сделать его красивым и легко вызываемым из Jenkins.

Эта ссылка может дать вам представление о том, как это сделать, и о стандартных компонентах, которые было бы полезно использовать:

Пример построения приложения Electron с electron-packager

...