Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

Lean4レポジトリ公開時の良いプラクティス

Lean4+Mathlib4の組み合わせで証明が出来上がるとレポジトリをGithubで公開したくなります。この時にGithub Actionsを使ってCI (Continuous Integration)を設定しておくと、利用者がレポジトリをダウンロードしてから利用を開始する体験を向上できます。この記事は

GitHub - leanprover/lean-action: GitHub action for standard CI in Lean projects

を参考にして書き直しました。コメントでこちらを教えていただいた北窓さんに感謝です!!

 

やることは次の通りです。

1. レポジトリのトップに.githubというフォルダを作成し、その中にworkflowsというフォルダを作成します。そしてその中にci.ymlというファイルを配置します。このファイルの中身も上記リンクで紹介されていますが、以下の通りです。

name: CI

on:
  push:
    branches: ["main"] # replace "main" with the default branch
  pull_request:
    branches: ["main"]
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      # uses lean standard action with all default input values
      - uses: leanprover/lean-action@v1

このファイルの追加をローカルレポジトリで行った場合にはリモートにプッシュしてGithub上に反映されていることを確認してください。

 

2. Githubのリモートレポジトリにアクセスし、レポジトリの設定を開きます。左側に縦にCode and automationの中にActionsがあるのでそれをクリックし、さらにGeneralをクリックしてActionsの設定画面を開きます。以下の設定にしてください(デフォルトではなっていると思います)。

  • Actions permissionsはAllow all actions and reusable workflowsが選択されていること。
  • Workflow permissionsはRead repository contents and packages permissionsが選択されていること。
  • 設定を変更した場合はSaveを押すこと。

これでCIが正しく動作するように設定が済みました。レポジトリにコードをプッシュすると文法チェックが行われ、それがパスするとビルドが走り、その際の成果物がキャッシュされるようです。

 

3. 最後にREADME.mdを書き換えて、使い方の準備として以下のような記載を追加します。

レポジトリをダウンロードして解凍してください。そのフォルダの中で以下のコマンドを実行してください。

% lake exe cache get

% lake build

上記終了後フォルダをVSCodeで開き、作業を開始できます。ファイルによっては「ヘッダが古いのでRestart Fileボタンを押して」というメッセージが出ることがあります。その際にはInfoViewの中のRestart Fileを押してください。しばらくするとエラーが消えます。

CIバッジ

CIバッジとはCIが成功しているか失敗しているかを示すアイコンで、CIが走るたびに自動更新されます。CIバッジの取得と貼り方はネットで簡単に調べられます。うまく貼れれば下記のようなバッジが表示されます。

https://github.com/YasuakiHonda/PerfectSecrecy/actions/workflows/ci.yml/badge.svg

 

この仕組みを導入しておくと利用者はVSCodeソースコードを開いた時に迅速に作業を開始することができます。