Compare commits

..

44 Commits

Author SHA1 Message Date
fb0163a75b update changelog and bump package.json version 2021-07-27 00:52:21 -04:00
07c2133a09 Fix 'target_commitish' is already defined (#126) 2021-07-26 22:56:30 -04:00
f5d13571ca Fix invalid ${{ github.workflow }} in readme.md (#127) 2021-07-26 12:59:56 -04:00
5e6fc64554 fix yaml table fmt 2021-07-25 20:20:53 -04:00
fdb5f68261 fmt 2021-07-25 20:14:18 -04:00
2b68b29aae update changelog 2021-07-25 20:13:03 -04:00
6aeb2b7009 Merge branch 'alerque-default-token' 2021-07-25 20:11:43 -04:00
b323b1872a update changelog 2021-07-25 20:06:54 -04:00
7fd0762403 update changelog 2021-07-25 20:06:29 -04:00
f6cd293a1e Retain original release info if the keys are not set (#109) 2021-07-25 20:04:47 -04:00
350afcd40d Update github.ts (#111) 2021-07-25 20:04:10 -04:00
7cf90a9adf Support custom target_commitish value (#76)
* Make target_commitish configurable

* Store compiled action for testing

* Add target_commitish to metadata

* Allow override of target_commitish for updating

* Print commit usage

* Improve message for commit usage

* Update draft releases too

* Revert "Update draft releases too"

This reverts commit ff30f8edb1.

* Integrate latest changes from upstream.
2021-07-25 20:02:44 -04:00
51ef4d3b15 first promise rejection propagates to outer catch 2021-07-25 19:54:22 -04:00
2e6aa9a7f0 rebuild 2021-07-25 19:53:57 -04:00
12960c68c9 update changelog 2021-07-25 19:53:57 -04:00
e314c6fe22 allow creating draft releases without a tag (#95)
Co-authored-by: Doug Tangren <d.tangren@gmail.com>
2021-07-25 19:53:57 -04:00
3973e5f15a update changelog 2021-07-25 19:53:57 -04:00
cb6e676133 rebuild 2021-07-25 19:53:57 -04:00
defeeb7d92 release prep for 0.1.6 (#120) 2021-07-25 19:53:56 -04:00
9f3b580ccc lint fix and build 2021-07-25 19:53:56 -04:00
59b9126341 Retain original release info if the keys are not set (#109) 2021-07-25 19:53:56 -04:00
04c14f526b Update github.ts (#111) 2021-07-25 19:53:56 -04:00
2934fce629 Support custom target_commitish value (#76)
* Make target_commitish configurable

* Store compiled action for testing

* Add target_commitish to metadata

* Allow override of target_commitish for updating

* Print commit usage

* Improve message for commit usage

* Update draft releases too

* Revert "Update draft releases too"

This reverts commit ff30f8edb1.

* Integrate latest changes from upstream.
2021-07-25 19:53:53 -04:00
674bcd2d67 Add release id to outputs (#60)
* Add release ID to outputs

* Update README
2021-07-25 19:51:58 -04:00
6f63b4506e rebuild dist/index.js (#93)
Fixes #92
2021-07-25 19:51:18 -04:00
36fae76a5c use spaces instead tab (#87) 2021-07-25 19:51:15 -04:00
5eea929306 Merge branch 'zumalabs-handle-upload-errors' 2021-07-25 19:17:18 -04:00
12d1ded340 rebuild 2021-07-25 19:16:14 -04:00
766a84c1cf update changelog 2021-07-25 19:15:36 -04:00
3c49988886 allow creating draft releases without a tag (#95)
Co-authored-by: Doug Tangren <d.tangren@gmail.com>
2021-07-25 19:15:36 -04:00
4204c40f52 update changelog 2021-07-25 19:15:36 -04:00
f1168d714c release prep for 0.1.6 (#120) 2021-07-25 19:15:12 -04:00
ccb8d16f08 lint fix and build 2021-07-25 19:15:07 -04:00
75dbd0cd0e Retain original release info if the keys are not set (#109) 2021-07-25 19:14:37 -04:00
ec9df7c385 Update github.ts (#111) 2021-07-25 19:14:15 -04:00
03c4bc34bd Support custom target_commitish value (#76)
* Make target_commitish configurable

* Store compiled action for testing

* Add target_commitish to metadata

* Allow override of target_commitish for updating

* Print commit usage

* Improve message for commit usage

* Update draft releases too

* Revert "Update draft releases too"

This reverts commit ff30f8edb1.

* Integrate latest changes from upstream.
2021-07-25 19:14:12 -04:00
0a4afc0be2 Add release id to outputs (#60)
* Add release ID to outputs

* Update README
2021-07-25 19:13:46 -04:00
0a19cfc696 rebuild 2021-07-25 19:11:35 -04:00
b1829982df update changelog 2021-07-25 19:10:56 -04:00
688f58f697 allow creating draft releases without a tag (#95)
Co-authored-by: Doug Tangren <d.tangren@gmail.com>
2021-07-25 19:10:03 -04:00
3b4957b6fd first promise rejection propagates to outer catch 2021-04-22 14:13:42 +01:00
05d11c9fe8 Merge remote-tracking branch 'upstream/master' into default-token 2021-03-21 10:14:08 +03:00
7e3b173db6 Document use of token input parameter and deprecate env var 2021-03-16 07:50:23 +03:00
d5e4f508ae Accept PAT as input and default to typically usable value 2021-03-16 07:50:02 +03:00
8 changed files with 64 additions and 54 deletions

View File

@ -1,3 +1,9 @@
## 0.1.7
- allow creating draft releases without a tag [#95](https://github.com/softprops/action-gh-release/pull/95)
- Set default token for simpler setup [#83](https://github.com/softprops/action-gh-release/pull/83)
- fix regression with action yml [#126](https://github.com/softprops/action-gh-release/pull/126)
## 0.1.6 ## 0.1.6
This is a release catch up have a hiatus. Future releases will happen more frequently This is a release catch up have a hiatus. Future releases will happen more frequently

View File

@ -1,4 +1,3 @@
<div align="center"> <div align="center">
📦 :octocat: 📦 :octocat:
</div> </div>
@ -20,7 +19,6 @@
</a> </a>
</div> </div>
<br /> <br />
## 🤸 Usage ## 🤸 Usage
@ -47,8 +45,6 @@ jobs:
- name: Release - name: Release
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/') if: startsWith(github.ref, 'refs/tags/')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
``` ```
You can also use push config tag filter You can also use push config tag filter
@ -59,7 +55,7 @@ name: Main
on: on:
push: push:
tags: tags:
- 'v*.*.*' - "v*.*.*"
jobs: jobs:
build: build:
@ -69,8 +65,6 @@ jobs:
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Release - name: Release
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
``` ```
### ⬆️ Uploading release assets ### ⬆️ Uploading release assets
@ -104,8 +98,6 @@ jobs:
if: startsWith(github.ref, 'refs/tags/') if: startsWith(github.ref, 'refs/tags/')
with: with:
files: Release.txt files: Release.txt
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
``` ```
Below is an example of uploading more than one asset with a GitHub release Below is an example of uploading more than one asset with a GitHub release
@ -132,8 +124,6 @@ jobs:
files: | files: |
Release.txt Release.txt
LICENSE LICENSE
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
``` ```
> **⚠️ Note:** Notice the `|` in the yaml syntax above ☝️. That let's you effectively declare a multi-line yaml string. You can learn more about multi-line yaml syntax [here](https://yaml-multiline.info) > **⚠️ Note:** Notice the `|` in the yaml syntax above ☝️. That let's you effectively declare a multi-line yaml string. You can learn more about multi-line yaml syntax [here](https://yaml-multiline.info)
@ -156,14 +146,13 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Generate Changelog - name: Generate Changelog
run: echo "# Good things have arrived" > ${{ github.workflow }}-CHANGELOG.txt run: echo "# Good things have arrived" > ${{ github.workspace }}-CHANGELOG.txt
- name: Release - name: Release
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/') if: startsWith(github.ref, 'refs/tags/')
with: with:
body_path: ${{ github.workflow }}-CHANGELOG.txt body_path: ${{ github.workspace }}-CHANGELOG.txt
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: my_gh_org/my_gh_repo GITHUB_REPOSITORY: my_gh_org/my_gh_repo
``` ```
@ -174,7 +163,7 @@ jobs:
The following are optional as `step.with` keys The following are optional as `step.with` keys
| Name | Type | Description | | Name | Type | Description |
|---------------------------|---------|-----------------------------------------------------------------------------------------------------| | ------------------------- | ------- | --------------------------------------------------------------------------------------------------- |
| `body` | String | Text communicating notable changes in this release | | `body` | String | Text communicating notable changes in this release |
| `body_path` | String | Path to load text communicating notable changes in this release | | `body_path` | String | Path to load text communicating notable changes in this release |
| `draft` | Boolean | Indicator of whether or not this release is a draft | | `draft` | Boolean | Indicator of whether or not this release is a draft |
@ -184,6 +173,7 @@ The following are optional as `step.with` keys
| `tag_name` | String | Name of a tag. defaults to `github.ref` | | `tag_name` | String | Name of a tag. defaults to `github.ref` |
| `fail_on_unmatched_files` | Boolean | Indicator of whether to fail if any of the `files` globs match nothing | | `fail_on_unmatched_files` | Boolean | Indicator of whether to fail if any of the `files` globs match nothing |
| `target_commitish` | String | Commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. | | `target_commitish` | String | Commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. |
| `token` | String | Secret GitHub Personal Access Token. Defaults to `${{ github.token }}` |
💡 When providing a `body` and `body_path` at the same time, `body_path` will be 💡 When providing a `body` and `body_path` at the same time, `body_path` will be
attempted first, then falling back on `body` if the path can not be read from. attempted first, then falling back on `body` if the path can not be read from.
@ -196,22 +186,20 @@ release will retain its original info.
The following outputs can be accessed via `${{ steps.<step-id>.outputs }}` from this action The following outputs can be accessed via `${{ steps.<step-id>.outputs }}` from this action
| Name | Type | Description | | Name | Type | Description |
|-------------|---------|-----------------------------------------------------------------| | ------------ | ------ | --------------------------------------- |
| `url` | String | Github.com URL for the release | | `url` | String | Github.com URL for the release |
| `id` | String | Release ID | | `id` | String | Release ID |
| `upload_url`| String | URL for uploading assets to the release | | `upload_url` | String | URL for uploading assets to the release |
#### environment variables #### environment variables
The following are *required* as `step.env` keys The following `step.env` keys are allowed as a fallback but deprecated in favor of using inputs.
| Name | Description |
|----------------|--------------------------------------|
| `GITHUB_TOKEN` | GITHUB_TOKEN as provided by `secrets`|
| `GITHUB_REPOSITORY` | Name of a target repository in `<owner>/<repo>` format. defaults to the current repository|
| Name | Description |
| ------------------- | ------------------------------------------------------------------------------------------ |
| `GITHUB_TOKEN` | GITHUB_TOKEN as provided by `secrets` |
| `GITHUB_REPOSITORY` | Name of a target repository in `<owner>/<repo>` format. defaults to the current repository |
> **⚠️ Note:** This action was previously implemented as a Docker container, limiting its use to GitHub Actions Linux virtual environments only. With recent releases, we now support cross platform usage. You'll need to remove the `docker://` prefix in these versions > **⚠️ Note:** This action was previously implemented as a Docker container, limiting its use to GitHub Actions Linux virtual environments only. With recent releases, we now support cross platform usage. You'll need to remove the `docker://` prefix in these versions

View File

@ -1,50 +1,54 @@
# https://help.github.com/en/articles/metadata-syntax-for-github-actions # https://help.github.com/en/articles/metadata-syntax-for-github-actions
name: 'GH Release' name: "GH Release"
description: 'Github Action for creating Github Releases' description: "Github Action for creating Github Releases"
author: 'softprops' author: "softprops"
inputs: inputs:
body: body:
description: 'Note-worthy description of changes in release' description: "Note-worthy description of changes in release"
required: false required: false
body_path: body_path:
description: 'Path to load note-worthy description of changes in release from' description: "Path to load note-worthy description of changes in release from"
required: false required: false
name: name:
description: 'Gives the release a custom name. Defaults to tag name' description: "Gives the release a custom name. Defaults to tag name"
required: false required: false
tag_name: tag_name:
description: 'Gives a tag name. Defaults to github.GITHUB_REF' description: "Gives a tag name. Defaults to github.GITHUB_REF"
required: false required: false
draft: draft:
description: 'Creates a draft release. Defaults to false' description: "Creates a draft release. Defaults to false"
required: false required: false
prerelease: prerelease:
description: 'Identify the release as a prerelease. Defaults to false' description: "Identify the release as a prerelease. Defaults to false"
required: false required: false
files: files:
description: 'Newline-delimited list of path globs for asset files to upload' description: "Newline-delimited list of path globs for asset files to upload"
required: false required: false
fail_on_unmatched_files: fail_on_unmatched_files:
description: 'Fails if any of the `files` globs match nothing. Defaults to false' description: "Fails if any of the `files` globs match nothing. Defaults to false"
required: false required: false
repository: repository:
description: 'Repository to make releases against, in <owner>/<repo> format' description: "Repository to make releases against, in <owner>/<repo> format"
required: false required: false
token:
description: "Authorized secret GitHub Personal Access Token. Defaults to github.token"
required: false
default: ${{ github.token }}
target_commitish: target_commitish:
description: 'Commitish value that determines where the Git tag is created from. Can be any branch or commit SHA.' description: "Commitish value that determines where the Git tag is created from. Can be any branch or commit SHA."
required: false required: false
env: env:
'GITHUB_TOKEN': 'As provided by Github Actions' "GITHUB_TOKEN": "As provided by Github Actions"
outputs: outputs:
url: url:
description: 'URL to the Release HTML Page' description: 'URL to the Release HTML Page'
id: id:
description: 'Release ID' description: 'Release ID'
upload_url: upload_url:
description: 'URL for uploading assets to the release' description: "URL for uploading assets to the release"
runs: runs:
using: 'node12' using: "node12"
main: 'dist/index.js' main: "dist/index.js"
branding: branding:
color: 'green' color: "green"
icon: 'package' icon: "package"

2
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"name": "action-gh-release", "name": "action-gh-release",
"version": "0.1.6", "version": "0.1.7",
"private": true, "private": true,
"description": "GitHub Action for creating GitHub Releases", "description": "GitHub Action for creating GitHub Releases",
"main": "lib/main.js", "main": "lib/main.js",

View File

@ -1,5 +1,5 @@
import { GitHub } from "@actions/github"; import { GitHub } from "@actions/github";
import { Config, releaseBody } from "./util"; import { Config, isTag, releaseBody } from "./util";
import { lstatSync, readFileSync } from "fs"; import { lstatSync, readFileSync } from "fs";
import { getType } from "mime"; import { getType } from "mime";
import { basename } from "path"; import { basename } from "path";
@ -154,7 +154,10 @@ export const release = async (
const [owner, repo] = config.github_repository.split("/"); const [owner, repo] = config.github_repository.split("/");
const tag = const tag =
config.input_tag_name || config.github_ref.replace("refs/tags/", ""); config.input_tag_name ||
(isTag(config.github_ref)
? config.github_ref.replace("refs/tags/", "")
: "");
try { try {
// you can't get a an existing draft by tag // you can't get a an existing draft by tag
// so we must find one in the list of all releases // so we must find one in the list of all releases

View File

@ -7,7 +7,11 @@ import { env } from "process";
async function run() { async function run() {
try { try {
const config = parseConfig(env); const config = parseConfig(env);
if (!config.input_tag_name && !isTag(config.github_ref)) { if (
!config.input_tag_name &&
!isTag(config.github_ref) &&
!config.input_draft
) {
throw new Error(`⚠️ GitHub Releases requires a tag`); throw new Error(`⚠️ GitHub Releases requires a tag`);
} }
if (config.input_files) { if (config.input_files) {
@ -49,8 +53,12 @@ async function run() {
if (files.length == 0) { if (files.length == 0) {
console.warn(`🤔 ${config.input_files} not include valid file.`); console.warn(`🤔 ${config.input_files} not include valid file.`);
} }
files.forEach(async path => { await Promise.all(
await upload(gh, rel.upload_url, path); files.map(async path => {
await upload(gh, rel.upload_url, path);
})
).catch(error => {
throw error;
}); });
} }
console.log(`🎉 Release ready at ${rel.html_url}`); console.log(`🎉 Release ready at ${rel.html_url}`);

View File

@ -1,3 +1,4 @@
import { getInput } from "@actions/core";
import * as glob from "glob"; import * as glob from "glob";
import { lstatSync, readFileSync } from "fs"; import { lstatSync, readFileSync } from "fs";
@ -41,7 +42,7 @@ export const parseInputFiles = (files: string): string[] => {
export const parseConfig = (env: Env): Config => { export const parseConfig = (env: Env): Config => {
return { return {
github_token: env.GITHUB_TOKEN || "", github_token: getInput("token") || env.GITHUB_TOKEN || "",
github_ref: env.GITHUB_REF || "", github_ref: env.GITHUB_REF || "",
github_repository: env.INPUT_REPOSITORY || env.GITHUB_REPOSITORY || "", github_repository: env.INPUT_REPOSITORY || env.GITHUB_REPOSITORY || "",
input_name: env.INPUT_NAME, input_name: env.INPUT_NAME,