0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【脱・手動ビルド】GitHub Actions × Inno Setup で最強のPython配布フローを作ってみた

0
Posted at

概要

以前、PyInstallerで作ったexeがウイルス扱いされる件 について投稿したギアチョです。

あの後、「Inno Setupでインストーラー化すれば回避できる!」という結論には達したんですが、新たな悩みが生まれました。

「修正するたびに手動でビルドするの、面倒くさくない…?」

コード直す ➡ PyInstaller叩く ➡ Inno Setup叩く ➡ 配布用サーバーに置く…
この不毛な時間を消し去るために、GitHub Actions を導入して完全自動化してみました。

これが現代のDevOpsか…!と感動したので、備忘録として残します。

結論!GitHub Actions

GitHubにコードをPushするだけで、勝手にクラウド上でビルドが走って、完成品のexe(インストーラー)が生成されるようになりました。
まさに魔法。:dizzy:

リポジトリはこちらです👇
https://github.com/skibidikids/Marge

背景:レガシー現場の憂鬱

RPA(WinActor)を補完するためにPythonで画像結合ツール(Marge PDF)を作ったんですが、現場への配布がとにかく大変。

  1. ウイルス対策ソフトの壁: そのままexeにするとApexOneに消される。
  2. 配布の手間: バグ修正のたびに自分のPCでビルド作業が発生。

1については、前回紹介した 「Inno Setup」 で解決済み。
今回は2の「手動ビルド」を 「CI/CD(継続的インテグレーション/デリバリー)」 で解決しちゃいます。

実装したフロー

やりたいことはこれです。

やったこと:YAMLファイルを書く

GitHubのリポジトリに .github/workflows/build.yml というファイルを追加するだけ。
中身はこんな感じです。

name: Build Marge Exe

on:
  push:
    branches: [ "main" ] # mainブランチが更新されたら動く

jobs:
  build:
    runs-on: windows-latest # Windows環境を借りる

    steps:
    # 1. コードを持ってくる
    - uses: actions/checkout@v4

    # 2. Python環境構築
    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: "3.12"

    # 3. ライブラリを入れる
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install pyinstaller
        if (Test-Path requirements.txt) { pip install -r requirements.txt }

    # 4. Exe化する(ここがキモ!)
    - name: Build with PyInstaller
      run: pyinstaller Marge_PDF.py --onefile --noconsole --name "MargeTool"

    # 5. 生成物をアップロードする
    - name: Upload Exe
      uses: actions/upload-artifact@v4
      with:
        name: MargeTool-exe
        path: dist/*.exe

結果:勝手に出来上がってる!

コードをPushして、GitHubの「Actions」タブを見ると…

✅ Build Marge Exe

と緑色のチェックマークが!
そして詳細画面の「Artifacts」から、出来立てホヤホヤの .exe がダウンロードできました。
自分のPC環境を汚さずにビルドできるし、何より 「エンジニアっぽいことしてる!」 感がすごいです。

最後に:次はクラウドへ

これまでは「自分のPC」の中だけで完結していましたが、GitHub Actionsを使ったことで「クラウド上で動かす」ことの便利さを知ってしまいました。

次はAWS(Lambdaとか?)を使って、サーバーレスな自動化にも挑戦してみたいと思います。
「ここ、もっとこう書けるよ!」みたいなのがあれば、ぜひプルリクやコメントお待ちしてます!

リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?