diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..cb444be --- /dev/null +++ b/.drone.yml @@ -0,0 +1,37 @@ +--- +kind: pipeline +type: docker +name: default + +steps: + - name: build + image: node:16.18-bullseye + commands: + - apt-get update + - apt-get install -y cmake jq zip + - ./scripts/build-wasm.sh + - npm ci + - npm run test + - ./scripts/build-and-package.sh legacy + - ./scripts/build-and-package.sh extension + - ./scripts/build-and-package.sh modern + - sha256sum *.zip > sha256sum.txt + - mkdir -p upload + - mv *.zip sha256sum.txt upload/ + + - name: upload + image: "plugins/s3" + settings: + path_style: true + endpoint: + from_secret: S3_ENDPOINT + access_key: + from_secret: S3_ACCESS_KEY + secret_key: + from_secret: S3_SECRET_KEY + bucket: + from_secret: S3_BUCKET + region: "auto" + source: "upload/*" + strip_prefix: "upload/" + target: "${DRONE_REPO}/${DRONE_BUILD_NUMBER}/" diff --git a/.gitignore b/.gitignore index 3d9c3e4..75eba67 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .DS_Store node_modules /dist +/build /coverage # local env files @@ -27,3 +28,7 @@ yarn-error.log* /src/QmcWasm/build /src/QmcWasm/*.js /src/QmcWasm/*.wasm + +*.zip +*.tar.gz +/sha256sum.txt diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..0c19c7b --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16.18.1 diff --git a/README.md b/README.md index c38b616..8053876 100644 --- a/README.md +++ b/README.md @@ -44,8 +44,8 @@ ### 自行构建 -#### JS部分 - +#### JS部分 + - 环境要求 - nodejs (v16.x) - npm @@ -70,15 +70,15 @@ ```sh npm run make-extension ``` - -#### WASM部分 - -- 环境要求 - - Linux - - python3 - -- 运行此目录下的build-wasm - - ```sh - bash build-wasm - ``` + +#### WASM部分 + +- 环境要求 + - Linux + - python3 + +- 运行此目录下的build-wasm + + ```sh + ./scripts/build-wasm.sh + ``` diff --git a/jest.config.js b/jest.config.js index 0524f52..d59ea14 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,8 +1,7 @@ -module.exports = { - setupFilesAfterEnv: [ - './src/__test__/setup_jest.js' - ], - moduleNameMapper: { - '@/(.*)': '/src/$1' - } -}; +module.exports = { + testPathIgnorePatterns: ['/build/', '/dist/', '/node_modules/'], + setupFilesAfterEnv: ['./src/__test__/setup_jest.js'], + moduleNameMapper: { + '@/(.*)': '/src/$1', + }, +}; diff --git a/make-extension.js b/make-extension.js index f03f757..eee814b 100644 --- a/make-extension.js +++ b/make-extension.js @@ -1,25 +1,25 @@ -const fs = require('fs') -const path = require('path') -const src = "./src/extension/" -const dst = "./dist" -fs.readdirSync(src).forEach(file => { - let srcPath = path.join(src, file) - let dstPath = path.join(dst, file) - fs.copyFileSync(srcPath, dstPath) - console.log(`Copy: ${srcPath} => ${dstPath}`) -}) - -const manifestRaw = fs.readFileSync("./extension-manifest.json", "utf-8") -const manifest = JSON.parse(manifestRaw) - -const pkgRaw = fs.readFileSync("./package.json", "utf-8") -const pkg = JSON.parse(pkgRaw) - -verExt = pkg["version"] -if (verExt.startsWith("v")) verExt = verExt.slice(1) -if (verExt.includes("-")) verExt = verExt.split("-")[0] -manifest["version"] = `${verExt}.${pkg["ext_build"]}` -manifest["version_name"] = pkg["version"] - -fs.writeFileSync("./dist/manifest.json", JSON.stringify(manifest), "utf-8") -console.log("Write: manifest.json") +const fs = require('fs') +const path = require('path') +const src = __dirname + "/src/extension/" +const dst = __dirname + "/dist" +fs.readdirSync(src).forEach(file => { + let srcPath = path.join(src, file) + let dstPath = path.join(dst, file) + fs.copyFileSync(srcPath, dstPath) + console.log(`Copy: ${srcPath} => ${dstPath}`) +}) + +const manifestRaw = fs.readFileSync(__dirname + "/extension-manifest.json", "utf-8") +const manifest = JSON.parse(manifestRaw) + +const pkgRaw = fs.readFileSync(__dirname + "/package.json", "utf-8") +const pkg = JSON.parse(pkgRaw) + +verExt = pkg["version"] +if (verExt.startsWith("v")) verExt = verExt.slice(1) +if (verExt.includes("-")) verExt = verExt.split("-")[0] +manifest["version"] = `${verExt}.${pkg["ext_build"]}` +manifest["version_name"] = pkg["version"] + +fs.writeFileSync(__dirname + "/dist/manifest.json", JSON.stringify(manifest), "utf-8") +console.log("Write: manifest.json") diff --git a/package.json b/package.json index 3c10d04..8373728 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "unlock-music", - "version": "v1.10.3", + "version": "1.10.3", "ext_build": 0, "updateInfo": "完善音乐标签编辑功能,支持编辑更多标签", "license": "MIT", @@ -56,4 +56,4 @@ "vue-cli-plugin-element": "^1.0.1", "vue-template-compiler": "^2.6.14" } -} +} \ No newline at end of file diff --git a/scripts/build-and-package.sh b/scripts/build-and-package.sh new file mode 100755 index 0000000..5d8c6d7 --- /dev/null +++ b/scripts/build-and-package.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +set -ex + +cd "$(git rev-parse --show-toplevel)" + +VERSION="$(jq -r ".version" { -// const buffer = Buffer.alloc(256); -// for (let i = buffer.byteLength; i >= 0; i--) { -// buffer[i] = i; -// } -// return buffer; -// }; -// -// describe('decrypt/qmccache', () => { -// it('should decrypt specified buffer correctly', () => { -// const input = createInputBuffer(); -// DecryptQmcCacheBuffer(input); -// expect(input).toEqual(expectedBuffer); -// }); -// });