diff --git a/README.md b/README.md index 1b936c6..ee63f0a 100644 --- a/README.md +++ b/README.md @@ -6,18 +6,19 @@ An action to support publishing release to Gitea. The following are optional as `step.with` keys -| Name | Type | Description | -| -------------- | ------- | ------------------------------------------------------------------------------------------- | -| `server_url` | String | the base url of the gitea API. Defaults to `github.server_url` | -| `body` | String | Text communicating notable changes in this release | -| `body_path` | String | Path to load text communicating notable changes in this release | -| `draft` | Boolean | Creates a draft release. Defaults to false | -| `prerelease` | Boolean | Indicator of whether or not is a prerelease | -| `files` | String | Newline-delimited globs of paths to assets to upload for release | -| `name` | String | Name of the release. Defaults to tag name | -| `tag_name` | String | Name of a tag. Defaults to `github.ref_name` | -| `repository` | String | Name of a target repository in `/` format. Defaults to `github.repository` | -| `token` | String | Gitea Token. Defaults to `${{ github.token }}` | +| Name | Type | Description | +| ------------------ | ------- | --------------------------------------------------------------------------------------------------- | +| `server_url` | String | the base url of the gitea API. Defaults to `github.server_url` | +| `body` | String | Text communicating notable changes in this release | +| `body_path` | String | Path to load text communicating notable changes in this release | +| `draft` | Boolean | Creates a draft release. Defaults to false | +| `prerelease` | Boolean | Indicator of whether or not is a prerelease | +| `files` | String | Newline-delimited globs of paths to assets to upload for release | +| `name` | String | Name of the release. Defaults to tag name | +| `tag_name` | String | Name of a tag. Defaults to `github.ref_name` | +| `repository` | String | Name of a target repository in `/` format. Defaults to `github.repository` | +| `token` | String | Gitea Token. Defaults to `${{ github.token }}` | +| `target_commitish` | String | Commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. | ## Example usage diff --git a/action.yml b/action.yml index a82ba9d..7d0276d 100644 --- a/action.yml +++ b/action.yml @@ -35,6 +35,9 @@ inputs: description: "Gitea Token" required: false default: ${{ github.token }} + target_commitish: + description: 'Commitish value that determines where the Git tag is created from. Can be any branch or commit SHA.' + required: false runs: using: "node16" main: "dist/index.js" diff --git a/dist/index.js b/dist/index.js index e06df36..883c8ad 100644 --- a/dist/index.js +++ b/dist/index.js @@ -40905,6 +40905,7 @@ async function run() { const files = core.getInput("files") const repository = core.getInput("repository") const token = core.getInput("token") + const target_commitish = core.getInput("target_commitish") const [owner, repo] = (repository).split("/") @@ -40920,6 +40921,7 @@ async function run() { name: name, prerelease: prerelease, tag_name: tag_name, + target_commitish: target_commitish, }) const file_patterns = files.split('\n') const all_files = paths(file_patterns); @@ -40949,12 +40951,36 @@ async function createOrGetRelease(client, owner, repo, body) { repo: repo, tag: body.tag_name, }) + const release_id = release.id; + let target_commitish = release.target_commitish; + if (body.target_commitish && body.target_commitish !== release.target_commitish) { + console.log(`Updating commit from "${release.target_commitish}" to "${body.target_commitish}"`); + } + target_commitish = body.target_commitish; + release = client.repository.repoEditRelease({ + owner: owner, + repo: repo, + id: release_id, + body: { + body: body.body || release.body, + draft: body.draft !== undefined ? body.draft : release.draft, + name: body.name || release.name, + prerelease: body.prerelease !== undefined ? body.prerelease : release.prerelease, + tag_name: body.tag_name || release.tag_name, + target_commitish: body.target_commitish || release.target_commitish, + } + }) return release } catch (error) { if (!(error instanceof dist/* ApiError */.MS) || error.status !== 404) { throw error } } + let commit_message = ""; + if (body.target_commitish) { + commit_message = ` using commit "${body.target_commitish}"`; + } + console.log(`👩‍🏭 Creating new GitHub release for tag ${body.tag_name}${commit_message}...`); let release = await client.repository.repoCreateRelease({ owner: owner, repo: repo, diff --git a/main.js b/main.js index f817c2d..b63e732 100644 --- a/main.js +++ b/main.js @@ -18,6 +18,7 @@ async function run() { const files = core.getInput("files") const repository = core.getInput("repository") const token = core.getInput("token") + const target_commitish = core.getInput("target_commitish") const [owner, repo] = (repository).split("/") @@ -33,6 +34,7 @@ async function run() { name: name, prerelease: prerelease, tag_name: tag_name, + target_commitish: target_commitish, }) const file_patterns = files.split('\n') const all_files = paths(file_patterns); @@ -62,12 +64,36 @@ async function createOrGetRelease(client, owner, repo, body) { repo: repo, tag: body.tag_name, }) + const release_id = release.id; + let target_commitish = release.target_commitish; + if (body.target_commitish && body.target_commitish !== release.target_commitish) { + console.log(`Updating commit from "${release.target_commitish}" to "${body.target_commitish}"`); + } + target_commitish = body.target_commitish; + release = client.repository.repoEditRelease({ + owner: owner, + repo: repo, + id: release_id, + body: { + body: body.body || release.body, + draft: body.draft !== undefined ? body.draft : release.draft, + name: body.name || release.name, + prerelease: body.prerelease !== undefined ? body.prerelease : release.prerelease, + tag_name: body.tag_name || release.tag_name, + target_commitish: body.target_commitish || release.target_commitish, + } + }) return release } catch (error) { if (!(error instanceof gitea.ApiError) || error.status !== 404) { throw error } } + let commit_message = ""; + if (body.target_commitish) { + commit_message = ` using commit "${body.target_commitish}"`; + } + console.log(`👩‍🏭 Creating new GitHub release for tag ${body.tag_name}${commit_message}...`); let release = await client.repository.repoCreateRelease({ owner: owner, repo: repo,