zed icon indicating copy to clipboard operation
zed copied to clipboard

Initial linux nightly bundles upload

Open SomeoneToIgnore opened this issue 1 year ago • 0 comments

Changes Zed CI to build and upload Linux nightly bundles.

  • todo!(linux) are replaced with TODO linux to make todo!-based workflows more convenient

  • renames run-build-dmg label into run-bundling, also renames a few GH Actions entries to be more generic

  • split the bundle uploading script into two phases, so that first all bundles are built and uploaded, and only after all such uploads are fine, their nightly version SHA is bumped. The approach is not ideal: if part of the packages uploads and part fails, we would not promote new versions, but neither will we revert the uploaded ones, so somebody might get newer versions under the old SHA, if queries the server for downloads.

  • adds a *.deb package building with a couple of caveats, marked with new TODO linux entries:

  1. cargo-bundle is not very flexible, so it generates artifacts with the structure and names that we're unable to alter before/during the generation. For that, a set of extra steps is made by repacking the *.deb package — this is not very portable between different Linux distros, so later one needs to find a way to combine multiple package types in this script.

  2. cargo-bundle is not able to properly generate the *.msi bundle despite declaring it in the features: https://github.com/burtonageo/cargo-bundle/issues/116 Windows needs to invent its own way of bundling or fix the tool.

  3. Both cli and zed binaries are added into the archive under /usr/local/bin/ path with their -$channel suffix (-nightly/-preview/-dev/-stable) and a /usr/local/bin/zed -> /usr/local/bin/cli-nightly symlink is made to make CLI work as Zed launcher:

~/work/zed kb/linux-nightly:origin/kb/linux-nightly*​ ❯ dpkg -c target/zed_amd64.deb 
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/local/
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/local/bin/
-rwxr-xr-x allaptop/allaptop 8746832 2024-03-06 00:53 ./usr/local/bin/cli-nightly
-rwxr-xr-x allaptop/allaptop 689078560 2024-03-06 00:53 ./usr/local/bin/zed-nightly
drwxr-xr-x allaptop/allaptop         0 2024-03-06 00:53 ./usr/share/
drwxr-xr-x allaptop/allaptop         0 2024-03-06 00:53 ./usr/share/applications/
-rw-r--r-- allaptop/allaptop       153 2024-03-06 00:53 ./usr/share/applications/zed.desktop
drwxr-xr-x allaptop/allaptop         0 2024-03-06 00:53 ./usr/share/icons/
drwxr-xr-x allaptop/allaptop         0 2024-03-06 00:53 ./usr/share/icons/hicolor/
drwxr-xr-x allaptop/allaptop         0 2024-03-06 00:53 ./usr/share/icons/hicolor/1024x1024@2x/
drwxr-xr-x allaptop/allaptop         0 2024-03-06 00:53 ./usr/share/icons/hicolor/1024x1024@2x/apps/
-rw-r--r-- allaptop/allaptop    716288 2024-03-06 00:53 ./usr/share/icons/hicolor/1024x1024@2x/apps/zed.png
drwxr-xr-x allaptop/allaptop         0 2024-03-06 00:53 ./usr/share/icons/hicolor/512x512/
drwxr-xr-x allaptop/allaptop         0 2024-03-06 00:53 ./usr/share/icons/hicolor/512x512/apps/
-rw-r--r-- allaptop/allaptop    239870 2024-03-06 00:53 ./usr/share/icons/hicolor/512x512/apps/zed.png
lrwxrwxrwx allaptop/allaptop         0 2024-03-06 00:53 ./usr/local/bin/zed -> /usr/local/bin/cli-nightly

But the CLI does not work under Linux yet and there's no way to install that CLI from Zed now; Zed binary itself is not able to open file/location:12:34-like things and set up the env properly, but is able to start or open a directory.

So, this structure can be considered temporary and changed, if needed.

  1. Zed Nightly on Linux does not know how to update itself, so all nightly publishing is not picked up automatically.

  2. Rust cache from main builds does not get shared between CI jobs, due to being run in a different CI job that forms a different CI key, so

      - name: Cache dependencies
        uses: swatinem/rust-cache@v2
        with:
          save-if: ${{ false }}

would not work. This makes Linux bundling jobs long.

Release Notes:

  • N/A

SomeoneToIgnore avatar Mar 05 '24 23:03 SomeoneToIgnore