mirror of https://gitee.com/floraachy/llalaad.git
删除文件 src/index.js
This commit is contained in:
parent
7997d7a9f3
commit
4473b0e04e
143
src/index.js
143
src/index.js
|
@ -1,143 +0,0 @@
|
||||||
const core = require('@actions/core');
|
|
||||||
const axios = require('axios');
|
|
||||||
const crypto = require('crypto');
|
|
||||||
|
|
||||||
function generateRandomString(length) {
|
|
||||||
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
||||||
let result = '';
|
|
||||||
const charactersLength = characters.length;
|
|
||||||
for (let i = 0; i < length; i++) {
|
|
||||||
const randomIndex = Math.floor(Math.random() * charactersLength);
|
|
||||||
result += characters.charAt(randomIndex);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
const upload_artifact = async () => {
|
|
||||||
//使用trim移除前后的多余空格
|
|
||||||
const domain = (process.env['INPUT_DOMAIN'] || "http://172.20.32.201:4000").trim();
|
|
||||||
const username = (process.env['INPUT_USERNAME'] || '').trim();
|
|
||||||
const password = (process.env['INPUT_PASSWORD'] || '').trim();
|
|
||||||
const repository = (process.env['INPUT_REPOSITORY'] || process.env['GITHUB_REPOSITORY'] || '').trim();
|
|
||||||
const tag_name = (process.env['INPUT_TAG_NAME'] || generateRandomString(5)).trim();
|
|
||||||
const release_title = (process.env['INPUT_RELEASE_TITLE'] || '').trim();
|
|
||||||
const release_desc = (process.env['INPUT_RELEASE_DESC'] || '').trim();
|
|
||||||
const sha = (process.env['INPUT_SHA'] || '').trim();
|
|
||||||
|
|
||||||
|
|
||||||
console.log("---打印一下接收到的各项参数---")
|
|
||||||
console.log("domain: ", domain)
|
|
||||||
console.log("username: ", username)
|
|
||||||
console.log("password: ", password)
|
|
||||||
console.log("repository: ", repository)
|
|
||||||
console.log("release_title: ", release_title)
|
|
||||||
console.log("release_desc: ", release_desc)
|
|
||||||
console.log("tag_name: ", release_desc)
|
|
||||||
console.log("sha: ", sha)
|
|
||||||
|
|
||||||
const new_domain = domain.endsWith('/') ? domain.slice(0, -1) : domain;
|
|
||||||
console.log("new_domain: ", new_domain)
|
|
||||||
|
|
||||||
// -------------------- 将登录密码基于平台加密算法加密----------------------------
|
|
||||||
function aesEncrypt(plainText, keyStr, ivStr) {
|
|
||||||
// 将字符串密钥和IV转换为16字节的Buffer
|
|
||||||
const key = Buffer.from(keyStr.slice(0, 16), 'utf8');
|
|
||||||
const iv = Buffer.from(ivStr.slice(0, 16), 'utf8');
|
|
||||||
|
|
||||||
// 创建并设置AES-CBC加密器
|
|
||||||
const cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
|
|
||||||
|
|
||||||
// 加密数据,并添加PKCS7填充
|
|
||||||
let encryptedData = cipher.update(plainText, 'utf8', 'base64');
|
|
||||||
encryptedData += cipher.final('base64');
|
|
||||||
|
|
||||||
return encryptedData;
|
|
||||||
}
|
|
||||||
|
|
||||||
const key = '59c96c3572ab8cc1'; // 密钥
|
|
||||||
const iv = '59c96c3572ab8cc1'; // 初始化向量
|
|
||||||
|
|
||||||
// 加密
|
|
||||||
const pwd = aesEncrypt(password, key, iv);
|
|
||||||
console.log("加密后的密码: ", pwd);
|
|
||||||
|
|
||||||
try {
|
|
||||||
// -------------------- 登录,获取用户cookies----------------------------
|
|
||||||
|
|
||||||
const loginCookies = await fetch(new_domain + "/api/accounts/login.json", {
|
|
||||||
"headers": {
|
|
||||||
"content-type": "application/json",
|
|
||||||
},
|
|
||||||
"body": `{\"login\":\"${username}\",\"password\":\"${pwd}\",\"autologin\":0}`,
|
|
||||||
"method": "POST",
|
|
||||||
"mode": "cors",
|
|
||||||
"credentials": "include"
|
|
||||||
}).then((r) => r.headers.get('Set-Cookie'))
|
|
||||||
console.log("loginCookies=======" + loginCookies)
|
|
||||||
|
|
||||||
if (!sha) {
|
|
||||||
try {
|
|
||||||
// 获取仓库的默认分支
|
|
||||||
const detail_url = new_domain + "/api/" + repository + "/detail.json";
|
|
||||||
console.log("detail_url=======" + detail_url)
|
|
||||||
const detailResponse = await axios.get(detail_url, {
|
|
||||||
headers: {
|
|
||||||
cookie: loginCookies
|
|
||||||
}
|
|
||||||
});
|
|
||||||
console.log(JSON.stringify(detailResponse.data));
|
|
||||||
// 检查 HTTP 状态码
|
|
||||||
if (detailResponse.status !== 200) {
|
|
||||||
throw new Error(`请求接口detail.json失败,状态码:${detailResponse.status}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查业务状态码
|
|
||||||
if (detailResponse.data.status !== 1) {
|
|
||||||
throw new Error('请求接口detail.json失败:' + detailResponse.data);
|
|
||||||
}
|
|
||||||
// 获取默认分支,如果获取失败,则赋予默认值为master
|
|
||||||
const sha = detailResponse.data.default_branch || 'master';
|
|
||||||
console.log("sha=======" + sha);
|
|
||||||
|
|
||||||
} catch (error) {
|
|
||||||
console.error("请求接口detail.json时发生错误:", error);
|
|
||||||
throw error; // 或者返回一个默认值,例如 'main'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let releases_data = {
|
|
||||||
"tag_name": tag_name, //标签,标记一个版本,必填
|
|
||||||
"name": release_title + "_" + generateRandomString(5), // 发行版标题,必填
|
|
||||||
"body": release_desc, //发行版描述,选填
|
|
||||||
"target_commitish": sha
|
|
||||||
}
|
|
||||||
console.log("releases_data=======" + JSON.stringify(releases_data));
|
|
||||||
|
|
||||||
let api_config = {
|
|
||||||
method: 'post',
|
|
||||||
maxBodyLength: Infinity,
|
|
||||||
url: new_domain + '/api/' + repository + '/releases.json',
|
|
||||||
headers: {
|
|
||||||
'cookie': loginCookies
|
|
||||||
},
|
|
||||||
data: releases_data
|
|
||||||
};
|
|
||||||
const apiResponse = await axios.request(api_config)
|
|
||||||
console.log(JSON.stringify(apiResponse.data));
|
|
||||||
if (apiResponse.data && apiResponse.data.status !== 0) {
|
|
||||||
core.error('发布失败');
|
|
||||||
core.setFailed('发布失败');
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error('错误日志', error);
|
|
||||||
core.error('错误日志', error);
|
|
||||||
core.setFailed('错误日志');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const main = async () => {
|
|
||||||
await upload_artifact()
|
|
||||||
}
|
|
||||||
|
|
||||||
main()
|
|
Loading…
Reference in New Issue