diff --git a/.github/workflows/jan-electron-build-nightly.yml b/.github/workflows/jan-electron-build-nightly.yml new file mode 100644 index 0000000000..6bba9f03a4 --- /dev/null +++ b/.github/workflows/jan-electron-build-nightly.yml @@ -0,0 +1,182 @@ +name: Jan Build Electron App Nightly + +on: + push: + branches: + - chore/nightly-build + schedule: + - cron: '0 17 * * *' # At 5 PM UTC, which is 12 AM UTC+7 + + workflow_dispatch: + inputs: + branch: + description: 'Branch to build' + required: true + default: 'main' + +jobs: + build-macos: + runs-on: macos-latest + environment: production + permissions: + contents: write + steps: + - name: Getting the repo + uses: actions/checkout@v3 + + - name: Installing node + uses: actions/setup-node@v1 + with: + node-version: 20 + + - name: Install jq + uses: dcarbone/install-jq-action@v2.0.1 + + + - name: Update app version based on latest release tag with build number + id: version_update + run: | + # Get the latest release tag from GitHub API + LATEST_TAG=$(curl -s https://api.github.com/repos/janhq/jan/releases/latest | jq -r .tag_name) + + # Remove the 'v' and append the build number to the version + NEW_VERSION="${LATEST_TAG#v}-${GITHUB_RUN_NUMBER}" + echo "New version: $NEW_VERSION" + + # Update the version in electron/package.json + jq --arg version "$NEW_VERSION" '.version = $version' electron/package.json > /tmp/package.json + mv /tmp/package.json electron/package.json + echo "::set-output name=new_version::$NEW_VERSION" + + - name: Get Cer for code signing + run: base64 -d <<< "$CODE_SIGN_P12_BASE64" > /tmp/codesign.p12 + shell: bash + env: + CODE_SIGN_P12_BASE64: ${{ secrets.CODE_SIGN_P12_BASE64 }} + + - uses: apple-actions/import-codesign-certs@v2 + continue-on-error: true + with: + p12-file-base64: ${{ secrets.CODE_SIGN_P12_BASE64 }} + p12-password: ${{ secrets.CODE_SIGN_P12_PASSWORD }} + + - name: Build and publish app + run: | + make build + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CSC_LINK: "/tmp/codesign.p12" + CSC_KEY_PASSWORD: ${{ secrets.CODE_SIGN_P12_PASSWORD }} + CSC_IDENTITY_AUTO_DISCOVERY: "true" + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} + APP_PATH: "." + DEVELOPER_ID: ${{ secrets.DEVELOPER_ID }} + + - name: Upload Artifact + uses: actions/upload-artifact@v2 + with: + name: jan-mac-x64-${{ steps.version_update.outputs.new_version }}.dmg.zip + path: ./electron/dist/jan-mac-x64-${{ steps.version_update.outputs.new_version }}.dmg + + - name: Upload Artifact + uses: actions/upload-artifact@v2 + with: + name: jan-mac-arm64-${{ steps.version_update.outputs.new_version }}.dmg.zip + path: ./electron/dist/jan-mac-arm64-${{ steps.version_update.outputs.new_version }}.dmg + + build-windows-x64: + runs-on: windows-latest + permissions: + contents: write + steps: + - name: Getting the repo + uses: actions/checkout@v3 + + - name: Installing node + uses: actions/setup-node@v1 + with: + node-version: 20 + + - name: Install jq + uses: dcarbone/install-jq-action@v2.0.1 + + - name: Update app version base on tag + id: version_update + shell: bash + run: | + # Get the latest release tag from GitHub API + LATEST_TAG=$(curl -s https://api.github.com/repos/janhq/jan/releases/latest | jq -r .tag_name) + + # Remove the 'v' and append the build number to the version + NEW_VERSION="${LATEST_TAG#v}-${GITHUB_RUN_NUMBER}" + echo "New version: $NEW_VERSION" + + # Update the version in electron/package.json + jq --arg version "$NEW_VERSION" '.version = $version' electron/package.json > /tmp/package.json + mv /tmp/package.json electron/package.json + + echo "::set-output name=new_version::$NEW_VERSION" + + - name: Build app + shell: cmd + run: | + make build + + - name: Windows Code Sign with AzureSignTool + run: | + dotnet tool install --global AzureSignTool + cd ./electron/dist + azuresigntool.exe sign -kvu "${{ secrets.AZURE_KEY_VAULT_URI }}" -kvi "${{ secrets.AZURE_CLIENT_ID }}" -kvt "${{ secrets.AZURE_TENANT_ID }}" -kvs "${{ secrets.AZURE_CLIENT_SECRET }}" -kvc ${{ secrets.AZURE_CERT_NAME }} -tr http://timestamp.globalsign.com/tsa/r6advanced1 -v "jan-win-x64-${{ steps.version_update.outputs.new_version }}.exe" + + - name: Upload Artifact + uses: actions/upload-artifact@v2 + with: + name: jan-win-x64-${{ steps.version_update.outputs.new_version }}.exe.zip + path: ./electron/dist/*.exe + + build-linux-x64: + runs-on: ubuntu-latest + environment: production + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_TOKEN }} + permissions: + contents: write + steps: + - name: Getting the repo + uses: actions/checkout@v3 + + - name: Installing node + uses: actions/setup-node@v1 + with: + node-version: 20 + + - name: Install jq + uses: dcarbone/install-jq-action@v2.0.1 + + - name: Update app version base on tag + id: version_update + run: | + # Get the latest release tag from GitHub API + LATEST_TAG=$(curl -s https://api.github.com/repos/janhq/jan/releases/latest | jq -r .tag_name) + + # Remove the 'v' and append the build number to the version + NEW_VERSION="${LATEST_TAG#v}-${GITHUB_RUN_NUMBER}" + echo "New version: $NEW_VERSION" + + # Update the version in electron/package.json + jq --arg version "$NEW_VERSION" '.version = $version' electron/package.json > /tmp/package.json + mv /tmp/package.json electron/package.json + echo "::set-output name=new_version::$NEW_VERSION" + + - name: Build and publish app + run: | + make build + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload Artifact + uses: actions/upload-artifact@v2 + with: + name: jan-linux-amd64-${{ steps.version_update.outputs.new_version }}.deb.zip + path: ./electron/dist/*.deb diff --git a/.github/workflows/jan-electron-build.yml b/.github/workflows/jan-electron-build.yml index 7d3f7adcb0..cf64891366 100644 --- a/.github/workflows/jan-electron-build.yml +++ b/.github/workflows/jan-electron-build.yml @@ -182,9 +182,6 @@ jobs: - name: Install jq uses: dcarbone/install-jq-action@v2.0.1 - - name: Install Snapcraft - uses: samuelmeuli/action-snapcraft@v2 - - name: Get tag id: tag uses: dawidd6/action-get-tag@v1 diff --git a/electron/package.json b/electron/package.json index 0eed33b2e9..a316d5e3cd 100644 --- a/electron/package.json +++ b/electron/package.json @@ -57,9 +57,9 @@ "build:test:darwin": "tsc -p . && electron-builder -p never -m --dir", "build:test:win32": "tsc -p . && electron-builder -p never -w --dir", "build:test:linux": "tsc -p . && electron-builder -p never -l --dir", - "build:darwin": "tsc -p . && electron-builder -p never -m", + "build:darwin": "tsc -p . && electron-builder -p never -m --x64 --arm64", "build:win32": "tsc -p . && electron-builder -p never -w", - "build:linux": "tsc -p . && electron-builder -p never --linux deb", + "build:linux": "tsc -p . && electron-builder -p never -l deb", "build:publish": "run-script-os", "build:publish:darwin": "tsc -p . && electron-builder -p onTagOrDraft -m --x64 --arm64", "build:publish:win32": "tsc -p . && electron-builder -p onTagOrDraft -w",