# This is a basic workflow to help you get started with Actions name: Build-Desktop-Release on: workflow_dispatch: inputs: tag-version: description: "Release Tag Version" required: true git-ref: description: "Release Git Ref" required: true default: "master" is-draft: description: 'Draft Release? ' required: true default: "true" is-pre-release: description: 'Pre Release?' required: true default: "true" jobs: compile-cljs: runs-on: ubuntu-latest steps: - name: Check out Git repository uses: actions/checkout@v1 - name: Install Node.js, NPM and Yarn uses: actions/setup-node@v1 with: node-version: 14 - name: Setup Java JDK uses: actions/setup-java@v1.4.3 with: java-version: 1.8 - name: Cache local Maven repository uses: actions/cache@v2 with: path: ~/.m2/repository key: ${{ runner.os }}-maven - name: Install clojure run: | curl -O https://download.clojure.org/install/linux-install-1.10.1.763.sh chmod +x linux-install-1.10.1.763.sh sudo ./linux-install-1.10.1.763.sh - name: Compile CLJS run: yarn install --frozen-lockfile && gulp build && yarn cljs:release - name: Update APP Version run: | sed -i 's/"version": "0.0.1"/"version": "${{ github.event.inputs.tag-version }}"/g' ./package.json working-directory: ./static - name: Update OSX Packager Config run: | sed -i 's/appleId: "my-fake-apple-id"/appleId: "${{ secrets.APPLE_ID_EMAIL }}"/' ./forge.config.js sed -i 's/appleIdPassword: "my-fake-apple-id-password"/appleIdPassword: "${{ secrets.APPLE_ID_PASSWORD }}"/' ./forge.config.js working-directory: ./static - name: Display Package.json run: cat ./package.json working-directory: ./static - name: List Files run: ls -al working-directory: ./static - name: Compress Static Files run: zip -r static.zip ./static - name: Cache Static File uses: actions/upload-artifact@v1 with: name: static.zip path: static.zip build-linux: runs-on: ubuntu-latest needs: [ compile-cljs ] steps: - name: Download The Static Asset uses: actions/download-artifact@v1 with: name: static.zip path: ./ - name: Uncompress Static FIles run: unzip static.zip - name: Install Node.js, NPM and Yarn uses: actions/setup-node@v1 with: node-version: 14 - name: Cache Node Modules uses: actions/cache@v2 with: path: | **/node_modules key: ${{ runner.os }}-node-modules - name: Build/Release Electron App run: yarn install --frozen-lockfile && yarn electron:make working-directory: ./static - name: Change Artifact Name For ZIP File run: mv static/out/make/zip/linux/x64/*-linux-x64-*.zip static/out/make/zip/linux/x64/Logseq-linux.zip - name: Change Artifact Name For AppImage File run: mv static/out/make/*-*.AppImage static/out/make/Logseq-linux.AppImage - name: Cache Artifact With ZIP format uses: actions/upload-artifact@v1 with: name: Logseq-linux.zip path: static/out/make/zip/linux/x64/Logseq-linux.zip - name: Cache Artifact With AppImage format uses: actions/upload-artifact@v1 with: name: Logseq-linux.AppImage path: static/out/make/Logseq-linux.AppImage build-windows: runs-on: windows-latest needs: [ compile-cljs ] steps: - name: Download The Static Asset uses: actions/download-artifact@v1 with: name: static.zip path: ./ - name: Uncompress Static FIles run: unzip static.zip - name: Install Node.js, NPM and Yarn uses: actions/setup-node@v1 with: node-version: 14 - name: Cache Node Modules uses: actions/cache@v2 with: path: | **/node_modules key: ${{ runner.os }}-node-modules - name: Build/Release Electron app run: yarn install --frozen-lockfile && yarn electron:make working-directory: ./static - name: Change Artifact Name run: Get-ChildItem static\out\make\squirrel.windows\x64\*.exe | Rename-Item -NewName Logseq-win64.exe - name: List Directory run: dir working-directory: static/out/make/squirrel.windows/x64/ - name: Cache Artifact uses: actions/upload-artifact@v1 with: name: Logseq-win64.exe path: static/out/make/squirrel.windows/x64/Logseq-win64.exe build-macos: needs: [ compile-cljs ] runs-on: macos-latest steps: - name: Download The Static Asset uses: actions/download-artifact@v1 with: name: static.zip path: ./ - name: Uncompress Static Files run: unzip ./static.zip - name: List Static Files run: ls -al ./static - name: Install Node.js, NPM and Yarn uses: actions/setup-node@v1 with: node-version: 14 - name: Signing By Apple Developer ID uses: apple-actions/import-codesign-certs@v1 with: p12-file-base64: ${{ secrets.APPLE_CERTIFICATES_P12 }} p12-password: ${{ secrets.APPLE_CERTIFICATES_P12_PASSWORD }} - name: Cache Node Modules uses: actions/cache@v2 with: path: | **/node_modules key: ${{ runner.os }}-node-modules - name: Build/Release Electron App run: yarn install --frozen-lockfile && yarn electron:make working-directory: ./static - name: Change DMG Name run: mv static/out/make/*.dmg static/out/make/logseq-darwin-x64-${{ github.event.inputs.tag-version }}.dmg - name: Cache Artifact DMG uses: actions/upload-artifact@v1 with: name: Logseq-x64.dmg path: static/out/make/logseq-darwin-x64-${{ github.event.inputs.tag-version }}.dmg - name: ls files run: du -a static/out/ - name: Change zip Name run: mv static/out/make/zip/darwin/x64/*.zip static/out/make/zip/darwin/x64/logseq-darwin-x64-${{ github.event.inputs.tag-version }}.zip - name: Cache Artifact ZIP uses: actions/upload-artifact@v1 with: name: Logseq-x64.zip path: static/out/make/zip/darwin/x64/logseq-darwin-x64-${{ github.event.inputs.tag-version }}.zip release: needs: [ build-macos, build-linux, build-windows ] runs-on: ubuntu-latest steps: - name: Download The MacOS X64 DMG Artifact uses: actions/download-artifact@v1 with: name: Logseq-x64.dmg path: ./ - name: Download The MacOS X64 ZIP Artifact uses: actions/download-artifact@v1 with: name: Logseq-x64.zip path: ./ - name: Download The Linux Artifact In Zip format uses: actions/download-artifact@v1 with: name: Logseq-linux.zip path: ./ - name: Download The Linux Artifact In AppImage format uses: actions/download-artifact@v1 with: name: Logseq-linux.AppImage path: ./ - name: Download The Windows Artifact uses: actions/download-artifact@v1 with: name: Logseq-win64.exe path: ./ - name: List files run: ls -rl - name: Create Release Draft id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.event.inputs.tag-version }} release_name: Desktop APP ${{ github.event.inputs.tag-version }} (Alpha Testing) draft: ${{ github.event.inputs.is-draft }} prerelease: ${{ github.event.inputs.is-pre-release }} - name: Upload MacOS X64 ZIP Artifact id: upload-macos-x64-zip-artifact uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./logseq-darwin-x64-${{ github.event.inputs.tag-version }}.zip asset_name: logseq-darwin-x64-${{ github.event.inputs.tag-version }}.zip asset_content_type: application/zip - name: Upload MacOS X64 DMG Artifact id: upload-macos-x64-dmg-artifact uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./logseq-darwin-x64-${{ github.event.inputs.tag-version }}.dmg asset_name: logseq-darwin-x64-${{ github.event.inputs.tag-version }}.dmg asset_content_type: application/x-apple-diskimage - name: Upload Linux Artifact With Zip format id: upload-linux-artifact-with-zip-format uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./Logseq-linux.zip asset_name: logseq-linux-x64-${{ github.event.inputs.tag-version }}.zip asset_content_type: application/zip - name: Upload Linux Artifact With AppImage format id: upload-linux-artifact-with-appimage-format uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./Logseq-linux.AppImage asset_name: logseq-linux-x64-${{ github.event.inputs.tag-version }}.AppImage asset_content_type: application/octet-stream - name: Upload Windows Artifact id: upload-win-artifact uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./Logseq-win64.exe asset_name: logseq-win-x64-${{ github.event.inputs.tag-version }}.exe asset_content_type: application/octet-stream