diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 869a69a..0000000 --- a/src/index.js +++ /dev/null @@ -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()