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
を利用する手順を紹介します。
結論
.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_64
や arm64
)に対応した 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 でも問題なく進められるケースは多いですが、より新しいバージョンが必要なときは本記事で紹介した方法を試してみてください。
Discussion