63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
const core = require('@actions/core');
|
|
const fetch = require('node-fetch');
|
|
const fs = require('fs');
|
|
const FormData = require('form-data');
|
|
|
|
(async () => {
|
|
try {
|
|
const token = process.env.GITEA_TOKEN;
|
|
const serverUrl = process.env.GITEA_SERVER_URL;
|
|
const repo = process.env.GITEA_REPOSITORY;
|
|
const tag = core.getInput('tag');
|
|
const title = core.getInput('title');
|
|
const draft = core.getInput('draft') === 'true';
|
|
const files = core.getInput('files');
|
|
|
|
// Create the release
|
|
const releaseRes = await fetch(`${serverUrl}/api/v1/repos/${repo}/releases`, {
|
|
method: 'POST',
|
|
headers: {
|
|
Authorization: `token ${token}`,
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify({
|
|
tag_name: tag,
|
|
name: title,
|
|
draft: draft
|
|
})
|
|
});
|
|
|
|
if (!releaseRes.ok) {
|
|
throw new Error(`Failed to create release: ${releaseRes.status} ${await releaseRes.text()}`);
|
|
}
|
|
|
|
const releaseData = await releaseRes.json();
|
|
const uploadUrl = `${serverUrl}/api/v1/repos/${repo}/releases/${releaseData.id}/assets`;
|
|
|
|
// Upload files
|
|
if (files) {
|
|
const fileList = files.split(',').map(f => f.trim());
|
|
for (const file of fileList) {
|
|
const form = new FormData();
|
|
form.append('attachment', fs.createReadStream(file));
|
|
|
|
const uploadRes = await fetch(uploadUrl, {
|
|
method: 'POST',
|
|
headers: {
|
|
Authorization: `token ${token}`
|
|
},
|
|
body: form
|
|
});
|
|
|
|
if (!uploadRes.ok) {
|
|
throw new Error(`Failed to upload file ${file}: ${uploadRes.status} ${await uploadRes.text()}`);
|
|
}
|
|
|
|
core.info(`✅ Uploaded: ${file}`);
|
|
}
|
|
}
|
|
} catch (err) {
|
|
core.setFailed(err.message);
|
|
}
|
|
})();
|