Skip to content

Commit e980468

Browse files
authored
Merge pull request #433 from wordpress-mobile/add/create_release_improvements
Add is_draft parameter to create_release_action
2 parents 7a9093c + 31ba061 commit e980468

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ _None_
1010

1111
### New Features
1212

13-
_None_
13+
- Add a `is_draft` parameter to the `create_release` action to specify whether the release should be created as a draft. [#433]
1414

1515
### Bug Fixes
1616

lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_release_action.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ def self.run(params)
1414
# Replace full URLS to PRs/Issues with shorthand, because GitHub does not render them properly otherwise.
1515
release_notes.gsub!(%r{https://github.com/([^/]*/[^/]*)/(pulls?|issues?)/([0-9]*)}, '\1#\3')
1616
prerelease = params[:prerelease]
17+
is_draft = params[:is_draft]
1718

1819
UI.message("Creating draft release #{version} in #{repository}.")
1920
# Verify assets
@@ -28,7 +29,8 @@ def self.run(params)
2829
target: params[:target],
2930
description: release_notes,
3031
assets: assets,
31-
prerelease: prerelease
32+
prerelease: prerelease,
33+
is_draft: is_draft
3234
)
3335
UI.message('Done')
3436
end
@@ -83,6 +85,12 @@ def self.available_options
8385
optional: true,
8486
default_value: false,
8587
is_string: false),
88+
FastlaneCore::ConfigItem.new(key: :is_draft,
89+
env_name: 'GHHELPER_CREATE_RELEASE_IS_DRAFT',
90+
description: 'True to create the GitHub release as a draft (instead of publishing it immediately)',
91+
optional: true,
92+
default_value: true,
93+
type: Boolean),
8694
Fastlane::Helper::GithubHelper.github_token_config_item,
8795
]
8896
end

lib/fastlane/plugin/wpmreleasetoolkit/helper/github_helper.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,15 +119,16 @@ def create_milestone(repository:, title:, due_date:, days_until_submission:, day
119119
# @param [String] description The text to use as the release's body / description (typically the release notes)
120120
# @param [Array<String>] assets List of file paths to attach as assets to the release
121121
# @param [TrueClass|FalseClass] prerelease Indicates if this should be created as a pre-release (i.e. for alpha/beta)
122+
# @param [TrueClass|FalseClass] is_draft Indicates if this should be created as a draft release
122123
#
123-
def create_release(repository:, version:, target: nil, description:, assets:, prerelease:)
124+
def create_release(repository:, version:, target: nil, description:, assets:, prerelease:, is_draft:)
124125
release = client.create_release(
125126
repository,
126127
version, # tag name
127128
name: version, # release name
128129
target_commitish: target || Git.open(Dir.pwd).log.first.sha,
129-
draft: true,
130130
prerelease: prerelease,
131+
draft: is_draft,
131132
body: description
132133
)
133134
assets.each do |file_path|

spec/github_helper_spec.rb

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ def create_milestone(due_date:, days_until_submission:, days_until_release:)
398398
it 'has the correct options' do
399399
options = { body: test_description, draft: true, name: test_tag, prerelease: false, target_commitish: test_target }
400400
expect(client).to receive(:create_release).with(test_repo, test_tag, options)
401-
create_release
401+
create_release(is_draft: true)
402402
end
403403

404404
it 'uploads the assets to the correct location' do
@@ -407,18 +407,31 @@ def create_milestone(due_date:, days_until_submission:, days_until_release:)
407407

408408
allow(client).to receive(:create_release).and_return({ url: test_url })
409409
expect(client).to receive(:upload_asset).with(test_url, test_assets, { content_type: 'application/octet-stream' })
410-
create_release(assets: [test_assets])
410+
create_release(is_draft: true, assets: [test_assets])
411411
end
412412

413-
def create_release(assets: [])
413+
it 'creates a draft release if is_draft is set to true' do
414+
options_draft_release = { body: test_description, draft: true, name: test_tag, prerelease: false, target_commitish: test_target }
415+
expect(client).to receive(:create_release).with(test_repo, test_tag, options_draft_release)
416+
create_release(is_draft: true)
417+
end
418+
419+
it 'creates a final (non-draft) release if is_draft is set to false' do
420+
options_final_release = { body: test_description, draft: false, name: test_tag, prerelease: false, target_commitish: test_target }
421+
expect(client).to receive(:create_release).with(test_repo, test_tag, options_final_release)
422+
create_release(is_draft: false)
423+
end
424+
425+
def create_release(is_draft:, assets: [])
414426
helper = described_class.new(github_token: 'Fake-GitHubToken-123')
415427
helper.create_release(
416428
repository: test_repo,
417429
version: test_tag,
418430
target: test_target,
419431
description: test_description,
420432
assets: assets,
421-
prerelease: false
433+
prerelease: false,
434+
is_draft: is_draft
422435
)
423436
end
424437
end

0 commit comments

Comments
 (0)