update README, add support for reusing draft release
This commit is contained in:
parent
62bb848510
commit
af317de1da
38
README.md
38
README.md
@ -13,6 +13,11 @@ You must provide:
|
||||
- `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.
|
||||
|
||||
|
||||
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
|
||||
|
||||
This usage assumes you want to build on tag creations only.
|
||||
@ -92,3 +97,36 @@ jobs:
|
||||
asset_name: ${{ matrix.asset_name }}
|
||||
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
|
||||
```
|
||||
|
13
lib/main.js
13
lib/main.js
@ -29,6 +29,19 @@ function get_release_by_tag(tag, octokit, context, draft) {
|
||||
catch (error) {
|
||||
// If this returns 404, we need to create the release first.
|
||||
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.`);
|
||||
return yield octokit.repos.createRelease(Object.assign({}, context.repo, { tag_name: tag, draft }));
|
||||
}
|
||||
|
15
src/main.ts
15
src/main.ts
@ -15,6 +15,21 @@ async function get_release_by_tag(tag: string, octokit: any, context: any, draft
|
||||
} catch (error) {
|
||||
// If this returns 404, we need to create the release first.
|
||||
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.`)
|
||||
return await octokit.repos.createRelease({
|
||||
...context.repo,
|
||||
|
Loading…
Reference in New Issue
Block a user