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 }}`
|
- `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
|
||||||
|
```
|
||||||
|
13
lib/main.js
13
lib/main.js
@ -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 }));
|
||||||
}
|
}
|
||||||
|
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) {
|
} 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,
|
||||||
|
Loading…
Reference in New Issue
Block a user