首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用环境变量作为版本来构建Ruby可以吗?

使用环境变量作为版本来构建Ruby可以吗?
EN

Stack Overflow用户
提问于 2022-04-14 12:56:32
回答 1查看 149关注 0票数 0

我想简化内部gem的部署到我们的私有Github rubygems注册中心。大多数情况下,在gemspec文件中,版本是硬编码或从另一个文件中读取的。这意味着,一旦您的代码库准备就绪,就要发布一个新版本,您必须创建一个拉请求,修改版本,合并,然后最后发布。

此工作流与我们的monorepo中的其他服务不匹配。最后,一旦我们想要发布,我们就创建一个分支发布/服务名称/v1.2,它触发了一个Github部署和一个专用的CI管道,在这里我们可以检索要发布的版本的名称。

因此,对于我们的创业板,我考虑使用一个环境变量来设置版本,当调用gem构建rubocop-xxxxx时,如下所示:

代码语言:javascript
复制
Gem::Specification.new do |spec|
  spec.platform = Gem::Platform::RUBY
  spec.name = 'rubocop-xxxxx'
  spec.metadata = {
    'github_repo' => 'ssh://github.com/xxxxx/monorepo',
    'allowed_push_host' => 'https://rubygems.pkg.github.com/xxxxx',
    'source_code_uri' => 'https://github.com/xxxxx/monorepo/tree/main/packages/common/rubocop'
  }
  spec.version = ENV['PACKAGE_RELEASE_VERSION'] || "0.0.0"
  spec.platform = Gem::Platform::RUBY
  spec.required_ruby_version = '>= 2.7'

  spec.files = Dir[
    'rubocop.yml',
    'conf/**/*',
    '*.gemspec',
    'Gemfile',
  ]

  spec.add_dependency('rubocop-performance', '~> 1.13.3')
  spec.add_dependency('rubocop-rails', '~> 2.14.2')
  spec.add_dependency('rubocop-rake', '~> 0.6.0')
  spec.add_dependency('rubocop-rspec', '~> 2.9.0')
  spec.add_dependency('rubocop-shopify', '~> 2.5.0')
end

这里的0.0.0回退是为了避免在运行Gemfile.lock时生成bundle install时出现问题。

有这样的宝石规格可以吗?或者我以后能看一些问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-04-14 15:49:21

我将而不是使用环境变量来设置gem版本。

如果您的目标是在最终发布rubocop-xxxxx gem之前在服务中测试它的发布候选版本,则可以在Gemfile中使用path 选项而不是发布每个更改。

示例

Gemfile:

代码语言:javascript
复制
gem "rubocop-xxxxx", path: <path-to-the-gem>

当gem的版本按预期工作时,释放它(带有硬编码的版本号),再次从Gemfile中删除Gemfile选项并指定释放的version

示例

Gemfile:

代码语言:javascript
复制
gem "rubocop-xxxxx", "~> 1.1"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71872028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档