mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-07 13:23:15 +00:00
Create Github Workflow to Wrap Khoj into OS Specific Apps
- Why
- Simplify Installation of Khoj by providing OS specific apps
- What
- Create Github workflow to wrap Khoj into
- [X] A Mac .app Disk Image
- [X] A Windows .exe app
- [X] A Linux .deb package
Improves #56
Closes #64, #65
This commit is contained in:
100
.github/workflows/release.yml
vendored
Normal file
100
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- v*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-latest, ubuntu-latest, windows-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Python 3.9
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.9'
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ "$RUNNER_OS" == "Linux" ]; then
|
||||||
|
sudo apt install libegl1 libxcb-xinerama0 -y
|
||||||
|
fi
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install pyinstaller
|
||||||
|
|
||||||
|
- name: Install Khoj App
|
||||||
|
run: |
|
||||||
|
pip install --upgrade .
|
||||||
|
|
||||||
|
- name: Package Khoj App
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
pyinstaller Khoj.spec
|
||||||
|
|
||||||
|
- name: Create Mac App DMG
|
||||||
|
if: matrix.os == 'macos-latest'
|
||||||
|
run: |
|
||||||
|
# Install Mac DMG Creator
|
||||||
|
brew install create-dmg
|
||||||
|
# Copy app to separate dmg folder
|
||||||
|
mkdir -p dist/dmg && cp -r dist/Khoj.app dist/dmg
|
||||||
|
# Create disk image with the app
|
||||||
|
create-dmg \
|
||||||
|
--volname "Khoj" \
|
||||||
|
--volicon "src/interface/web/assets/icons/favicon.icns" \
|
||||||
|
--window-pos 200 120 \
|
||||||
|
--window-size 600 300 \
|
||||||
|
--icon-size 100 \
|
||||||
|
--icon "Khoj.app" 175 120 \
|
||||||
|
--hide-extension "Khoj.app" \
|
||||||
|
--app-drop-link 425 120 \
|
||||||
|
"dist/Khoj.dmg" \
|
||||||
|
"dist/dmg/"
|
||||||
|
|
||||||
|
- uses: ruby/setup-ruby@v1
|
||||||
|
if: matrix.os == 'ubuntu-latest'
|
||||||
|
with:
|
||||||
|
ruby-version: '3.0'
|
||||||
|
- name: Create Debian Package
|
||||||
|
if: matrix.os == 'ubuntu-latest'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
# Install Debian Packager
|
||||||
|
gem install fpm
|
||||||
|
|
||||||
|
# Copy app files into expected output directory structure
|
||||||
|
mkdir -p package/opt package/usr/share/applications package/usr/share/icons/hicolor/128x128/apps
|
||||||
|
cp -r dist/Khoj package/opt/Khoj
|
||||||
|
cp src/interface/web/assets/icons/favicon-128x128.png package/usr/share/icons/hicolor/128x128/apps/Khoj.png
|
||||||
|
cp Khoj.desktop package/usr/share/applications
|
||||||
|
|
||||||
|
# Fix permissions to be usable by non-root users
|
||||||
|
find package/usr/share -type f -exec chmod 644 -- {} +
|
||||||
|
chmod 644 package/opt/Khoj
|
||||||
|
|
||||||
|
# Package the app
|
||||||
|
fpm -C package -s dir -t deb -n "Khoj" --version "$GITHUB_REF_NAME" -p dist/Khoj.deb
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
if : matrix.os == 'macos-latest'
|
||||||
|
with:
|
||||||
|
name: khoj.dmg
|
||||||
|
path: dist/Khoj.dmg
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
if : matrix.os == 'windows-latest'
|
||||||
|
with:
|
||||||
|
name: khoj.exe
|
||||||
|
path: dist/Khoj.exe
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
if : matrix.os == 'ubuntu-latest'
|
||||||
|
with:
|
||||||
|
name: khoj.deb
|
||||||
|
path: dist/Khoj.deb
|
||||||
7
Khoj.desktop
Normal file
7
Khoj.desktop
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Khoj
|
||||||
|
Comment=A natural language search engine for your personal notes, transactions and images.
|
||||||
|
Path=/opt/Khoj
|
||||||
|
Exec=/opt/Khoj/Khoj
|
||||||
|
Icon=Khoj
|
||||||
@@ -48,7 +48,7 @@ exe = EXE(
|
|||||||
console=False,
|
console=False,
|
||||||
disable_windowed_traceback=False,
|
disable_windowed_traceback=False,
|
||||||
argv_emulation=False,
|
argv_emulation=False,
|
||||||
target_arch='arm64',
|
target_arch='x86_64',
|
||||||
codesign_identity=None,
|
codesign_identity=None,
|
||||||
entitlements_file=None,
|
entitlements_file=None,
|
||||||
icon='src/interface/web/assets/icons/favicon.icns',
|
icon='src/interface/web/assets/icons/favicon.icns',
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
[](https://github.com/debanjum/khoj/actions/workflows/build.yml)
|
[](https://github.com/debanjum/khoj/actions/workflows/build.yml)
|
||||||
[](https://github.com/debanjum/khoj/actions/workflows/test.yml)
|
[](https://github.com/debanjum/khoj/actions/workflows/test.yml)
|
||||||
[](https://github.com/debanjum/khoj/actions/workflows/publish.yml)
|
[](https://github.com/debanjum/khoj/actions/workflows/publish.yml)
|
||||||
|
[](https://github.com/debanjum/khoj/actions/workflows/release.yml)
|
||||||
|
|
||||||
*A natural language search engine for your personal notes, transactions and images*
|
*A natural language search engine for your personal notes, transactions and images*
|
||||||
|
|
||||||
|
|||||||
BIN
src/interface/web/assets/icons/favicon-128x128.png
Normal file
BIN
src/interface/web/assets/icons/favicon-128x128.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
Reference in New Issue
Block a user