chore: CI/CD for Windows, Linux
commit 4897b2bcf7f044080fce81bd725515e62fc4eb29
Author: vansangpfiev <vansangpfiev@gmail.com>
Date: Fri Apr 25 15:32:37 2025 +0700
chore: cleanup tauri config
commit 66c5676ec146b25c89cccb570ede7c070dbc5853
Author: vansangpfiev <vansangpfiev@gmail.com>
Date: Fri Apr 25 14:37:04 2025 +0700
fix: store path
commit bc6560c576873e55f84c4b21764bedbdd9dbd5a8
Author: vansangpfiev <vansangpfiev@gmail.com>
Date: Thu Apr 24 09:39:50 2025 +0700
chore: Linux CI
commit b036275dc9f1df7614aaca3b358b9c6493082512
Author: vansangpfiev <vansangpfiev@gmail.com>
Date: Wed Apr 23 16:41:22 2025 +0700
chore: updater windows
commit e91b543dbdd82bd4a44db7550ffb993897b56081
Merge: dea80a83 4a54a378
Author: vansangpfiev <vansangpfiev@gmail.com>
Date: Wed Apr 23 16:39:24 2025 +0700
Merge branch 'chore/tauri-cicd' of https://github.com/menloresearch/jan into chore/tauri-cicd-windows
commit dea80a83966113b108137c385a3c28920d2adda4
Author: Minh141120 <minh.itptit@gmail.com>
Date: Wed Apr 23 11:47:04 2025 +0700
chore: update azuresigntool install method
commit 2ec2234082be57e53887192153fa982a134ea535
Author: Minh141120 <minh.itptit@gmail.com>
Date: Wed Apr 23 11:01:31 2025 +0700
chore: add verbose option build tauri and targets app and dmg for macos build
commit 42c7592cc89641130545551d4d864268cde3d5b0
Author: Minh141120 <minh.itptit@gmail.com>
Date: Wed Apr 23 10:35:27 2025 +0700
chore: update targets build
commit 4c8ba44ff60cdef8b639fa189f5729dc69c5aff6
Author: Minh141120 <minh.itptit@gmail.com>
Date: Wed Apr 23 09:53:21 2025 +0700
refactor: remove debug step and upload electron build artifact
commit 158c08b465e18823e0f2b9a30fd5ecd589d08934
Author: Minh141120 <minh.itptit@gmail.com>
Date: Wed Apr 23 09:21:08 2025 +0700
chore: add script codesign on windows
commit 4545b2bcd852029472298e530176494992dd0950
Author: vansangpfiev <vansangpfiev@gmail.com>
Date: Tue Apr 22 13:39:49 2025 +0700
chore: update csp setting
commit f64a1e1ca958e3c1c685485a06d45956ddcf14a0
Author: Minh141120 <minh.itptit@gmail.com>
Date: Tue Apr 22 10:15:14 2025 +0700
chore: update azuresigntool installation
commit 1f4b9d18b332d5205685a6fe68f5dfaf973d273c
Author: Minh141120 <minh.itptit@gmail.com>
Date: Tue Apr 22 09:49:42 2025 +0700
chore: update signcommand
commit 911a3ab3540f872f6fe906c8e2135440d39f108c
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 19:19:23 2025 +0700
chore: update codesign tauri windows
commit fba15c4c2de43b4cb87308ef998cdd8dc88b1ce6
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 19:04:29 2025 +0700
chore: update path azuresigntool
commit 8b8c950b56f5aa42baf76aba064fc99b50758150
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 18:38:56 2025 +0700
chore: update azuresigntool path
commit bd67a2b7908b5f3a126c634a840e0b941373a3c6
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 17:47:33 2025 +0700
chore: update azuresigntool url
commit f70effca7c09cd2fe9b5866b4f194b64a13294b9
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 17:33:32 2025 +0700
chore: update azuretoolsign download
commit 667910772f30369b9afa554ad06e4378f93d0b1a
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 16:56:25 2025 +0700
chore: update path azuresigntool
commit f1610bfd80dfa996db4a777bb58475f2e6d02cc6
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 16:52:36 2025 +0700
chore: update azuresigntool path
commit 0873d56fb88fb66c884eff31d3f63aa99858f038
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 16:19:46 2025 +0700
chore: add debug step
commit 88e0b1a697ed478375429686eb1c03ae71a3b447
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 15:58:39 2025 +0700
ci(windows): download AzureSignTool to src-tauri for Tauri code signing
commit 47f94e86589826c3941a3d602298f188d6480980
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 15:21:20 2025 +0700
fix: AzureSignTool signcommand Path
commit dc014a7905fd0b49b5972e24b4d5773c5dc29ea5
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 15:00:02 2025 +0700
chore: add debug step azuresigntool tauri windows
commit ee7b6163a8419604dfba7dc2f967026be4884da4
Author: Minh141120 <minh.itptit@gmail.com>
Date: Mon Apr 21 14:33:33 2025 +0700
chore: tauri windows codesign
commit 6607090857120531d8a096f45ff556c3f2553e53
Author: vansangpfiev <vansangpfiev@gmail.com>
Date: Thu Apr 17 10:29:50 2025 +0700
chore: add windows download script
commit 4b1a5cc29c77eecca75978a1ab3126d2c710e738
Author: Nguyen Ngoc Minh <kuuhakuu@Nguyens-MacBook-Air.local>
Date: Mon Apr 21 13:44:34 2025 +0700
chore: tauri codesign windows
This commit is contained in:
parent
4a54a378c7
commit
130d17f45e
48
.github/scripts/rename-tauri-app.sh
vendored
Normal file
48
.github/scripts/rename-tauri-app.sh
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check if the correct number of arguments is provided
|
||||||
|
if [ "$#" -ne 2 ]; then
|
||||||
|
echo "Usage: $0 <path_to_json_input_file> <channel>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
INPUT_JSON_FILE="$1"
|
||||||
|
|
||||||
|
CHANNEL="$2"
|
||||||
|
|
||||||
|
if [ "$CHANNEL" == "nightly" ]; then
|
||||||
|
UPDATER="latest"
|
||||||
|
else
|
||||||
|
UPDATER="beta"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the input file exists
|
||||||
|
if [ ! -f "$INPUT_JSON_FILE" ]; then
|
||||||
|
echo "Input file not found: $INPUT_JSON_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use jq to transform the content
|
||||||
|
jq --arg channel "$CHANNEL" --arg updater "$UPDATER" '
|
||||||
|
.productName = "Jan-\($channel)" |
|
||||||
|
.identifier = "jan-\($channel).ai.app"
|
||||||
|
' "$INPUT_JSON_FILE" > ./tauri.conf.json.tmp
|
||||||
|
|
||||||
|
cat ./tauri.conf.json.tmp
|
||||||
|
|
||||||
|
rm $INPUT_JSON_FILE
|
||||||
|
mv ./tauri.conf.json.tmp $INPUT_JSON_FILE
|
||||||
|
|
||||||
|
# Update the layout file
|
||||||
|
# LAYOUT_FILE_PATH="web/app/layout.tsx"
|
||||||
|
|
||||||
|
# if [ ! -f "$LAYOUT_FILE_PATH" ]; then
|
||||||
|
# echo "File does not exist: $LAYOUT_FILE_PATH"
|
||||||
|
# exit 1
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# Perform the replacements
|
||||||
|
# sed -i -e "s#Jan#Jan-$CHANNEL#g" "$LAYOUT_FILE_PATH"
|
||||||
|
|
||||||
|
# Notify completion
|
||||||
|
# echo "File has been updated: $LAYOUT_FILE_PATH"
|
||||||
101
.github/workflows/template-build-linux-x64.yml
vendored
101
.github/workflows/template-build-linux-x64.yml
vendored
@ -38,10 +38,16 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
DELTA_AWS_SECRET_ACCESS_KEY:
|
DELTA_AWS_SECRET_ACCESS_KEY:
|
||||||
required: false
|
required: false
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY:
|
||||||
|
required: false
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD:
|
||||||
|
required: false
|
||||||
|
TAURI_SIGNING_PUBLIC_KEY:
|
||||||
|
required: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-linux-x64:
|
build-linux-x64:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
environment: production
|
environment: production
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@ -51,6 +57,20 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
ref: ${{ inputs.ref }}
|
ref: ${{ inputs.ref }}
|
||||||
|
|
||||||
|
- name: Free Disk Space Before Build
|
||||||
|
run: |
|
||||||
|
echo "Disk space before cleanup:"
|
||||||
|
df -h
|
||||||
|
sudo rm -rf /usr/local/.ghcup
|
||||||
|
sudo rm -rf /opt/hostedtoolcache/CodeQL
|
||||||
|
sudo rm -rf /usr/local/lib/android/sdk/ndk
|
||||||
|
sudo rm -rf /usr/share/dotnet
|
||||||
|
sudo rm -rf /opt/ghc
|
||||||
|
sudo rm -rf /usr/local/share/boost
|
||||||
|
sudo apt-get clean
|
||||||
|
echo "Disk space after cleanup:"
|
||||||
|
df -h
|
||||||
|
|
||||||
- name: Replace Icons for Beta Build
|
- name: Replace Icons for Beta Build
|
||||||
if: inputs.beta == true && inputs.nightly != true
|
if: inputs.beta == true && inputs.nightly != true
|
||||||
shell: bash
|
shell: bash
|
||||||
@ -84,25 +104,49 @@ jobs:
|
|||||||
- name: Install jq
|
- name: Install jq
|
||||||
uses: dcarbone/install-jq-action@v2.0.1
|
uses: dcarbone/install-jq-action@v2.0.1
|
||||||
|
|
||||||
|
- name: Install ctoml
|
||||||
|
run: |
|
||||||
|
cargo install ctoml
|
||||||
|
|
||||||
|
- name: Install Tauri dependecies
|
||||||
|
run: |
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install -y libglib2.0-dev libatk1.0-dev libpango1.0-dev libgtk-3-dev libsoup-3.0-dev libwebkit2gtk-4.1-dev librsvg2-dev
|
||||||
|
|
||||||
- name: Update app version base public_provider
|
- name: Update app version base public_provider
|
||||||
if: inputs.public_provider != 'github'
|
if: inputs.public_provider != 'github'
|
||||||
run: |
|
run: |
|
||||||
echo "Version: ${{ inputs.new_version }}"
|
echo "Version: ${{ inputs.new_version }}"
|
||||||
# Update the version in electron/package.json
|
# Update tauri.conf.json
|
||||||
jq --arg version "${{ inputs.new_version }}" '.version = $version' electron/package.json > /tmp/package.json
|
jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = true' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
mv /tmp/package.json electron/package.json
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
|
chmod +x .github/scripts/rename-tauri-app.sh
|
||||||
|
.github/scripts/rename-tauri-app.sh ./src-tauri/tauri.conf.json nightly
|
||||||
|
|
||||||
|
echo ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
|
# Update Cargo.toml
|
||||||
|
ctoml ./src-tauri/Cargo.toml package.name "Jan-nightly"
|
||||||
|
ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}"
|
||||||
|
echo "------------------"
|
||||||
|
cat ./src-tauri/Cargo.toml
|
||||||
|
|
||||||
|
# # Update the version in electron/package.json
|
||||||
|
# jq --arg version "${{ inputs.new_version }}" '.version = $version' electron/package.json > /tmp/package.json
|
||||||
|
# mv /tmp/package.json electron/package.json
|
||||||
jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json
|
jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json web/package.json
|
mv /tmp/package.json web/package.json
|
||||||
jq '.build.publish = [{"provider": "generic", "url": "https://delta.jan.ai/nightly", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-nightly", "channel": "latest"}]' electron/package.json > /tmp/package.json
|
# jq '.build.publish = [{"provider": "generic", "url": "https://delta.jan.ai/nightly", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-nightly", "channel": "latest"}]' electron/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json electron/package.json
|
# mv /tmp/package.json electron/package.json
|
||||||
cat electron/package.json
|
# cat electron/package.json
|
||||||
chmod +x .github/scripts/rename-app.sh
|
# chmod +x .github/scripts/rename-app.sh
|
||||||
.github/scripts/rename-app.sh ./electron/package.json nightly
|
# .github/scripts/rename-app.sh ./electron/package.json nightly
|
||||||
chmod +x .github/scripts/rename-workspace.sh
|
# chmod +x .github/scripts/rename-workspace.sh
|
||||||
.github/scripts/rename-workspace.sh ./package.json nightly
|
# .github/scripts/rename-workspace.sh ./package.json nightly
|
||||||
echo "------------------------"
|
# echo "------------------------"
|
||||||
cat ./electron/package.json
|
# cat ./electron/package.json
|
||||||
echo "------------------------"
|
# echo "------------------------"
|
||||||
|
|
||||||
- name: Change App Name for beta version
|
- name: Change App Name for beta version
|
||||||
if: inputs.beta == true
|
if: inputs.beta == true
|
||||||
@ -130,6 +174,20 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
VERSION_TAG: ${{ inputs.new_version }}
|
VERSION_TAG: ${{ inputs.new_version }}
|
||||||
|
|
||||||
|
- name: Inject Tauri Signing Public Key
|
||||||
|
run: |
|
||||||
|
if [ -f "src-tauri/tauri.conf.json" ]; then
|
||||||
|
echo "Injecting Tauri public key into configuration..."
|
||||||
|
# Use jq to update the pubkey field in the tauri.conf.json file
|
||||||
|
jq --arg pubkey "$TAURI_SIGNING_PUBLIC_KEY" '.plugins.updater.pubkey = $pubkey' src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
|
mv /tmp/tauri.conf.json src-tauri/tauri.conf.json
|
||||||
|
echo "Tauri configuration updated successfully"
|
||||||
|
else
|
||||||
|
echo "tauri.conf.json not found"
|
||||||
|
fi
|
||||||
|
env:
|
||||||
|
TAURI_SIGNING_PUBLIC_KEY: ${{ secrets.TAURI_SIGNING_PUBLIC_KEY }}
|
||||||
|
|
||||||
- name: Build and publish app to aws s3 r2 or github artifactory
|
- name: Build and publish app to aws s3 r2 or github artifactory
|
||||||
if: inputs.public_provider != 'github'
|
if: inputs.public_provider != 'github'
|
||||||
run: |
|
run: |
|
||||||
@ -148,7 +206,10 @@ jobs:
|
|||||||
AWS_MAX_ATTEMPTS: '5'
|
AWS_MAX_ATTEMPTS: '5'
|
||||||
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
||||||
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
||||||
CORTEX_API_PORT: ${{ inputs.cortex_api_port }}
|
# CORTEX_API_PORT: ${{ inputs.cortex_api_port }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||||||
|
TAURI_SIGNING_PUBLIC_KEY: ${{ secrets.TAURI_SIGNING_PUBLIC_KEY }}
|
||||||
|
|
||||||
- name: Build and publish app to github
|
- name: Build and publish app to github
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false
|
||||||
@ -158,6 +219,9 @@ jobs:
|
|||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
||||||
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||||||
|
TAURI_SIGNING_PUBLIC_KEY: ${{ secrets.TAURI_SIGNING_PUBLIC_KEY }}
|
||||||
|
|
||||||
- name: Build and publish app to github
|
- name: Build and publish app to github
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == true
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == true
|
||||||
@ -171,17 +235,20 @@ jobs:
|
|||||||
AWS_MAX_ATTEMPTS: '5'
|
AWS_MAX_ATTEMPTS: '5'
|
||||||
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
||||||
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||||||
|
TAURI_SIGNING_PUBLIC_KEY: ${{ secrets.TAURI_SIGNING_PUBLIC_KEY }}
|
||||||
|
|
||||||
- name: Upload Artifact .deb file
|
- name: Upload Artifact .deb file
|
||||||
if: inputs.public_provider != 'github'
|
if: inputs.public_provider != 'github'
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: jan-linux-amd64-${{ inputs.new_version }}-deb
|
name: jan-linux-amd64-${{ inputs.new_version }}-deb
|
||||||
path: ./electron/dist/*.deb
|
path: ./src-tauri/target/release/bundle/deb/*.deb
|
||||||
|
|
||||||
- name: Upload Artifact .AppImage file
|
- name: Upload Artifact .AppImage file
|
||||||
if: inputs.public_provider != 'github'
|
if: inputs.public_provider != 'github'
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: jan-linux-amd64-${{ inputs.new_version }}-AppImage
|
name: jan-linux-amd64-${{ inputs.new_version }}-AppImage
|
||||||
path: ./electron/dist/*.AppImage
|
path: ./src-tauri/target/release/bundle/appimage/*.AppImage
|
||||||
47
.github/workflows/template-build-macos.yml
vendored
47
.github/workflows/template-build-macos.yml
vendored
@ -99,31 +99,50 @@ jobs:
|
|||||||
- name: Install jq
|
- name: Install jq
|
||||||
uses: dcarbone/install-jq-action@v2.0.1
|
uses: dcarbone/install-jq-action@v2.0.1
|
||||||
|
|
||||||
|
- name: Install ctoml
|
||||||
|
run: |
|
||||||
|
cargo install ctoml
|
||||||
|
|
||||||
- name: Update app version based on latest release tag with build number
|
- name: Update app version based on latest release tag with build number
|
||||||
if: inputs.public_provider != 'github'
|
if: inputs.public_provider != 'github'
|
||||||
run: |
|
run: |
|
||||||
echo "Version: ${{ inputs.new_version }}"
|
echo "Version: ${{ inputs.new_version }}"
|
||||||
|
# Update tauri.conf.json
|
||||||
|
jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = true' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
|
chmod +x .github/scripts/rename-tauri-app.sh
|
||||||
|
.github/scripts/rename-tauri-app.sh ./src-tauri/tauri.conf.json nightly
|
||||||
|
|
||||||
|
echo ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
|
# Update Cargo.toml
|
||||||
|
ctoml ./src-tauri/Cargo.toml package.name "Jan-nightly"
|
||||||
|
ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}"
|
||||||
|
echo "------------------"
|
||||||
|
cat ./src-tauri/Cargo.toml
|
||||||
|
|
||||||
# Update the version in electron/package.json
|
# Update the version in electron/package.json
|
||||||
jq --arg version "${{ inputs.new_version }}" '.version = $version' electron/package.json > /tmp/package.json
|
# jq --arg version "${{ inputs.new_version }}" '.version = $version' electron/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json electron/package.json
|
# mv /tmp/package.json electron/package.json
|
||||||
|
|
||||||
jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json
|
jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json web/package.json
|
mv /tmp/package.json web/package.json
|
||||||
|
|
||||||
jq '.build.publish = [{"provider": "generic", "url": "https://delta.jan.ai/nightly", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-nightly", "channel": "latest"}]' electron/package.json > /tmp/package.json
|
# jq '.build.publish = [{"provider": "generic", "url": "https://delta.jan.ai/nightly", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-nightly", "channel": "latest"}]' electron/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json electron/package.json
|
# mv /tmp/package.json electron/package.json
|
||||||
|
|
||||||
jq --arg teamid "${{ secrets.APPLE_TEAM_ID }}" '.build.mac.notarize.teamId = $teamid' electron/package.json > /tmp/package.json
|
# jq --arg teamid "${{ secrets.APPLE_TEAM_ID }}" '.build.mac.notarize.teamId = $teamid' electron/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json electron/package.json
|
# mv /tmp/package.json electron/package.json
|
||||||
|
|
||||||
# cat electron/package.json
|
# cat electron/package.json
|
||||||
chmod +x .github/scripts/rename-app.sh
|
# chmod +x .github/scripts/rename-app.sh
|
||||||
.github/scripts/rename-app.sh ./electron/package.json nightly
|
# .github/scripts/rename-app.sh ./electron/package.json nightly
|
||||||
chmod +x .github/scripts/rename-workspace.sh
|
# chmod +x .github/scripts/rename-workspace.sh
|
||||||
.github/scripts/rename-workspace.sh ./package.json nightly
|
# .github/scripts/rename-workspace.sh ./package.json nightly
|
||||||
echo "------------------------"
|
# echo "------------------------"
|
||||||
cat ./electron/package.json
|
# cat ./electron/package.json
|
||||||
echo "------------------------"
|
# echo "------------------------"
|
||||||
|
|
||||||
- name: Change App Name for beta version
|
- name: Change App Name for beta version
|
||||||
if: inputs.beta == true
|
if: inputs.beta == true
|
||||||
@ -213,7 +232,7 @@ jobs:
|
|||||||
# AWS_MAX_ATTEMPTS: '5'
|
# AWS_MAX_ATTEMPTS: '5'
|
||||||
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
||||||
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
||||||
CORTEX_API_PORT: ${{ inputs.cortex_api_port }}
|
# CORTEX_API_PORT: ${{ inputs.cortex_api_port }}
|
||||||
APPLE_CERTIFICATE: ${{ secrets.CODE_SIGN_P12_BASE64 }}
|
APPLE_CERTIFICATE: ${{ secrets.CODE_SIGN_P12_BASE64 }}
|
||||||
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.CODE_SIGN_P12_PASSWORD }}
|
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.CODE_SIGN_P12_PASSWORD }}
|
||||||
APPLE_API_ISSUER: ${{ secrets.NOTARY_ISSUER }}
|
APPLE_API_ISSUER: ${{ secrets.NOTARY_ISSUER }}
|
||||||
|
|||||||
157
.github/workflows/template-build-windows-x64.yml
vendored
157
.github/workflows/template-build-windows-x64.yml
vendored
@ -5,20 +5,20 @@ on:
|
|||||||
ref:
|
ref:
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
default: 'refs/heads/main'
|
default: "refs/heads/main"
|
||||||
public_provider:
|
public_provider:
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
default: none
|
default: none
|
||||||
description: 'none: build only, github: build and publish to github, aws s3: build and publish to aws s3'
|
description: "none: build only, github: build and publish to github, aws s3: build and publish to aws s3"
|
||||||
new_version:
|
new_version:
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
default: ''
|
default: ""
|
||||||
aws_s3_prefix:
|
aws_s3_prefix:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
default: '/latest/'
|
default: "/latest/"
|
||||||
beta:
|
beta:
|
||||||
required: false
|
required: false
|
||||||
type: boolean
|
type: boolean
|
||||||
@ -48,6 +48,12 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
AZURE_CERT_NAME:
|
AZURE_CERT_NAME:
|
||||||
required: false
|
required: false
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY:
|
||||||
|
required: false
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD:
|
||||||
|
required: false
|
||||||
|
TAURI_SIGNING_PUBLIC_KEY:
|
||||||
|
required: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-windows-x64:
|
build-windows-x64:
|
||||||
@ -92,37 +98,86 @@ jobs:
|
|||||||
- name: Install jq
|
- name: Install jq
|
||||||
uses: dcarbone/install-jq-action@v2.0.1
|
uses: dcarbone/install-jq-action@v2.0.1
|
||||||
|
|
||||||
|
- name: Install ctoml
|
||||||
|
run: |
|
||||||
|
cargo install ctoml
|
||||||
|
|
||||||
- name: Update app version base on tag
|
- name: Update app version base on tag
|
||||||
if: inputs.public_provider != 'github'
|
if: inputs.public_provider != 'github'
|
||||||
id: version_update
|
id: version_update
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "Version: ${{ inputs.new_version }}"
|
echo "Version: ${{ inputs.new_version }}"
|
||||||
|
# Update tauri.conf.json
|
||||||
|
jq --arg version "${{ inputs.new_version }}" --arg template tauri.bundle.windows.nsis.template '.version = $version | .bundle.createUpdaterArtifacts = true | .bundle.windows.nsis.template = $template' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
|
chmod +x .github/scripts/rename-tauri-app.sh
|
||||||
|
.github/scripts/rename-tauri-app.sh ./src-tauri/tauri.conf.json nightly
|
||||||
|
|
||||||
|
echo ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
|
# Update Cargo.toml
|
||||||
|
ctoml ./src-tauri/Cargo.toml package.name "Jan-nightly"
|
||||||
|
ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}"
|
||||||
|
echo "------------------"
|
||||||
|
cat ./src-tauri/Cargo.toml
|
||||||
|
|
||||||
|
# Update template
|
||||||
|
get_latest_tag() {
|
||||||
|
local retries=0
|
||||||
|
local max_retries=3
|
||||||
|
local tag
|
||||||
|
while [ $retries -lt $max_retries ]; do
|
||||||
|
tag=$(curl -s https://api.github.com/repos/menloresearch/jan/releases/latest | jq -r .tag_name)
|
||||||
|
if [ -n "$tag" ] && [ "$tag" != "null" ]; then
|
||||||
|
echo $tag
|
||||||
|
return
|
||||||
|
else
|
||||||
|
let retries++
|
||||||
|
echo "Retrying... ($retries/$max_retries)"
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "Failed to fetch latest tag after $max_retries attempts."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
LATEST_TAG=$(get_latest_tag)
|
||||||
|
jan_tag="${LATEST_TAG#v}.0"
|
||||||
|
echo $jan_tag
|
||||||
|
sed -i "s/jan_productname/Jan-nightly/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
||||||
|
sed -i "s/jan_version/${{ inputs.new_version }}/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
||||||
|
sed -i "s/jan_build/$jan_tag/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
||||||
|
sed -i "s/jan_mainbinaryname/jan-nightly/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
||||||
|
echo "------------------"
|
||||||
|
cat ./src-tauri/tauri.bundle.windows.nsis.template
|
||||||
|
|
||||||
# Update the version in electron/package.json
|
# Update the version in electron/package.json
|
||||||
jq --arg version "${{ inputs.new_version }}" '.version = $version' electron/package.json > /tmp/package.json
|
# jq --arg version "${{ inputs.new_version }}" '.version = $version' electron/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json electron/package.json
|
# mv /tmp/package.json electron/package.json
|
||||||
|
|
||||||
jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json
|
jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json web/package.json
|
mv /tmp/package.json web/package.json
|
||||||
|
|
||||||
jq '.build.publish = [{"provider": "generic", "url": "https://delta.jan.ai/nightly", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-nightly", "channel": "latest"}]' electron/package.json > /tmp/package.json
|
# jq '.build.publish = [{"provider": "generic", "url": "https://delta.jan.ai/nightly", "channel": "latest"}, {"provider": "s3", "acl": null, "bucket": "${{ secrets.DELTA_AWS_S3_BUCKET_NAME }}", "region": "${{ secrets.DELTA_AWS_REGION}}", "path": "temp-nightly", "channel": "latest"}]' electron/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json electron/package.json
|
# mv /tmp/package.json electron/package.json
|
||||||
|
|
||||||
jq '.build.win.sign = "./sign.js"' electron/package.json > /tmp/package.json
|
# jq '.build.win.sign = "./sign.js"' electron/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json electron/package.json
|
# mv /tmp/package.json electron/package.json
|
||||||
cat electron/package.json
|
# cat electron/package.json
|
||||||
|
|
||||||
chmod +x .github/scripts/rename-app.sh
|
# chmod +x .github/scripts/rename-app.sh
|
||||||
.github/scripts/rename-app.sh ./electron/package.json nightly
|
# .github/scripts/rename-app.sh ./electron/package.json nightly
|
||||||
chmod +x .github/scripts/rename-workspace.sh
|
# chmod +x .github/scripts/rename-workspace.sh
|
||||||
.github/scripts/rename-workspace.sh ./package.json nightly
|
# .github/scripts/rename-workspace.sh ./package.json nightly
|
||||||
chmod +x .github/scripts/rename-uninstaller.sh
|
# chmod +x .github/scripts/rename-uninstaller.sh
|
||||||
.github/scripts/rename-uninstaller.sh nightly
|
# .github/scripts/rename-uninstaller.sh nightly
|
||||||
echo "------------------------"
|
# echo "------------------------"
|
||||||
cat ./electron/package.json
|
# cat ./electron/package.json
|
||||||
echo "------------------------"
|
# echo "------------------------"
|
||||||
cat ./package.json
|
# cat ./package.json
|
||||||
echo "------------------------"
|
# echo "------------------------"
|
||||||
|
|
||||||
- name: Change App Name for beta version
|
- name: Change App Name for beta version
|
||||||
if: inputs.beta == true
|
if: inputs.beta == true
|
||||||
@ -148,6 +203,13 @@ jobs:
|
|||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github'
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
echo "Version: ${{ inputs.new_version }}"
|
||||||
|
# Update version in tauri.conf.json
|
||||||
|
jq --arg version "${{ inputs.new_version }}" '.version = $version' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
|
jq --arg template tauri.bundle.windows.nsis '.bundle.windows.nsis.template = $template' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
jq --arg version "${VERSION_TAG#v}" '.version = $version' electron/package.json > /tmp/package.json
|
jq --arg version "${VERSION_TAG#v}" '.version = $version' electron/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json electron/package.json
|
mv /tmp/package.json electron/package.json
|
||||||
jq --arg version "${VERSION_TAG#v}" '.version = $version' web/package.json > /tmp/package.json
|
jq --arg version "${VERSION_TAG#v}" '.version = $version' web/package.json > /tmp/package.json
|
||||||
@ -159,7 +221,22 @@ jobs:
|
|||||||
|
|
||||||
- name: Install AzureSignTool
|
- name: Install AzureSignTool
|
||||||
run: |
|
run: |
|
||||||
dotnet tool install --global AzureSignTool
|
dotnet tool install --global --version 6.0.0 AzureSignTool
|
||||||
|
|
||||||
|
- name: Inject Tauri Signing Public Key
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ -f "src-tauri/tauri.conf.json" ]; then
|
||||||
|
echo "Injecting Tauri public key into configuration..."
|
||||||
|
# Use jq to update the pubkey field in the tauri.conf.json file
|
||||||
|
jq --arg pubkey "$TAURI_SIGNING_PUBLIC_KEY" '.plugins.updater.pubkey = $pubkey' src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
|
mv /tmp/tauri.conf.json src-tauri/tauri.conf.json
|
||||||
|
echo "Tauri configuration updated successfully"
|
||||||
|
else
|
||||||
|
echo "tauri.conf.json not found"
|
||||||
|
fi
|
||||||
|
env:
|
||||||
|
TAURI_SIGNING_PUBLIC_KEY: ${{ secrets.TAURI_SIGNING_PUBLIC_KEY }}
|
||||||
|
|
||||||
- name: Build and publish app to aws s3 r2 or github artifactory
|
- name: Build and publish app to aws s3 r2 or github artifactory
|
||||||
shell: bash
|
shell: bash
|
||||||
@ -177,15 +254,18 @@ jobs:
|
|||||||
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
|
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
|
||||||
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
|
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
|
||||||
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
|
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
|
||||||
AZURE_CERT_NAME: homebrewltd
|
AZURE_CERT_NAME: ${{ secrets.AZURE_CERT_NAME }}
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
|
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}
|
||||||
AWS_DEFAULT_REGION: auto
|
AWS_DEFAULT_REGION: auto
|
||||||
AWS_EC2_METADATA_DISABLED: 'true'
|
AWS_EC2_METADATA_DISABLED: "true"
|
||||||
AWS_MAX_ATTEMPTS: '5'
|
AWS_MAX_ATTEMPTS: "5"
|
||||||
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
||||||
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
||||||
CORTEX_API_PORT: ${{ inputs.cortex_api_port }}
|
# CORTEX_API_PORT: ${{ inputs.cortex_api_port }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||||||
|
TAURI_SIGNING_PUBLIC_KEY: ${{ secrets.TAURI_SIGNING_PUBLIC_KEY }}
|
||||||
|
|
||||||
- name: Build app and publish app to github
|
- name: Build app and publish app to github
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false
|
||||||
@ -197,9 +277,12 @@ jobs:
|
|||||||
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
|
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
|
||||||
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
|
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
|
||||||
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
|
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
|
||||||
AZURE_CERT_NAME: homebrewltd
|
AZURE_CERT_NAME: ${{ secrets.AZURE_CERT_NAME }}
|
||||||
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
||||||
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||||||
|
TAURI_SIGNING_PUBLIC_KEY: ${{ secrets.TAURI_SIGNING_PUBLIC_KEY }}
|
||||||
|
|
||||||
- name: Build app and publish app to github
|
- name: Build app and publish app to github
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == true
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == true
|
||||||
@ -210,20 +293,22 @@ jobs:
|
|||||||
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
|
AWS_ACCESS_KEY_ID: ${{ secrets.DELTA_AWS_ACCESS_KEY_ID }}
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.DELTA_AWS_SECRET_ACCESS_KEY }}
|
||||||
AWS_DEFAULT_REGION: auto
|
AWS_DEFAULT_REGION: auto
|
||||||
AWS_EC2_METADATA_DISABLED: 'true'
|
AWS_EC2_METADATA_DISABLED: "true"
|
||||||
AWS_MAX_ATTEMPTS: '5'
|
AWS_MAX_ATTEMPTS: "5"
|
||||||
AZURE_KEY_VAULT_URI: ${{ secrets.AZURE_KEY_VAULT_URI }}
|
AZURE_KEY_VAULT_URI: ${{ secrets.AZURE_KEY_VAULT_URI }}
|
||||||
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
|
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
|
||||||
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
|
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
|
||||||
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
|
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
|
||||||
# AZURE_CERT_NAME: ${{ secrets.AZURE_CERT_NAME }}
|
AZURE_CERT_NAME: ${{ secrets.AZURE_CERT_NAME }}
|
||||||
AZURE_CERT_NAME: homebrewltd
|
|
||||||
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
|
||||||
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||||
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||||||
|
TAURI_SIGNING_PUBLIC_KEY: ${{ secrets.TAURI_SIGNING_PUBLIC_KEY }}
|
||||||
|
|
||||||
- name: Upload Artifact
|
- name: Upload Signed Artifact
|
||||||
if: inputs.public_provider != 'github'
|
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: jan-win-x64-${{ inputs.new_version }}
|
name: jan-tauri-windows-${{ inputs.new_version }}
|
||||||
path: ./electron/dist/*.exe
|
path: |
|
||||||
|
./src-tauri/target/release/bundle/nsis/*.exe
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
"install:cortex:win32": "cd src-tauri/binaries && download.bat",
|
"install:cortex:win32": "cd src-tauri/binaries && download.bat",
|
||||||
"install:cortex": "run-script-os",
|
"install:cortex": "run-script-os",
|
||||||
"dev:tauri": "yarn build:icon && yarn copy:assets:tauri && tauri dev",
|
"dev:tauri": "yarn build:icon && yarn copy:assets:tauri && tauri dev",
|
||||||
"build:tauri": "yarn install:cortex && yarn build:icon && yarn copy:assets:tauri && yarn tauri build",
|
"build:tauri": "yarn install:cortex && yarn build:icon && yarn copy:assets:tauri && yarn tauri build --verbose",
|
||||||
"build:icon": "tauri icon ./src-tauri/icons/icon.png",
|
"build:icon": "tauri icon ./src-tauri/icons/icon.png",
|
||||||
"build:server": "cd server && yarn build",
|
"build:server": "cd server && yarn build",
|
||||||
"build:core": "cd core && yarn build && yarn pack",
|
"build:core": "cd core && yarn build && yarn pack",
|
||||||
@ -46,6 +46,7 @@
|
|||||||
"@tauri-apps/cli": "^2.2.5",
|
"@tauri-apps/cli": "^2.2.5",
|
||||||
"concurrently": "^9.1.0",
|
"concurrently": "^9.1.0",
|
||||||
"cpx": "^1.5.0",
|
"cpx": "^1.5.0",
|
||||||
|
"cross-env": "^7.0.3",
|
||||||
"husky": "^9.1.5",
|
"husky": "^9.1.5",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"jest-environment-jsdom": "^29.7.0",
|
"jest-environment-jsdom": "^29.7.0",
|
||||||
|
|||||||
1
src-tauri/.gitignore
vendored
1
src-tauri/.gitignore
vendored
@ -4,3 +4,4 @@
|
|||||||
/gen/schemas
|
/gen/schemas
|
||||||
binaries
|
binaries
|
||||||
!binaries/download.sh
|
!binaries/download.sh
|
||||||
|
!binaries/download.bat
|
||||||
@ -1,5 +1,5 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "jan-nightly"
|
name = "Jan-nightly"
|
||||||
version = "0.5.16-1320"
|
version = "0.5.16-1320"
|
||||||
description = "Use offline LLMs with your own data. Run open source models like Llama2 or Falcon on your internal computers/servers."
|
description = "Use offline LLMs with your own data. Run open source models like Llama2 or Falcon on your internal computers/servers."
|
||||||
authors = ["Jan <service@jan.ai>"]
|
authors = ["Jan <service@jan.ai>"]
|
||||||
|
|||||||
43
src-tauri/binaries/download.bat
Normal file
43
src-tauri/binaries/download.bat
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
set CORTEX_VERSION=1.0.13-rc1
|
||||||
|
set ENGINE_VERSION=0.1.55
|
||||||
|
set ENGINE_DOWNLOAD_URL=https://github.com/menloresearch/cortex.llamacpp/releases/download/v%ENGINE_VERSION%/cortex.llamacpp-%ENGINE_VERSION%-windows-amd64
|
||||||
|
set CUDA_DOWNLOAD_URL=https://github.com/menloresearch/cortex.llamacpp/releases/download/v%ENGINE_VERSION%
|
||||||
|
@REM set SUBFOLDERS=windows-amd64-noavx-cuda-12-0 windows-amd64-noavx-cuda-11-7 windows-amd64-avx2-cuda-12-0 windows-amd64-avx2-cuda-11-7 windows-amd64-noavx windows-amd64-avx windows-amd64-avx2 windows-amd64-avx512 windows-amd64-vulkan
|
||||||
|
set BIN_PATH="./"
|
||||||
|
set DOWNLOAD_TOOL=..\..\extensions\inference-cortex-extension\node_modules\.bin\download
|
||||||
|
|
||||||
|
@REM Download cortex.llamacpp binaries
|
||||||
|
|
||||||
|
call %DOWNLOAD_TOOL% -e --strip 1 -o %BIN_PATH% https://github.com/menloresearch/cortex.cpp/releases/download/v%CORTEX_VERSION%/cortex-%CORTEX_VERSION%-windows-amd64.tar.gz
|
||||||
|
@REM call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-avx2-cuda-12-0.tar.gz -e --strip 1 -o ./engines/cortex.llamacpp/windows-amd64-avx2-cuda-12-0/v%ENGINE_VERSION%
|
||||||
|
@REM call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-avx2-cuda-11-7.tar.gz -e --strip 1 -o ./engines/cortex.llamacpp/windows-amd64-avx2-cuda-11-7/v%ENGINE_VERSION%
|
||||||
|
@REM call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-noavx-cuda-12-0.tar.gz -e --strip 1 -o ./engines/cortex.llamacpp/windows-amd64-noavx-cuda-12-0/v%ENGINE_VERSION%
|
||||||
|
@REM call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-noavx-cuda-11-7.tar.gz -e --strip 1 -o ./engines/cortex.llamacpp/windows-amd64-noavx-cuda-11-7/v%ENGINE_VERSION%
|
||||||
|
call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-noavx.tar.gz -e --strip 1 -o ./engines/cortex.llamacpp/windows-amd64-noavx/v%ENGINE_VERSION%
|
||||||
|
call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-avx.tar.gz -e --strip 1 -o ./engines/cortex.llamacpp/windows-amd64-avx/v%ENGINE_VERSION%
|
||||||
|
call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-avx2.tar.gz -e --strip 1 -o ./engines/cortex.llamacpp/windows-amd64-avx2/v%ENGINE_VERSION%
|
||||||
|
call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-avx512.tar.gz -e --strip 1 -o ./engines/cortex.llamacpp/windows-amd64-avx512/v%ENGINE_VERSION%
|
||||||
|
call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-vulkan.tar.gz -e --strip 1 -o ./engines/cortex.llamacpp/windows-amd64-vulkan/v%ENGINE_VERSION%
|
||||||
|
@REM call %DOWNLOAD_TOOL% %CUDA_DOWNLOAD_URL%/cuda-12-0-windows-amd64.tar.gz -e --strip 1 -o %BIN_PATH%
|
||||||
|
@REM call %DOWNLOAD_TOOL% %CUDA_DOWNLOAD_URL%/cuda-11-7-windows-amd64.tar.gz -e --strip 1 -o %BIN_PATH%
|
||||||
|
|
||||||
|
move %BIN_PATH%cortex-server-beta.exe %BIN_PATH%cortex-server.exe
|
||||||
|
copy %BIN_PATH%cortex-server.exe %BIN_PATH%cortex-server-x86_64-pc-windows-msvc.exe
|
||||||
|
del %BIN_PATH%cortex-beta.exe
|
||||||
|
del %BIN_PATH%cortex.exe
|
||||||
|
|
||||||
|
@REM Loop through each folder and move DLLs (excluding engine.dll)
|
||||||
|
for %%F in (%SUBFOLDERS%) do (
|
||||||
|
echo Processing folder: .\engines\cortex.llamacpp\%%F\v%ENGINE_VERSION%
|
||||||
|
|
||||||
|
@REM Move all .dll files except engine.dll
|
||||||
|
for %%D in (.\engines\cortex.llamacpp\%%F\v%ENGINE_VERSION%\*.dll) do (
|
||||||
|
if /I not "%%~nxD"=="engine.dll" (
|
||||||
|
move "%%D" "%BIN_PATH%"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
echo DLL files moved successfully.
|
||||||
@ -32,23 +32,24 @@ fi
|
|||||||
if [ "$OS_TYPE" == "Linux" ]; then
|
if [ "$OS_TYPE" == "Linux" ]; then
|
||||||
# Linux downloads
|
# Linux downloads
|
||||||
download "${CORTEX_RELEASE_URL}/v${CORTEX_VERSION}/cortex-${CORTEX_VERSION}-linux-amd64.tar.gz" "${BIN_PATH}"
|
download "${CORTEX_RELEASE_URL}/v${CORTEX_VERSION}/cortex-${CORTEX_VERSION}-linux-amd64.tar.gz" "${BIN_PATH}"
|
||||||
mv .cortex-server-beta ./cortex-server
|
mv ./cortex-server-beta ./cortex-server
|
||||||
rm -rf ./cortex
|
rm -rf ./cortex
|
||||||
rm -rf ./cortex-beta
|
rm -rf ./cortex-beta
|
||||||
chmod +x "./cortex-server"
|
chmod +x "./cortex-server"
|
||||||
|
cp ./cortex-server ./cortex-server-x86_64-unknown-linux-gnu
|
||||||
|
|
||||||
# Download engines for Linux
|
# Download engines for Linux
|
||||||
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-noavx.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-noavx/v${ENGINE_VERSION}"
|
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-noavx.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-noavx/v${ENGINE_VERSION}"
|
||||||
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-avx.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-avx/v${ENGINE_VERSION}"
|
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-avx.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-avx/v${ENGINE_VERSION}"
|
||||||
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-avx2.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-avx2/v${ENGINE_VERSION}"
|
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-avx2.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-avx2/v${ENGINE_VERSION}"
|
||||||
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-avx512.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-avx512/v${ENGINE_VERSION}"
|
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-avx512.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-avx512/v${ENGINE_VERSION}"
|
||||||
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-avx2-cuda-12-0.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-avx2-cuda-12-0/v${ENGINE_VERSION}"
|
# download "${ENGINE_DOWNLOAD_URL}-linux-amd64-avx2-cuda-12-0.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-avx2-cuda-12-0/v${ENGINE_VERSION}"
|
||||||
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-avx2-cuda-11-7.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-avx2-cuda-11-7/v${ENGINE_VERSION}"
|
# download "${ENGINE_DOWNLOAD_URL}-linux-amd64-avx2-cuda-11-7.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-avx2-cuda-11-7/v${ENGINE_VERSION}"
|
||||||
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-noavx-cuda-12-0.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-noavx-cuda-12-0/v${ENGINE_VERSION}"
|
# download "${ENGINE_DOWNLOAD_URL}-linux-amd64-noavx-cuda-12-0.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-noavx-cuda-12-0/v${ENGINE_VERSION}"
|
||||||
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-noavx-cuda-11-7.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-noavx-cuda-11-7/v${ENGINE_VERSION}"
|
# download "${ENGINE_DOWNLOAD_URL}-linux-amd64-noavx-cuda-11-7.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-noavx-cuda-11-7/v${ENGINE_VERSION}"
|
||||||
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-vulkan.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-vulkan/v${ENGINE_VERSION}"
|
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-vulkan.tar.gz" "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-vulkan/v${ENGINE_VERSION}"
|
||||||
download "${CUDA_DOWNLOAD_URL}/cuda-12-0-linux-amd64.tar.gz" "${BIN_PATH}"
|
# download "${CUDA_DOWNLOAD_URL}/cuda-12-0-linux-amd64.tar.gz" "${BIN_PATH}"
|
||||||
download "${CUDA_DOWNLOAD_URL}/cuda-11-7-linux-amd64.tar.gz" "${BIN_PATH}"
|
# download "${CUDA_DOWNLOAD_URL}/cuda-11-7-linux-amd64.tar.gz" "${BIN_PATH}"
|
||||||
|
|
||||||
elif [ "$OS_TYPE" == "Darwin" ]; then
|
elif [ "$OS_TYPE" == "Darwin" ]; then
|
||||||
# macOS downloads
|
# macOS downloads
|
||||||
|
|||||||
12
src-tauri/sign.ps1
Normal file
12
src-tauri/sign.ps1
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
param (
|
||||||
|
[string]$Target
|
||||||
|
)
|
||||||
|
|
||||||
|
AzureSignTool.exe sign `
|
||||||
|
-tr http://timestamp.digicert.com `
|
||||||
|
-kvu $env:AZURE_KEY_VAULT_URI `
|
||||||
|
-kvi $env:AZURE_CLIENT_ID `
|
||||||
|
-kvt $env:AZURE_TENANT_ID `
|
||||||
|
-kvs $env:AZURE_CLIENT_SECRET `
|
||||||
|
-kvc $env:AZURE_CERT_NAME `
|
||||||
|
-v $Target
|
||||||
@ -101,6 +101,7 @@ pub fn get_jan_data_folder_path<R: Runtime>(app_handle: tauri::AppHandle<R>) ->
|
|||||||
}
|
}
|
||||||
|
|
||||||
let app_configurations = get_app_configurations(app_handle);
|
let app_configurations = get_app_configurations(app_handle);
|
||||||
|
log::info!("data_folder: {}", app_configurations.data_folder);
|
||||||
PathBuf::from(app_configurations.data_folder)
|
PathBuf::from(app_configurations.data_folder)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,7 +159,18 @@ pub fn get_configuration_file_path<R: Runtime>(app_handle: tauri::AppHandle<R>)
|
|||||||
PathBuf::from(home_dir)
|
PathBuf::from(home_dir)
|
||||||
});
|
});
|
||||||
|
|
||||||
app_path.join(CONFIGURATION_FILE_NAME)
|
let package_name = env!("CARGO_PKG_NAME");
|
||||||
|
log::info!("Package name: {}", package_name);
|
||||||
|
let old_data_dir = app_path
|
||||||
|
.clone()
|
||||||
|
.parent()
|
||||||
|
.unwrap_or(&app_path.join("../"))
|
||||||
|
.join(package_name);
|
||||||
|
if old_data_dir.exists() {
|
||||||
|
return old_data_dir.join(CONFIGURATION_FILE_NAME);
|
||||||
|
} else {
|
||||||
|
return app_path.join(CONFIGURATION_FILE_NAME);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
|
|||||||
@ -19,7 +19,9 @@ use super::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
pub fn install_extensions(app: tauri::AppHandle, force: bool) -> Result<(), String> {
|
pub fn install_extensions(app: tauri::AppHandle, force: bool) -> Result<(), String> {
|
||||||
let store = app.store("store.json").expect("Store not initialized");
|
let mut store_path = get_jan_data_folder_path(app.clone());
|
||||||
|
store_path.push("store.json");
|
||||||
|
let store = app.store(store_path).expect("Store not initialized");
|
||||||
let stored_version = store
|
let stored_version = store
|
||||||
.get("version")
|
.get("version")
|
||||||
.and_then(|v| v.as_str().map(String::from))
|
.and_then(|v| v.as_str().map(String::from))
|
||||||
@ -201,29 +203,20 @@ pub fn setup_sidecar(app: &App) -> Result<(), String> {
|
|||||||
// Setup sidecar
|
// Setup sidecar
|
||||||
|
|
||||||
let app_state = app.state::<AppState>();
|
let app_state = app.state::<AppState>();
|
||||||
|
let app_data_dir = get_jan_data_folder_path(app.handle().clone());
|
||||||
let mut sidecar_command = app.shell().sidecar("cortex-server").unwrap().args([
|
let mut sidecar_command = app.shell().sidecar("cortex-server").unwrap().args([
|
||||||
"--start-server",
|
"--start-server",
|
||||||
"--port",
|
"--port",
|
||||||
"39291",
|
"39291",
|
||||||
"--config_file_path",
|
"--config_file_path",
|
||||||
app.app_handle()
|
app_data_dir.join(".janrc").to_str().unwrap(),
|
||||||
.path()
|
|
||||||
.app_data_dir()
|
|
||||||
.unwrap()
|
|
||||||
.join(".janrc")
|
|
||||||
.to_str()
|
|
||||||
.unwrap(),
|
|
||||||
"--data_folder_path",
|
"--data_folder_path",
|
||||||
app.app_handle()
|
app_data_dir.to_str().unwrap(),
|
||||||
.path()
|
|
||||||
.app_data_dir()
|
|
||||||
.unwrap()
|
|
||||||
.to_str()
|
|
||||||
.unwrap(),
|
|
||||||
"--cors",
|
"--cors",
|
||||||
"ON",
|
"ON",
|
||||||
"--allowed_origins",
|
"--allowed_origins",
|
||||||
"http://localhost:3000,tauri://localhost",
|
// TODO(sang) '*' is only for testing purpose, will remove it later
|
||||||
|
"http://localhost:3000,tauri://localhost,*",
|
||||||
"config",
|
"config",
|
||||||
"--api_keys",
|
"--api_keys",
|
||||||
app_state.inner().app_token.as_deref().unwrap_or(""),
|
app_state.inner().app_token.as_deref().unwrap_or(""),
|
||||||
@ -289,7 +282,7 @@ fn copy_dir_all(src: PathBuf, dst: PathBuf) -> Result<(), String> {
|
|||||||
|
|
||||||
pub fn setup_engine_binaries(app: &App) -> Result<(), String> {
|
pub fn setup_engine_binaries(app: &App) -> Result<(), String> {
|
||||||
// Copy engine binaries to app_data
|
// Copy engine binaries to app_data
|
||||||
let app_data_dir = app.handle().path().app_data_dir().unwrap();
|
let app_data_dir = get_jan_data_folder_path(app.handle().clone());
|
||||||
let binaries_dir = app.handle().path().resource_dir().unwrap().join("binaries");
|
let binaries_dir = app.handle().path().resource_dir().unwrap().join("binaries");
|
||||||
let themes_dir = app
|
let themes_dir = app
|
||||||
.handle()
|
.handle()
|
||||||
|
|||||||
1020
src-tauri/tauri.bundle.windows.nsis.template
Normal file
1020
src-tauri/tauri.bundle.windows.nsis.template
Normal file
File diff suppressed because it is too large
Load Diff
@ -6,8 +6,8 @@
|
|||||||
"build": {
|
"build": {
|
||||||
"frontendDist": "../web/out",
|
"frontendDist": "../web/out",
|
||||||
"devUrl": "http://localhost:3000",
|
"devUrl": "http://localhost:3000",
|
||||||
"beforeDevCommand": "IS_TAURI=true yarn dev:web",
|
"beforeDevCommand": "cross-env IS_TAURI=true yarn dev:web",
|
||||||
"beforeBuildCommand": "IS_TAURI=true yarn build:web"
|
"beforeBuildCommand": "cross-env IS_TAURI=true yarn build:web"
|
||||||
},
|
},
|
||||||
"app": {
|
"app": {
|
||||||
"macOSPrivateApi": true,
|
"macOSPrivateApi": true,
|
||||||
@ -30,11 +30,11 @@
|
|||||||
"security": {
|
"security": {
|
||||||
"csp": {
|
"csp": {
|
||||||
"default-src": "'self' customprotocol: asset: http://localhost:* http://127.0.0.1:* ws://localhost:* ws://127.0.0.1:*",
|
"default-src": "'self' customprotocol: asset: http://localhost:* http://127.0.0.1:* ws://localhost:* ws://127.0.0.1:*",
|
||||||
"connect-src": "ipc: http://ipc.localhost http://127.0.0.1:* ws://localhost:* ws://127.0.0.1:*",
|
"connect-src": "ipc: http://ipc.localhost http://127.0.0.1:* ws://localhost:* ws://127.0.0.1:* https://registry.npmjs.org",
|
||||||
"font-src": ["https://fonts.gstatic.com blob: data:"],
|
"font-src": ["https://fonts.gstatic.com blob: data:"],
|
||||||
"img-src": "'self' asset: http://asset.localhost blob: data:",
|
"img-src": "'self' asset: http://asset.localhost blob: data:",
|
||||||
"style-src": "'unsafe-inline' 'self' https://fonts.googleapis.com",
|
"style-src": "'unsafe-inline' 'self' https://fonts.googleapis.com",
|
||||||
"script-src": "'self' asset: $APPDATA/**.*"
|
"script-src": "'self' asset: $APPDATA/**.* http://asset.localhost"
|
||||||
},
|
},
|
||||||
"assetProtocol": {
|
"assetProtocol": {
|
||||||
"enable": true,
|
"enable": true,
|
||||||
@ -50,13 +50,16 @@
|
|||||||
"pubkey": "",
|
"pubkey": "",
|
||||||
"endpoints": [
|
"endpoints": [
|
||||||
"https://github.com/menloresearch/jan/releases/latest/download/latest.json"
|
"https://github.com/menloresearch/jan/releases/latest/download/latest.json"
|
||||||
]
|
],
|
||||||
|
"windows": {
|
||||||
|
"installMode": "passive"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bundle": {
|
"bundle": {
|
||||||
"active": true,
|
"active": true,
|
||||||
"targets": "all",
|
"targets": ["nsis", "app", "dmg", "deb", "appimage"],
|
||||||
"createUpdaterArtifacts": true,
|
"createUpdaterArtifacts": false,
|
||||||
"icon": [
|
"icon": [
|
||||||
"icons/32x32.png",
|
"icons/32x32.png",
|
||||||
"icons/128x128.png",
|
"icons/128x128.png",
|
||||||
@ -69,6 +72,9 @@
|
|||||||
"resources/themes/**/*",
|
"resources/themes/**/*",
|
||||||
"resources/pre-install/**/*"
|
"resources/pre-install/**/*"
|
||||||
],
|
],
|
||||||
"externalBin": ["binaries/cortex-server"]
|
"externalBin": ["binaries/cortex-server"],
|
||||||
|
"windows": {
|
||||||
|
"signCommand": "powershell -ExecutionPolicy Bypass -File ./sign.ps1 %1"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user