update README, add support for reusing draft release

This commit is contained in:
Sandi Chakravarty 2019-10-04 01:02:12 -07:00
parent 62bb848510
commit af317de1da
No known key found for this signature in database
GPG Key ID: 71D0281522F1431F
3 changed files with 66 additions and 0 deletions

View File

@ -13,6 +13,11 @@ You must provide:
- `tag`: The tag to uploaded into. If you want the current event's tag, use `${{ github.ref }}` - `tag`: The tag to uploaded into. If you want the current event's tag, use `${{ github.ref }}`
- `overwrite`: If an asset with the same name already exists, overwrite it. - `overwrite`: If an asset with the same name already exists, overwrite it.
Optional Arguments
- `draft`: The release will be marked as a draft if this is set
- `file_glob`: If set to true, the file argument can be a glob pattern (asset_name is ignored in this case)
## Usage ## Usage
This usage assumes you want to build on tag creations only. This usage assumes you want to build on tag creations only.
@ -92,3 +97,36 @@ jobs:
asset_name: ${{ matrix.asset_name }} asset_name: ${{ matrix.asset_name }}
tag: ${{ github.ref }} tag: ${{ github.ref }}
``` ```
Example with file_glob and draft
```yaml
name: Publish
on:
push:
tags:
- '*'
jobs:
build:
name: Publish binaries
runs-on: ubuntu-latest
steps:
- uses: hecrj/setup-rust-action@v1-release
with:
rust-version: stable
- uses: actions/checkout@v1
- name: Build
run: cargo build --release
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v1-release
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: target/release/my*
tag: ${{ github.ref }}
overwrite: true
draft: true
file_glob: true
```

View File

@ -29,6 +29,19 @@ function get_release_by_tag(tag, octokit, context, draft) {
catch (error) { catch (error) {
// If this returns 404, we need to create the release first. // If this returns 404, we need to create the release first.
if (error.status === 404) { if (error.status === 404) {
// if there is a draft release already, use that
if (draft) {
const releases = yield octokit.repos.listReleases(Object.assign({}, context.repo));
core.debug(`Found ${releases.length} releases, looking for draft release to piggyback..`);
for (let i = 0; i < releases.length; i += 1) {
const release = releases[i];
if (release.data.draft) {
core.debug(`Found draft release in repo, name: ${release.data.name}`);
return release;
}
}
}
// otherwise create a release (draft if necessary)
core.debug(`Release for tag ${tag} doesn't exist yet so we'll create it now.`); core.debug(`Release for tag ${tag} doesn't exist yet so we'll create it now.`);
return yield octokit.repos.createRelease(Object.assign({}, context.repo, { tag_name: tag, draft })); return yield octokit.repos.createRelease(Object.assign({}, context.repo, { tag_name: tag, draft }));
} }

View File

@ -15,6 +15,21 @@ async function get_release_by_tag(tag: string, octokit: any, context: any, draft
} catch (error) { } catch (error) {
// If this returns 404, we need to create the release first. // If this returns 404, we need to create the release first.
if (error.status === 404) { if (error.status === 404) {
// if there is a draft release already, use that
if (draft) {
const releases = await octokit.repos.listReleases({
...context.repo,
});
core.debug(`Found ${releases.length} releases, looking for draft release to piggyback..`)
for (let i = 0; i < releases.length; i += 1) {
const release = releases[i];
if (release.data.draft) {
core.debug(`Found draft release in repo, name: ${release.data.name}`)
return release;
}
}
}
// otherwise create a release (draft if necessary)
core.debug(`Release for tag ${tag} doesn't exist yet so we'll create it now.`) core.debug(`Release for tag ${tag} doesn't exist yet so we'll create it now.`)
return await octokit.repos.createRelease({ return await octokit.repos.createRelease({
...context.repo, ...context.repo,