浏览代码

Add github workflow CI (#533)

* Initialize CI workflow with test job

* Add release job

* Use the script
Roj 2 年之前
父节点
当前提交
c71b194930
共有 2 个文件被更改,包括 54 次插入5 次删除
  1. 45 0
      .github/workflows/ci.yml
  2. 9 5
      generate_webpack.js

+ 45 - 0
.github/workflows/ci.yml

@@ -0,0 +1,45 @@
+name: CI
+
+on:
+  push:
+    branches:
+      - master
+    tags:
+      - "v*.*.*"
+  pull_request:
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+
+      - uses: actions/setup-node@v3
+        with:
+          node-version: 20
+          cache: npm
+
+      - run: npm ci
+
+      - run: npm test
+
+  release:
+    runs-on: ubuntu-latest
+    needs: fmt
+    if: startsWith(github.ref, 'refs/tags/')
+    steps:
+      - uses: actions/checkout@v3
+
+      - uses: actions/setup-node@v3
+        with:
+          node-version: 20
+
+      - run: npm ci
+
+      - run: CI=1 node generate_webpack.js
+
+      - uses: softprops/action-gh-release@v1
+        with:
+          generate_release_notes: true
+          files: browser/telegram.js
+

+ 9 - 5
generate_webpack.js

@@ -82,7 +82,7 @@ delete packageJSON.dependencies["socks"];
 fs.writeFileSync(
   "package.json",
   JSON.stringify(packageJSON, null, "  "),
-  "utf8"
+  "utf8",
 );
 
 const npmi = exec("npm i");
@@ -91,7 +91,7 @@ npmi.on("close", (code) => {
     throw new Error("Error happened " + code);
   }
 
-  const tsc = exec("tsc");
+  const tsc = exec("npx tsc");
   tsc.stdout.on("data", function (data) {
     console.log("stdout: " + data.toString());
   });
@@ -120,7 +120,7 @@ npmi.on("close", (code) => {
     fs.writeFileSync(
       "package.json",
       JSON.stringify(packageJSON, null, "  "),
-      "utf8"
+      "utf8",
     );
 
     webpack(webpackConfig, (err, stats) => {
@@ -128,10 +128,14 @@ npmi.on("close", (code) => {
         console.log("SOME ERROR HAPPENED");
         process.exit(0);
       }
-      exec("npm i");
+      if (process.env.CI) {
+        exec("npm ci");
+      } else {
+        exec("npm i");
+      }
       console.log(
         "DONE!. File created at ",
-        path.resolve(__dirname, "browser/telegram.js")
+        path.resolve(__dirname, "browser/telegram.js"),
       );
     });
   });