在Jenkinsfile中的Rails脚本上运行ruby

时间:2018-08-08 03:35:49

标签: ruby-on-rails ruby jenkins jenkins-pipeline jenkins-cli

当前,我将Gitlab设置为每当我推送到分支时,都会使用webhook触发Jenkins中的构建。我在Jenkins中使用插件updateKeepAlive(),以便该构建可以在所有分支上运行。

但是我在Jenkins中看到您需要将脚本放入 Jenkinsfile 中,但是我找不到如何在这种配置下运行ruby脚本的很好的参考。

这些是我需要完成的任务

// class PersistantTab extends StatefulWidget ...

class _PersistantTabState extends State<PersistantTab>
    with AutomaticKeepAliveClientMixin {
  bool keepAlive = false;

  @override
  void initState() {
    doAsyncStuff();
  }

  Future doAsyncStuff() async {
    keepAlive = true;
    updateKeepAlive();
    // Keeping alive...

    await Future.delayed(Duration(seconds: 10));

    keepAlive = false;
    updateKeepAlive();
    // Can be disposed whenever now.
  }

  @override
  bool get wantKeepAlive => keepAlive;

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

如何将这些脚本放入Jenkinsfile

Multibranch Pipeline

2 个答案:

答案 0 :(得分:1)

您可以将所有脚本放入一个ruby文件中,并运行如下代码:

sh 'ruby ./script.rb'

答案 1 :(得分:0)

@SatyamSingh描述的脚本示例如下:

install.sh

gem install bundler
bundle install
cp config/database-gitlab.yml config/database.yml
bundle exec rake db:create db:migrate RAILS_ENV=test
bundle exec rake test

Jenkinsfile

node {
...
    stage ('Clone') {
      checkout scm
    }
    stage ('Build') {
        sh gem install bundler
        sh bundle install
        sh cp config/database-gitlab.yml config/database.yml
        sh bundle exec rake db:create db:migrate RAILS_ENV=test
        sh bundle exec rake test
        ....
    }
    stage ('Tests') {
...
    }
...
}

以上两项均应属于您的项目SCM存储库。 Jenkinsfile在“ Build”阶段执行步骤中的每个Shell命令。