浏览代码

feat: build tauri communication app on demand (#1001)

* feat: build tauri communication app on demand

* add run command

* manually set defaults, build tauri.js

* add script defaults and options

* run command doesn't need the `yarn` and `build`

* try just build?

* empty script

* just skip it for now

* try fix on fix/paths-expect-arrays branch

* add tauri as script

* use nested folders

* enable on pr again

* switch to preferGlobal

* skip install

* build without action

* flip global

* list

* add yarn bin to path

* now try with action

* extra spaces

* prepare for release

* don't run on pr
Jacob Bolda 5 年之前
父节点
当前提交
6424b00ca7
共有 2 个文件被更改,包括 62 次插入77 次删除
  1. 61 77
      .github/workflows/build-smoke-tests.yml
  2. 1 0
      tauri/examples/communication/package.json

+ 61 - 77
.github/workflows/build-smoke-tests.yml

@@ -1,63 +1,61 @@
-name: build smoke tests with source
+name: build smoke test with source
 
 on:
-  push:
-    branches:
-      - stop-running
+  workflow_dispatch:
+    inputs:
+      repository:
+        description: 'Repository from which to pull and create a Tauri app.'
+        required: false
+        default: 'tauri-apps/tauri'
+      ref:
+        description: 'Branch or ref to pull down.'
+        required: false
+        default: 'dev'
+      dir:
+        description: 'Directory we expect to run in.'
+        required: false
+        default: 'tauri/examples/communication'
+      buildAssets:
+        description: 'Command to build the assets.'
+        required: false
+        default: 'echo no build needed'
+      buildTauri:
+        description: 'Command to build the Tauri app.'
+        required: false
+        default: 'tauri'
 env:
   RUST_BACKTRACE: 1
 
 jobs:
-  node:
+  create-and-upload-assets:
     runs-on: ${{ matrix.platform }}
-    timeout-minutes: 40
+    timeout-minutes: 30
 
     strategy:
       fail-fast: false
       matrix:
         platform: [ubuntu-latest, macos-latest, windows-latest]
-        example:
-          - name: GatsbyThemedSite
-            folder: react/gatsby-themed-site
-            executable: gatsby-themed-site-app
-          - name: CRAApp
-            folder: react/create-react-app
-            executable: app
-          - name: NextjsApp
-            folder: react/next.js
-            executable: app
-          - name: VanillajsMonolithApp
-            folder: vanillajs/monolith
-            executable: app
-          - name: quasar-app
-            folder: vue/quasar-app
-            executable: app
-          - name: svelte-app
-            folder: svelte/svelte-app
-            executable: app
         include:
           - platform: ubuntu-latest
-            CARGO_HOME: ~/.cargo
             releaseFolder: target/release/bundle/deb
-            ext: _0.1.0_amd64.deb
           - platform: macos-latest
-            CARGO_HOME: ~/.cargo
             releaseFolder: target/release/bundle/osx
-            ext: .app
           - platform: windows-latest
-            CARGO_HOME: ~/.cargo
-            releaseFolder: target/release
-            ext: .x64.msi
+            releaseFolder: target/release/bundle/msi
 
     steps:
-      - name: checkout tauri
-        uses: actions/checkout@v2
-      - name: checkout examples
-        uses: actions/checkout@v2
+      - uses: actions/checkout@v2
         with:
-          repository: tauri-apps/examples
-          ref: latest
-          path: examples
+          path: tauri
+      - uses: actions/checkout@v2
+        with:
+          repository: ${{ github.event.inputs.repository }}
+          ref: ${{ github.event.inputs.ref }}
+          path: example
+      - name: setup node
+        uses: actions/setup-node@v1
+        with:
+          node-version: 12
       - name: install rust stable
         uses: actions-rs/toolchain@v1
         with:
@@ -68,45 +66,31 @@ jobs:
         run: |
           sudo apt-get update
           sudo apt-get install -y webkit2gtk-4.0
-      - name: cache rust bin
-        uses: actions/cache@v1
-        with:
-          path: ${{ format('{0}/bin/', matrix.CARGO_HOME) }}
-          key: ${{ runner.OS }}-build-bin-${{ hashFiles('**/Cargo.toml') }}-
-      - name: cache rust registry/index
-        uses: actions/cache@v1
-        with:
-          path: ${{ format('{0}/registry/index/', matrix.CARGO_HOME) }}
-          key: ${{ runner.OS }}-build-reg-index-${{ hashFiles('**/Cargo.toml') }}-
-      - name: cache rust registry/cache
-        uses: actions/cache@v1
-        with:
-          path: ${{ format('{0}/registry/cache/', matrix.CARGO_HOME) }}
-          key: ${{ runner.OS }}-build-reg-cache-${{ hashFiles('**/Cargo.toml') }}-
-      - run: cargo install --path ./cli/tauri-bundler --force
-      - name: install cli deps via yarn
-        working-directory: ./cli/tauri.js
+      - name: yarn install for cli
+        working-directory: tauri/cli/tauri.js
         run: yarn
-      - name: build cli & api
-        working-directory: ./cli/tauri.js
-        run: yarn build
-      - name: cache node modules
-        uses: actions/cache@v1
+      - name: build tauri.js
+        working-directory: tauri/cli/tauri.js
+        run: |
+          yarn build-release
+          yarn global add $PWD
+          echo "::add-path::$(yarn global bin)"
+      - name: install and build assets
+        working-directory: 'example/${{ github.event.inputs.dir }}'
+        run: ${{ github.event.inputs.buildAssets }}
+      - name: cargo install tauri-bundler --force
+        working-directory: tauri/cli/tauri-bundler
+        run: cargo install tauri-bundler --path . --force
+      - name: build tauri app
+        uses: tauri-apps/tauri-action@v0
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         with:
-          path: ${{ format('examples/node/{0}/node_modules', matrix.example.folder) }}
-          key: ${{ runner.OS }}-build-${{ hashFiles(format('examples/node/{0}/yarn.lock', matrix.example.folder)) }}
-          restore-keys: ${{ runner.OS }}-build-${{ env.cache-name }}-
-      - name: install via yarn
-        working-directory: ./examples/node/${{ matrix.example.folder }}
-        run: yarn
-      - name: build example
-        working-directory: ./examples/node/${{ matrix.example.folder }}
-        run: yarn build
-      - name: yarn tauri build
-        working-directory: ./examples/node/${{ matrix.example.folder }}
-        run: yarn tauri:source:build
-      - uses: actions/upload-artifact@v1
+          includeDebug: true
+          projectPath: 'example/${{ github.event.inputs.dir }}'
+          preferGlobal: true
+      - uses: actions/upload-artifact@v2
         if: success()
         with:
-          name: ${{ matrix.example.name }}(${{ matrix.platform }})
-          path: ${{ format('./examples/node/{0}/src-tauri/{1}/{2}{3}', matrix.example.folder, matrix.releaseFolder, matrix.example.executable, matrix.ext ) }}
+          name: tauri-app.${{ matrix.platform }}
+          path: ${{ format('./{0}{1}/src-tauri/{2}/**', 'example/', github.event.inputs.dir, matrix.releaseFolder ) }}

+ 1 - 0
tauri/examples/communication/package.json

@@ -5,6 +5,7 @@
   "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
+    "tauri": "tauri",
     "build": "tauri build"
   },
   "private": true,