ついこないだShuttleからメールが 「shuttle.rsは2025年1月31日にretireするため新しいプラットフォームであるshuttle.appに移行していく必要がある」といった内容のメールが来ていた。 公式ブログでも10月にアナウンスされていた。shuttle.appの方がパフォーマンスなど様々な面で改善しているらしい。 Microsoft Azureだと少なくともアナウンスから1年とか2年は猶予が与えられている印象があり、Shuttleに関しては4ヶ月ぐらいしかないのでかなり攻めているなと思った。 ただ、サービス提供者としては確かにレガシーなプラットフォームは負の遺産になるので早く閉じたいというのはよく分かる。

公式の手順に従って移行したときのメモを残しておく。

1. 最新のCLIに更新

LinuxとMacは下記で更新できる。

curl -sSfL https://www.shuttle.dev/install | bash

更新するとcargo shuttleに加えてshuttleコマンドが使えるようになり、shuttleのほうが新しいプラットフォーム用のCLIになっている。

2. Shuttle関連のcrateを更新する

Cargo.toml を下記のバージョンを最新に更新 (2024/12/14時点)。 shuttle-runtime以外にもshuttleのcrateを使っていれば更新する必要がある。 自分の場合はshuttle-axumを使っているのでそちらも合わせて更新。

shuttle-runtime = "0.49.0"
shuttle-axum = "0.49.0"

Shuttle.tomlnameが使えなくなっている。 これまではnameを使うことによってデプロイ先プロジェクト名をカスタマイズすることができた (デフォルトはcrate名だったかディレクトリ名だったか忘れたが)。

新しいCLIではshuttle project link を使ってプロジェクト名をカスタマイズすることができる。

shuttle project link --name my-project

3. Shuttleのエンドポイントを使っている箇所の更新

新しいプラットフォームではホスト先が *.shuttleapp.rsから*.shuttle.app に変わっているためアプリ内でドメインをしている箇所があれば更新が必要。

4. GitHub Actions

公式ドキュメントに従って

  • GitHub Actionsの shuttle-hq/deploy-action@mainshuttle-hq/deploy-action@v2に更新
  • deploy-keyはshuttle-api-keyに変更
  • project-idを追加。これに伴ってPROJECT_IDをGitHub ActionsのSecretに追加
      - uses: shuttle-hq/deploy-action@v2
        with:
          shuttle-api-key: ${{ secrets.SHUTTLE_API_KEY }}
          project-id: ${{ secrets.PROJECT_ID }}