diff --git a/.github/notify-slack.js b/.github/notify-slack.js index 0b96f7b..ca5adf3 100755 --- a/.github/notify-slack.js +++ b/.github/notify-slack.js @@ -8,7 +8,7 @@ async function main() { type: 'section', text: { type: 'mrkdwn', - text: `NEW BUILD FOR ${process.env.PLATFORM} <${process.env.DOWNLOAD_URL}|download ${process.env.VERSION || ''}>` + text: `NEW BUILD FOR ${process.env.PLATFORM} <${process.env.DOWNLOAD_URL}|download ${process.env.EXT || 'bin'} ${process.env.VERSION || ''}>` } } ] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2a5e34e..3629467 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -107,7 +107,8 @@ jobs: with: message-id: preview-comment-${{needs.changes.outputs.preview_folder}} message: | - **preview is at**: [https://${{steps.preview_setup.outputs.domain}}](https://${{steps.preview_setup.outputs.domain}}) + **preview is at**: + here ```bash https://${{steps.preview_setup.outputs.domain}} ``` @@ -122,91 +123,143 @@ jobs: platform: - os: macos-11 name: darwin+x86-64 + id: mac_latest - os: ubuntu-latest name: linux+x86-64 + id: linux - os: [self-hosted, macOS, ARM64] name: darwin+aarch64 + id: mac_m1 # - os: [self-hosted, linux, ARM64] # name: linux+aarch64 container: ${{ matrix.platform.container }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v2 + - uses: pnpm/action-setup@v2 + with: + version: 7 + - name: setup node + uses: actions/setup-node@v1 + with: + node-version: 18 + cache: 'pnpm' + cache-dependency-path: pnpm-lock.yaml + - name: install Rust stable + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + - name: install app dependencies + run: pnpm install - - uses: pnpm/action-setup@v2 - with: - version: 7 - - name: setup node - uses: actions/setup-node@v1 - with: - node-version: 16 - cache: 'pnpm' - cache-dependency-path: pnpm-lock.yaml - - name: install Rust stable - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - name: install dependencies (ubuntu only) - if: matrix.platform.name == 'linux+x86-64' - run: | - sudo apt-get update - sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf pkg-config - - uses: Swatinem/rust-cache@v2 - with: - # The prefix cache key, this can be changed to start a new cache manually. - # default: "v0-rust" - prefix-key: ${{ matrix.platform.name }} - shared-key: ci - cache-targets: false - - name: install app dependencies - run: pnpm install + - name: install dependencies (ubuntu only) + if: matrix.platform.name == 'linux+x86-64' + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf pkg-config - - name: Cache Tauri Target - uses: actions/cache@v3 - with: - path: | - ./modules/gui/src-tauri/target - key: ${{ matrix.platform.name }}-build-target - restore-keys: | - ${{ matrix.platform.name }}-build-target - - - name: build platform output - id: build_platform - env: - platform: ${{ matrix.platform.name }} - run: | - EXTENSION=dmg - BUILD_PLATFORM=$(echo $platform | sed -e "s/darwin+//g" | sed -e "s/linux+//g") - [[ $BUILD_PLATFORM = "x86-64" ]] && BUILD_PLATFORM="x64" || BUILD_PLATFORM=$BUILD_PLATFORM - [[ $platform = "linux+x86-64" ]] && BUILD_PLATFORM="amd64" || BUILD_PLATFORM=$BUILD_PLATFORM - [[ $platform = "linux+x86-64" ]] && EXTENSION="deb" - echo "build_platform=$BUILD_PLATFORM" >> $GITHUB_OUTPUT - echo "extension=$EXTENSION" >> $GITHUB_OUTPUT + - uses: Swatinem/rust-cache@v2 + with: + # The prefix cache key, this can be changed to start a new cache manually. + # default: "v0-rust" + prefix-key: ${{ matrix.platform.name }} + shared-key: ci + cache-targets: false - - name: test build tauri - run: pnpm --filter gui tauri build + - name: Cache Tauri Target + uses: actions/cache@v3 + with: + path: | + ./modules/gui/src-tauri/target + key: ${{ matrix.platform.name }}-build-target + restore-keys: | + ${{ matrix.platform.name }}-build-target + + - name: build platform output + id: build_platform + env: + platform: ${{ matrix.platform.name }} + run: | + EXTENSION=dmg + BUILD_PLATFORM=$(echo $platform | sed -e "s/darwin+//g" | sed -e "s/linux+//g") + [[ $BUILD_PLATFORM = "x86-64" ]] && BUILD_PLATFORM="x64" || BUILD_PLATFORM=$BUILD_PLATFORM + [[ $platform = "linux+x86-64" ]] && BUILD_PLATFORM="amd64" || BUILD_PLATFORM=$BUILD_PLATFORM + [[ $platform = "linux+x86-64" ]] && EXTENSION="deb" + echo "build_platform=$BUILD_PLATFORM" >> $GITHUB_OUTPUT + echo "extension=$EXTENSION" >> $GITHUB_OUTPUT - - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: us-east-1 + - name: test build tauri for MacOS + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + # FROM: https://tauri.app/v1/guides/distribution/sign-macos + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ENABLE_CODE_SIGNING: ${{ secrets.GUI_APPLE_CERTIFICATE }} + APPLE_CERTIFICATE: ${{ secrets.GUI_APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.GUI_APPLE_CERTIFICATE_PASSWORD }} + APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + run: pnpm build:gui - - name: cp package images from prod to preview bucket - env: - prefix: ${{ needs.changes.outputs.preview_folder }} - platform: ${{ steps.build_platform.outputs.build_platform }} - extension: ${{ steps.build_platform.outputs.extension }} - run: | - aws s3 cp "./modules/gui/src-tauri/target/release/bundle/$extension/tea_0.1.0_$platform.$extension" \ - "s3://preview.gui.tea.xyz/$prefix/gui_$platform.$extension" + - name: test build tauri for Linux + if: matrix.platform.name == 'linux+x86-64' + # TODO: https://tauri.app/v1/guides/distribution/sign-linux + run: pnpm build:gui + + - name: zip .app for MacOS + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + run: | + cd ./modules/gui/src-tauri/target/release/bundle/macos/ && zip -r tea.zip tea.app + + - uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + + - name: cp package images from prod to preview bucket + env: + prefix: ${{ needs.changes.outputs.preview_folder }} + platform: ${{ steps.build_platform.outputs.build_platform }} + extension: ${{ steps.build_platform.outputs.extension }} + run: | + aws s3 cp "./modules/gui/src-tauri/target/release/bundle/$extension/tea_0.1.0_$platform.$extension" \ + "s3://preview.gui.tea.xyz/$prefix/tea_$platform.$extension" - - name: comment install - uses: mshick/add-pr-comment@v2 - with: - message-id: ${{ matrix.platform.name }}-comment - message: | - **installer for ${{ matrix.platform.name }} is at**: [here](http://preview.gui.tea.xyz.s3-website-us-east-1.amazonaws.com/${{ needs.changes.outputs.preview_folder }}/gui_${{steps.build_platform.outputs.build_platform}}.${{steps.build_platform.outputs.extension}}) - ```bash - http://preview.gui.tea.xyz.s3-website-us-east-1.amazonaws.com/${{ needs.changes.outputs.preview_folder }}/gui_${{ steps.build_platform.outputs.build_platform }}.${{ steps.build_platform.outputs.extension }} - ``` - copy-paste into a browser to download \ No newline at end of file + - name: cp package zip for MacOS + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + env: + prefix: ${{ needs.changes.outputs.preview_folder }} + platform: ${{ steps.build_platform.outputs.build_platform }} + run: | + aws s3 cp ./modules/gui/src-tauri/target/release/bundle/macos/tea.zip "s3://preview.gui.tea.xyz/$prefix/tea_$platform.zip" + + - name: comment install for Linux + if: matrix.platform.name == 'linux+x86-64' + uses: mshick/add-pr-comment@v2 + with: + message-id: ${{ matrix.platform.id }}-comment + message: | + **installer for Linux ${{ matrix.platform.name }} is at**: + here + + ```bash + http://preview.gui.tea.xyz.s3-website-us-east-1.amazonaws.com/${{ needs.changes.outputs.preview_folder }}/tea_${{ steps.build_platform.outputs.build_platform }}.${{ steps.build_platform.outputs.extension }} + ``` + copy-paste into a browser to download + + - name: comment install for MacOS + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + uses: mshick/add-pr-comment@v2 + with: + message-id: ${{ matrix.platform.id }}-comment + message: | + **installers for MacOS ${{ matrix.platform.name }} is at**: + .zip + or + .dmg + + ```bash + http://preview.gui.tea.xyz.s3-website-us-east-1.amazonaws.com/${{ needs.changes.outputs.preview_folder }}/tea_${{ steps.build_platform.outputs.build_platform }}.zip + http://preview.gui.tea.xyz.s3-website-us-east-1.amazonaws.com/${{ needs.changes.outputs.preview_folder }}/tea_${{ steps.build_platform.outputs.build_platform }}.dmg + ``` + copy-paste into a browser to download \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7bae9cb..2722de6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -113,8 +113,23 @@ jobs: restore-keys: | ${{ matrix.platform.name }}-build-target-prod - - name: test build tauri - run: pnpm --filter gui tauri build + - name: test build tauri for MacOS + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + # FROM: https://tauri.app/v1/guides/distribution/sign-macos + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ENABLE_CODE_SIGNING: ${{ secrets.GUI_APPLE_CERTIFICATE }} + APPLE_CERTIFICATE: ${{ secrets.GUI_APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.GUI_APPLE_CERTIFICATE_PASSWORD }} + APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + run: pnpm build:gui + + - name: test build tauri for Linux + if: matrix.platform.name == 'linux+x86-64' + # TODO: https://tauri.app/v1/guides/distribution/sign-linux + run: pnpm build:gui - name: Get current unix ts - seconds id: date @@ -138,6 +153,11 @@ jobs: echo "build_platform=$BUILD_PLATFORM" >> $GITHUB_OUTPUT echo "extension=$EXTENSION" >> $GITHUB_OUTPUT + - name: zip .app for MacOS + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + run: | + cd ./modules/gui/src-tauri/target/release/bundle/macos/ && zip -r tea.zip tea.app + - name: cp package images from prod to gui bucket env: platform: ${{ steps.build_platform.outputs.build_platform }} @@ -147,9 +167,27 @@ jobs: aws s3 cp "./modules/gui/src-tauri/target/release/bundle/$extension/tea_0.1.0_$platform.$extension" \ "s3://preview.gui.tea.xyz/release/tea_${{ steps.date.outputs.unix_seconds }}_$platform.$extension" + - name: cp package zip for MacOS + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + env: + platform: ${{ steps.build_platform.outputs.build_platform }} + build_platform: ${{ matrix.platform.name }} + run: | + aws s3 cp ./modules/gui/src-tauri/target/release/bundle/macos/tea.zip "s3://preview.gui.tea.xyz/release/tea_${{ steps.date.outputs.unix_seconds }}_$platform.zip" + - name: Slack Notification run: ./.github/notify-slack.js env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} PLATFORM: ${{ matrix.platform.name }} + EXT: ${{ steps.build_platform.outputs.extension }} DOWNLOAD_URL: http://preview.gui.tea.xyz.s3-website-us-east-1.amazonaws.com/release/tea_${{ steps.date.outputs.unix_seconds }}_${{ steps.build_platform.outputs.build_platform }}.${{ steps.build_platform.outputs.extension }} + + - name: Slack Notification for .app Mac + run: ./.github/notify-slack.js + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + env: + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + PLATFORM: ${{ matrix.platform.name }} + EXT: .zip(.app) + DOWNLOAD_URL: http://preview.gui.tea.xyz.s3-website-us-east-1.amazonaws.com/release/tea_${{ steps.date.outputs.unix_seconds }}_${{ steps.build_platform.outputs.build_platform }}.zip diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e61e619..d4d1cc9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -70,8 +70,23 @@ jobs: restore-keys: | ${{ matrix.platform.name }}-build-target-prod - - name: test build tauri - run: pnpm --filter gui tauri build + - name: test build tauri for MacOS + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + # FROM: https://tauri.app/v1/guides/distribution/sign-macos + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ENABLE_CODE_SIGNING: ${{ secrets.GUI_APPLE_CERTIFICATE }} + APPLE_CERTIFICATE: ${{ secrets.GUI_APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.GUI_APPLE_CERTIFICATE_PASSWORD }} + APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + run: pnpm build:gui + + - name: test build tauri for Linux + if: matrix.platform.name == 'linux+x86-64' + # TODO: https://tauri.app/v1/guides/distribution/sign-linux + run: pnpm build:gui - name: Get current unix ts - seconds id: date @@ -97,11 +112,38 @@ jobs: "s3://preview.gui.tea.xyz/release/tea_gui_latest_$platform.$extension" aws s3 cp "./modules/gui/src-tauri/target/release/bundle/$extension/tea_0.1.0_$platform.$extension" \ "s3://preview.gui.tea.xyz/release/tea_gui_$tag_$platform.$extension" + + - name: zip .app for MacOS + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + run: | + cd ./modules/gui/src-tauri/target/release/bundle/macos/ && zip -r tea.zip tea.app + - name: publish .zip(.app) for MacOS + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + env: + platform: ${{ steps.build_platform.outputs.build_platform }} + extension: ${{ steps.build_platform.outputs.extension }} + tag: ${{ steps.tag.outputs.tag }} + run: | + aws s3 cp "./modules/gui/src-tauri/target/release/bundle/macos/tea.zip" \ + "s3://preview.gui.tea.xyz/release/tea_gui_latest_$platform.zip" + aws s3 cp "./modules/gui/src-tauri/target/release/bundle/macos/tea.zip" \ + "s3://preview.gui.tea.xyz/release/tea_gui_$tag_$platform.zip" - name: Slack Notification run: ./.github/notify-slack.js env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} PLATFORM: ${{ matrix.platform.name }} VERSION: ${{steps.tag.outputs.tag}} + EXT: ${{ steps.build_platform.outputs.extension }} DOWNLOAD_URL: http://preview.gui.tea.xyz.s3-website-us-east-1.amazonaws.com/release/tea_gui_${{steps.tag.outputs.tag}}_${{steps.build_platform.outputs.build_platform}}.${{ steps.build_platform.outputs.extension }} + + - name: Slack Notification for .app Mac + run: ./.github/notify-slack.js + if: matrix.platform.name == 'darwin+x86-64' || matrix.platform.name == 'darwin+aarch64' + env: + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + PLATFORM: ${{ matrix.platform.name }} + VERSION: ${{steps.tag.outputs.tag}} + EXT: .zip(.app) + DOWNLOAD_URL: http://preview.gui.tea.xyz.s3-website-us-east-1.amazonaws.com/release/tea_gui_${{steps.tag.outputs.tag}}_${{steps.build_platform.outputs.build_platform}}.zip diff --git a/README.md b/README.md index ab04839..58f57aa 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ $ pnpm web:gui ``` # Build ```sh +pnpm install pnpm build:gui ``` diff --git a/modules/gui/src-tauri/tauri.conf.json b/modules/gui/src-tauri/tauri.conf.json index fdf6b77..eb3af23 100644 --- a/modules/gui/src-tauri/tauri.conf.json +++ b/modules/gui/src-tauri/tauri.conf.json @@ -15,7 +15,7 @@ "http": { "all": true, "request": true, - "scope": ["https://api.tea.xyz/v1/*", "https://github.com/*", "http://localhost:3000/v1/*"] + "scope": ["https://api.tea.xyz/v1/*", "https://github.com/*", "http://localhost:3000/v1/*", "https://app.tea.xyz/*"] }, "shell": { "all": true, diff --git a/modules/gui/src/components/PackageBanner/PackageBanner.svelte b/modules/gui/src/components/PackageBanner/PackageBanner.svelte index a3f9012..10fd92b 100644 --- a/modules/gui/src/components/PackageBanner/PackageBanner.svelte +++ b/modules/gui/src/components/PackageBanner/PackageBanner.svelte @@ -1,12 +1,15 @@
@@ -33,6 +44,9 @@

{pkg.desc}

+
+ +
- - diff --git a/modules/ui/src/Bottles/Bottles.svelte b/modules/ui/src/Bottles/Bottles.svelte new file mode 100644 index 0000000..559d561 --- /dev/null +++ b/modules/ui/src/Bottles/Bottles.svelte @@ -0,0 +1,47 @@ + + +
+
+

+ {versions.length} version{versions.length === 1 ? '' : 's'} bottled +

+
+ + + + + + + + + + + + {#each versions as version} + + + + + + + + {/each} + +
versiondarwin-aarch64darwin-x86-64linux-aarch64linux-x86-64
{version}{available.has('darwin-aarch64') ? '✅' : '❌'}{available.has('darwin-x86-64') ? '✅' : '❌'}{available.has('linux-aarch64') ? '✅' : '❌'}{available.has('linux-x86-64') ? '✅' : '❌'}
+
diff --git a/modules/ui/src/types.ts b/modules/ui/src/types.ts index d9bface..9c5a2f9 100644 --- a/modules/ui/src/types.ts +++ b/modules/ui/src/types.ts @@ -43,3 +43,10 @@ export type User = { country?: string; wallet?: string; }; + +export type Bottle = { + name: string; + platform: string; + arch: string; + version: string; +}; diff --git a/package.json b/package.json index 84dd8f0..5f005a0 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "release": "sh ./.github/update-latest-binary.sh", - "build:gui": "pnpm --filter gui exec tauri build", + "build:gui": "pnpm --filter gui exec tauri build --verbose", "dev:gui": "pnpm --filter gui exec tauri dev", "web:gui": "BUILD_FOR=preview pnpm --filter gui dev" },