Fix: [GitHub][workflows] インストーラーのビルドに失敗する問題を修正 #124
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build Installer | |
# installer/ 以下のファイルに変更があったとき or | |
# .github/workflows/build_installer.yaml (このファイル) に変更があったとき or 他のワークフローからの呼び出し or 手動実行 | |
on: | |
push: | |
branches: | |
- master | |
paths: | |
- 'installer/**' | |
- '.github/workflows/build_installer.yaml' | |
workflow_call: | |
workflow_dispatch: | |
# ジョブの定義 | |
jobs: | |
# Windows 向けのインストーラーのビルド | |
build-windows: | |
runs-on: windows-2022 | |
steps: | |
# KonomiTV のソースコードをチェックアウト | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
# Python 3.11 環境をセットアップ | |
## 事前に Runner 自体に入っている Python に Poetry をインストールしておく必要がある | |
- name: Install Poetry (for Runner) | |
run: | | |
python -m pip install poetry | |
- name: Setup Python 3.11 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
cache: 'poetry' | |
cache-dependency-path: '${{ github.workspace }}/installer/poetry.lock' | |
# インストーラーの依存関係をインストール | |
- name: Install Dependencies | |
working-directory: installer/ | |
run: | | |
pip install poetry | |
poetry install | |
# ウイルス検知対策で Windows のみ自前ビルドの PyInstaller に差し替える | |
poetry run pip install https://github.com/tsukumijima/Pyinstaller-Builds/raw/gh-pages/x86_64/pyinstaller-5.13.0-py3-none-any.whl | |
# インストーラーを PyInstaller でビルド | |
- name: Build Installer with PyInstaller | |
working-directory: installer/ | |
run: poetry run task build-windows | |
# 単一実行ファイルにビルドされたインストーラーを Artifact としてアップロード | |
- name: Upload Installer Executable as Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: KonomiTV-Installer.exe | |
path: installer/dist/KonomiTV-Installer.exe | |
# Linux 向けのインストーラーのビルド | |
build-linux: | |
runs-on: ubuntu-20.04 | |
steps: | |
# KonomiTV のソースコードをチェックアウト | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
# Python 3.11 環境をセットアップ | |
## 事前に Runner 自体に入っている Python に Poetry をインストールしておく必要がある | |
- name: Install Poetry (for Runner) | |
run: | | |
python -m pip install poetry | |
- name: Setup Python 3.11 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
cache: 'poetry' | |
cache-dependency-path: '${{ github.workspace }}/installer/poetry.lock' | |
# インストーラーの依存関係をインストール | |
- name: Install Dependencies | |
working-directory: installer/ | |
run: | | |
pip install poetry | |
poetry install | |
# インストーラーを PyInstaller でビルド | |
- name: Build Installer with PyInstaller | |
working-directory: installer/ | |
run: poetry run task build-linux | |
# 単一実行ファイルにビルドされたインストーラーを Artifact としてアップロード | |
- name: Upload Installer Executable as Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: KonomiTV-Installer.elf | |
path: installer/dist/KonomiTV-Installer.elf | |
# Linux (ARM) 向けのインストーラーのビルド | |
build-linux-arm: | |
runs-on: ubuntu-20.04 | |
steps: | |
# QEMU のセットアップ | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
with: | |
platforms: linux/arm64 | |
# Docker Buildx のセットアップ | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
# Dockerfile の作成 | |
- name: Create Dockerfile | |
run: | | |
cat <<EOF > Dockerfile | |
ARG IMAGE | |
FROM \${IMAGE} | |
ENV DEBIAN_FRONTEND=noninteractive | |
RUN apt-get update && \ | |
apt-get install -y --no-install-recommends software-properties-common && \ | |
add-apt-repository -y ppa:deadsnakes/ppa && \ | |
apt-get install -y \ | |
build-essential \ | |
curl \ | |
patchelf \ | |
python3.11 \ | |
python3.11-dev \ | |
python3.11-distutils \ | |
python3.11-venv \ | |
zlib1g \ | |
zlib1g-dev | |
RUN curl https://bootstrap.pypa.io/get-pip.py | python3.11 | |
RUN python3.11 -m pip install poetry | |
EOF | |
# ARM64 版 Docker イメージのビルド | |
- name: Build Docker Image | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
tags: arm64v8/ubuntu:build | |
build-args: IMAGE=arm64v8/ubuntu:20.04 | |
cache-from: type=gha,scope=arm64v8/ubuntu | |
cache-to: type=gha,scope=arm64v8/ubuntu,mode=max | |
load: true | |
# Dockerfile を削除 | |
- name: Remove Dockerfile | |
run: rm Dockerfile | |
# KonomiTV のソースコードをチェックアウト | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
# インストーラーを PyInstaller でビルド | |
- name: Build Installer with PyInstaller | |
working-directory: installer/ | |
run: | | |
docker run --rm -i -v $(pwd):/work -w /work arm64v8/ubuntu:build bash -c \ | |
'poetry install && poetry run task build-linux' | |
sudo cp -a dist/KonomiTV-Installer.elf dist/KonomiTV-Installer-ARM.elf | |
# 単一実行ファイルにビルドされたインストーラーを Artifact としてアップロード | |
- name: Upload Installer Executable as Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: KonomiTV-Installer-ARM.elf | |
path: installer/dist/KonomiTV-Installer-ARM.elf |