name: release on: push: tags: - "*" workflow_dispatch: inputs: version: description: 'Version Number' required: true type: string jobs: publish_obsidian_plugin: name: 💎 Publish Obsidian Plugin runs-on: ubuntu-latest permissions: contents: write defaults: run: shell: bash working-directory: src/interface/obsidian steps: - uses: actions/checkout@v3 - name: Install Node uses: actions/setup-node@v3 with: node-version: "lts/*" - name: ⚙️ Build Obsidian Plugin run: | yarn yarn run build --if-present - name: ⏫ Upload Obsidian Plugin main.js uses: actions/upload-artifact@v3 with: if-no-files-found: error name: main.js path: src/interface/obsidian/main.js - name: ⏫ Upload Obsidian Plugin manifest.json uses: actions/upload-artifact@v3 with: if-no-files-found: error name: manifest.json path: src/interface/obsidian/manifest.json - name: ⏫ Upload Obsidian Plugin styles.css uses: actions/upload-artifact@v3 with: if-no-files-found: error name: styles.css path: src/interface/obsidian/styles.css - name: 🌈 Create Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: generate_release_notes: true files: | src/interface/obsidian/main.js src/interface/obsidian/manifest.json src/interface/obsidian/styles.css publish_desktop_apps: name: 🖥️ Publish Desktop Apps strategy: matrix: include: - os: ubuntu-latest extension: deb - os: macos-latest extension: dmg - os: windows-latest extension: exe runs-on: ${{ matrix.os }} permissions: contents: write 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 update && sudo apt install libegl1 libxcb-xinerama0 python3-tk -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: | # Setup Environment for Reproducible Builds export PYTHONHASHSEED=42 export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) pyinstaller --noconfirm Khoj.spec if [ "$RUNNER_OS" == "Windows" ]; then mv dist/Khoj.exe dist/khoj_"$GITHUB_REF_NAME"_amd64.exe fi - 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/khoj/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_"$GITHUB_REF_NAME"_amd64.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 env: DEBIAN_PACKAGE_VERSION: ${{ inputs.version }} 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/khoj/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 755 package/opt/Khoj # Package the app if [ -z "$DEBIAN_PACKAGE_VERSION" ]; then DEBIAN_PACKAGE_VERSION=$(echo $GITHUB_REF_NAME | sed -E 's/v(.*)/\1/g') fi fpm -C package -s dir -t deb -n Khoj --version $DEBIAN_PACKAGE_VERSION -p dist/khoj_"$GITHUB_REF_NAME"_amd64.deb - uses: actions/upload-artifact@v3 with: name: khoj_${{github.ref_name}}_amd64.${{matrix.extension}} path: dist/khoj_${{github.ref_name}}_amd64.${{matrix.extension}} - name: 🌈 Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: generate_release_notes: true files: dist/khoj_${{github.ref_name}}_amd64.${{matrix.extension}}