无法使用shipit.js进行部署:错误:命令失败:git checkout undefined

时间:2018-04-04 19:17:21

标签: javascript node.js deployment shipitjs

我正在使用shipit.js将我的nodejs应用程序部署到Ubuntu 16.04服务器。它工作正常,但最近我开始收到以下错误:

./node_modules/shipit-cli/bin/shipit production deploy start

Running 'deploy:init' task...
Finished 'deploy:init' after 1.46 ms

Running 'deploy:fetch' task...
Deleting existing workspace "/tmp/github-monitor"
Running "rm -rf /tmp/github-monitor" on local.
Create workspace "/tmp/github-monitor"
Workspace created.
Initialize local repository in "/tmp/github-monitor"
Running "git init" on local.
@ Initialized empty Git repository in /private/tmp/github-monitor/.git/
Repository initialized.
List local remotes.
Running "git remote" on local.
Update remote "git@github.com:myusername/myapp.git" to local repository "/tmp/github-monitor"
Running "git remote add shipit git@github.com:myusername/myapp.git" on local.
Remote updated.
Fetching repository "git@github.com:myusername/myapp.git"
Running "git fetch shipit --prune --depth=1 && git fetch shipit --prune "refs/tags/*:refs/tags/*"" on local.
@ From github.com:myusername/myapp
@  * [new branch]      develop    -> shipit/develop
@  * [new branch]      login      -> shipit/login
@  * [new branch]      master     -> shipit/master
Repository fetched.
Checking out commit-ish "undefined"
Running "git checkout undefined" on local.
@ error: pathspec 'undefined' did not match any file(s) known to git.
'deploy:fetch' errored after 39 s
Error: Command failed: git checkout undefined
error: pathspec 'undefined' did not match any file(s) known to git.

    at ChildProcess.exithandler (child_process.js:275:12)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at maybeClose (internal/child_process.js:925:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)

我使用以下版本:

node:v8.11.1 npm:5.6.0 shipit-deploy:^ 2.5.1 shipit:4.0.1

这是我的shipit.js文件:

module.exports = shipit => {
    require('shipit-deploy')(shipit);

    shipit.initConfig({
        default: {
            workspace: '/tmp/github-monitor',
            deployTo: '~/apps/myapp',
            repositoryUrl: 'git@github.com:myusername/myapp.git',
            ignores: ['.git', 'node_modules'],
            rsync: ['--del'],
            keepReleases: 2,
            key: '~/.ssh/mykey',
            shallowClone: true,
        },
        production: {
            servers: 'me@myserver.org',
        },
    });

    shipit.task('start', function() {
        shipit.log('Installing...');
        let promise1 = shipit.remote('cd ~/apps/myapp/current && yarn');
        let promise2 = promise1.then(function(res) {
            shipit.log('Building...');
            shipit.remote('cd ~/apps/myapp/current && npm run build');
        });
        let promise3 = promise2.then(function(res) {
            shipit.log('Copying Environment File...');
            shipit.remote('cp ~/apps/myapp/shared/.env ~/apps/myapp/current');
        });
        promise3.then(function(res) {
            shipit.log('Starting...');
            shipit.remote(
                'pm2 delete server && pm2 start ~/apps/myapp/current/server.js --name "server"'
            );
        });
    });
};

我真的很难过是什么导致了这一点。我最近将本地环境从节点v8.0.0升级到8.11.1,但这似乎不是原因。任何帮助理解这个问题都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我需要在shipit.initConfig中指定一个分支。

shipit.initConfig({
    default: {
        workspace: '/tmp/github-monitor',
        deployTo: '~/apps/myapp',
        repositoryUrl: 'git@github.com:myusername/myapp.git',
        ignores: ['.git', 'node_modules'],
        rsync: ['--del'],
        keepReleases: 2,
        key: '~/.ssh/mykey',
        shallowClone: true,
        branch: 'master',
    },
    production: {
        servers: 'me@myserver.org',
    },
});