mirror of
https://github.com/actions/create-release.git
synced 2025-06-15 05:17:44 +00:00

Fixes #4 This adds the ability to include the body parameter when creating the release. - name: Checkout code uses: actions/checkout@master - name: Create Release id: create_release uses: actions/create-release@master with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} body: Release body This also supports a multiline body: - name: Create Release id: create_release uses: actions/create-release@master with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} body: | This is a multiline body with more than one line Or if you want the contents of a file: - name: Read CHANGELOG id: changelog run: | echo "::set-output name=body::$(cat CHANGELOG.md)" - name: Create Release id: create_release uses: actions/create-release@master with: release_name: Release ${{ github.ref }} body: ${{ steps.changelog.outputs.body }} One decision I made in favor of less code was to send an empty body when there was non present. If it would be preferred to send nothing in the request for the `body` attribute I could instead compose the parameters with an optional body attribute: releaseParams = { owner, repo, tag_name: tag, name: releaseName, draft, prerelease }; if (body) releaseParams.body = body; const createReleaseResponse = await github.repos.createRelease( releaseParams );
50 lines
2.0 KiB
JavaScript
50 lines
2.0 KiB
JavaScript
const core = require('@actions/core');
|
|
const { GitHub, context } = require('@actions/github');
|
|
|
|
async function run() {
|
|
try {
|
|
// Get authenticated GitHub client (Ocktokit): https://github.com/actions/toolkit/tree/master/packages/github#usage
|
|
const github = new GitHub(process.env.GITHUB_TOKEN);
|
|
|
|
// Get owner and repo from context of payload that triggered the action
|
|
const { owner, repo } = context.repo;
|
|
|
|
// Get the inputs from the workflow file: https://github.com/actions/toolkit/tree/master/packages/core#inputsoutputs
|
|
const tagName = core.getInput('tag_name', { required: true });
|
|
|
|
// This removes the 'refs/tags' portion of the string, i.e. from 'refs/tags/v1.10.15' to 'v1.10.15'
|
|
const tag = tagName.replace('refs/tags/', '');
|
|
const releaseName = core.getInput('release_name', { required: true }).replace('refs/tags/', '');
|
|
const body = core.getInput('body', { required: false });
|
|
const draft = core.getInput('draft', { required: false }) === 'true';
|
|
const prerelease = core.getInput('prerelease', { required: false }) === 'true';
|
|
|
|
// Create a release
|
|
// API Documentation: https://developer.github.com/v3/repos/releases/#create-a-release
|
|
// Octokit Documentation: https://octokit.github.io/rest.js/#octokit-routes-repos-create-release
|
|
const createReleaseResponse = await github.repos.createRelease({
|
|
owner,
|
|
repo,
|
|
tag_name: tag,
|
|
name: releaseName,
|
|
body,
|
|
draft,
|
|
prerelease
|
|
});
|
|
|
|
// Get the ID, html_url, and upload URL for the created Release from the response
|
|
const {
|
|
data: { id: releaseId, html_url: htmlUrl, upload_url: uploadUrl }
|
|
} = createReleaseResponse;
|
|
|
|
// Set the output variables for use by other actions: https://github.com/actions/toolkit/tree/master/packages/core#inputsoutputs
|
|
core.setOutput('id', releaseId);
|
|
core.setOutput('html_url', htmlUrl);
|
|
core.setOutput('upload_url', uploadUrl);
|
|
} catch (error) {
|
|
core.setFailed(error.message);
|
|
}
|
|
}
|
|
|
|
module.exports = run;
|