bisque-voice installers now download from GitHub Releases

1 hour ago

bisque-voice installers would download from GitHub Releases instead of Google Cloud. Pull request five moves the binaries, the checksums and latest.json into the repository's own release, and the install scripts follow them there.

Ask about this presentation

Chapters

  1. 0:00Installers move to GitHub Releases
  2. 0:15Releases were published twice
  3. 0:35One GitHub Release holds everything
  4. 0:53The workflow drops its Google Cloud login
  5. 1:11The release appears complete or not at all
  6. 1:32install.sh finds the newest release by a fixed path
  7. 1:55The scripts keep their address
  8. 2:15Versions before 0.1.38 are not on GitHub
  9. 2:30Check the redirect before merging
Show transcript
  1. bisque-voice installers would download from GitHub Releases instead of Google Cloud. Pull request five moves the binaries, the checksums and latest.json into the repository's own release, and the install scripts follow them there.

    Slide text
    bisque-voice · pull request 5

    Installers now download from GitHub Releases

    The release job stops uploading to download.bisque.today.

  2. Until now a tagged release was published in two places. The full set went to a Google Cloud bucket behind download.bisque.today, including latest.json and both install scripts, and the workflow needed its own Google Cloud login to do it. The GitHub Release only carried the archives and the checksum list.

    Slide text
    before this change

    Releases were published to two places

    download.bisque.today

    Archives, checksums, latest.json, install.sh, install.ps1

    needs id-token: write

    GitHub Release

    Archives and SHASUMS256.txt

  3. After this change the GitHub Release is the only home for the binaries. It carries every archive with its checksum file, the combined checksum list, and now latest.json too. Installers ask GitHub for the newest release through a fixed latest path, so there is no bucket to keep in sync.

    Slide text
    download.bisque.today → GitHub Releases

    One GitHub Release now holds all of it

    Attached to v{VERSION}

    bisque-voice-{target}.tar.gz
    bisque-voice-{target}.tar.gz.sha256
    SHASUMS256.txt
    latest.json

    Installers read

    releases/latest/download/
    latest.json
  4. In release.yml the upload job loses everything Google. The authentication step, the gcloud setup, the id-token permission, the check that refused to overwrite a published version, and the copy commands all go. The file shrinks by about forty lines and gains under twenty.

    Slide text
    .github/workflows/release.yml +18 −41

    The release job drops its Google Cloud login

    • id-token: write
    • Authenticate to Google Cloud
    • setup-gcloud
    • "v$VERSION is already published"
    • gcloud storage cp …
  5. The reason to attach latest.json is in this comment. The installers resolve the newest release's latest.json, so it must never name an archive that isn't attached yet. That is why one call creates the release with every file. The call now also attaches the per-archive checksum files and latest.json.

    Slide text
    download.bisque.today → GitHub Releases
    # One call with every file, so the release appears
    # complete or not at all: latest.json must never
    # name an archive that isn't attached yet.
    gh release create "$GITHUB_REF_NAME" --verify-tag \
      --title "bisque-voice $VERSION" \
      --notes-file notes.md \
      artifacts/*.tar.gz artifacts/*.tar.gz.sha256 \
      artifacts/SHASUMS256.txt latest.json
  6. In install.sh, the default now points at the repository's releases. GitHub serves the newest release under releases slash latest slash download, so latest.json is fetched from there. The override variable still wins. When someone sets it, the base and latest.json both come from that directory, which keeps the offline file URL testing path working.

    Slide text
    download.bisque.today → GitHub Releases

    install.sh resolves latest.json by a fixed GitHub path

    if [ -n "${BISQUE_VOICE_BASE_URL:-}" ]; then
      BASE="$BISQUE_VOICE_BASE_URL"
      LATEST="$BASE/latest.json"
    else
      BASE="$RELEASES/download"
      LATEST="$RELEASES/latest/download/latest.json"
    fi
  7. install.ps1 gets the same logic, with a default base of the GitHub Releases download path. The scripts themselves stay at download.bisque.today, and the workflow comment says why. The Windows hint in install.sh and the Linux hint in install.ps1 keep pointing at that address.

    Slide text
    download.bisque.today/bisque-voice/ → main branch

    The install commands keep their old address

    install.sh and install.ps1 redirect to this repository's main branch, so an installer fix ships without a release.release.yml, header comment

    curl … | sh and irm … | iex are unchanged.

  8. There is one limit. Versions before 0.1.38 were built elsewhere and are not attached to any GitHub Release. To install one, INSTALL.md tells you to set the base URL variable back to the old address.

    Slide text
    INSTALL.md limit

    They were built elsewhere. To install one:

    BISQUE_VOICE_BASE_URL=\
    https://download.bisque.today/bisque-voice \
      sh install.sh
  9. The pull request body says only update bisque-voice, so there are no test results to point at. The diff assumes the old install addresses already redirect to main, and nothing in these four files sets that up. With that in place, installers download from GitHub Releases and a release lives in one place.

    Slide text
    bisque-voice → pull request 5

    Confirm the redirect to main before this merges

    The diff changes four files. None of them creates the redirect from download.bisque.today.

    Installers now download from GitHub Releases.

    github.com/bisque-cloud/bisque-voice/pull/5

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built with ❤️ in New York