💚

GitHub ActionsでSwiftlyを用いて最新のSwiftをインストールする方法

に公開

概要

Server-Side Swift の CI/CD を GitHub Actions で運用する際、ubuntu-latest にはほぼ最新の Swift が標準インストールされています。しかし、常に最新版がすぐ使えるわけではなく、最新バージョンを必要とする場合には自前でインストールスクリプトを用意する必要があるでしょう。

そこで本記事では、リリースされたばかりの Swift 6.1 を GitHub Actions の ubuntu-latest 上に導入する方法として、バージョン 1.0.0 がリリースされたばかりの swiftly を利用する手順を紹介します。

https://github.com/swiftlang/swiftly

結論

.github/workflows/ci.yml などに、以下のように記述すれば ubuntu-latest 上で Swift 6.1 をインストールできます。

name: ci
on:
  push:
    branches:
      - main

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    timeout-minutes: 10
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Swift
        run: |
          sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev
          curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz
          tar zxf swiftly-$(uname -m).tar.gz
          ./swiftly init --verbose --assume-yes --skip-install
          . ~/.local/share/swiftly/env.sh
          swiftly install 6.1
          echo "$(dirname $(which swift))" >> $GITHUB_PATH
      - run: swift --version

解説

1. 必要パッケージのインストール

sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev

swiftly install 6.1 を実行する際に libcurl4-openssl-dev が入っていないと、以下のようなエラーが発生します。そのため、事前にインストールしておく必要があります。

Error:
There are some dependencies that should be installed before using this toolchain.
You can run the following script as the system administrator (e.g. root) to prepare
your system:

apt-get -y install libcurl4-openssl-dev

2. Swiftly のダウンロードと解凍

curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz
tar zxf swiftly-$(uname -m).tar.gz

uname -m で取得したアーキテクチャ(例:x86_64arm64)に対応した swiftly のアーカイブをダウンロードし、解凍します。

3. Swiftly の初期化

./swiftly init --verbose --assume-yes --skip-install
. ~/.local/share/swiftly/env.sh

./swiftly は解凍したディレクトリ直下の実行ファイルです。
init コマンドで初期設定を行い、env.sh を実行して swiftly のパスを通します。

他の Step でも swiftly を使う場合は、$GITHUB_PATH にパスを追加するなどの対応が必要です。

4. Swift のインストール

swiftly install 6.1

swiftly install [バージョン] で、指定した Swift バージョンをインストールします。完了後は一時的にパスが通った状態になります。

5. GitHub Actions 全体へのパス反映

echo "$(dirname $(which swift))" >> $GITHUB_PATH

which swift のディレクトリを $GITHUB_PATH に追加しておくことで、後続の Step でも Swift のパスが通った状態になります。

あとがき

swift-actions/setup-swift@v2 というアクションもありますが、こちらも最新バージョンへの追従がやや遅い傾向があります。最新リリースされた Swift をいち早く利用したい場合は、swiftly が便利でしょう。標準でインストールされている Swift でも問題なく進められるケースは多いですが、より新しいバージョンが必要なときは本記事で紹介した方法を試してみてください。

nextbeat Tech Blog

Discussion