Amateras ModelerをGitHubに移して数年が経ちますが、最新のEclipseで動くようにするために久しぶりに少し手を入れたついでに折角なのでGitHub ActionsでCIできないかなと思い調べてみました。
Eclipse Tychoを使うとMavenでEclipseプラグインなどのOSGiバンドルやフィーチャー、アップデートサイト、RCPプラグインをビルドできるようです。
前提として、Amateras Modelerのリポジトリは以下のようにルートディレクトリ直下にフィーチャーとプラグインが並列に並ぶ構造に担っています。
- net.java.amateras.db/ (AmaterasERDプラグイン)
- net.java.amateras.modeler/ (フィーチャー)
- net.java.amateras.umleditor/ (AmaterasUMLプラグイン)
- net.java.amateras.umleditor.java/ (AmaterasUML Java拡張プラグイン)
- net.java.amateras.xstream/ (ファイル保存用ライブラリを提供するプラグイン)
Tychoの設定
まずはルートディレクトリ直下に.mvn
ディレクトリを作り、以下のファイルを作成します。
extensions.xml
<extensions> <extension> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-build</artifactId> <version>${tycho-version}</version> </extension> </extensions>
mvn.config
-Dtycho-version=4.0.8
ルートディレクトリにpom.xml
を作成します。<modules>
にビルドするプラグインのディレクトリを指定します。前述の通りフィーチャーや更新サイトのビルドも可能なようですが、今回はプラグインだけビルドしています。
<?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>net.java.amateras.modeler</groupId> <artifactId>parent</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>pom</packaging> <repositories> <repository> <id>neon</id> <layout>p2</layout> <url>http://download.eclipse.org/releases/2024-06</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-maven-plugin</artifactId> <version>${tycho-version}</version> <extensions>true</extensions> </plugin> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>target-platform-configuration</artifactId> <version>${tycho-version}</version> </plugin> </plugins> </build> <modules> <module>net.java.amateras.xstream</module> <module>net.java.amateras.db</module> <module>net.java.amateras.umleditor</module> <module>net.java.amateras.umleditor.java</module> </modules> </project>
これでEclipseプラグインをMavenを使ってビルドできるようになります。
$ mvn clean verify ... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] parent 1.0.0-SNAPSHOT .............................. SUCCESS [ 0.020 s] [INFO] [bundle] XStream 2.2.0-SNAPSHOT .................... SUCCESS [ 5.419 s] [INFO] [bundle] AmaterasERD 2.2.0-SNAPSHOT ................ SUCCESS [ 1.125 s] [INFO] [bundle] UML Plugin 2.2.0-SNAPSHOT ................. SUCCESS [ 0.575 s] [INFO] [bundle] UML Java Generator Plug-in 2.2.0-SNAPSHOT . SUCCESS [ 0.419 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.154 s [INFO] Finished at: 2024-06-30T12:27:28+09:00 [INFO] ------------------------------------------------------------------------
GitHub Actions
続いてGitHub Actionsを設定するのですが、GitHub ActionsでJava環境をセットアップするためのactions/setup-javaでサポートされているMavenだとTychoの実行に必要なMavenのバージョンがインストールされないため、Maven Wrapperを使うようにしておきます。
$ mvn wrapper:wrapper
これでmvnw
コマンドと必要な設定ファイルが作成されます。GitHub Actionsの設定は以下のような感じになります。
.github/workflows/build.yml
name: build on: [push, pull_request] jobs: build: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - name: Set up JDK uses: actions/setup-java@v4 with: java-version: '17' distribution: temurin - name: Build run: ./mvnw -B verify
これでGitHub ActionsでAmateras ModelerをCIすることができるようになりました。完成品は以下のプルリクエストになります。前述のようにフィーチャーや更新サイトのビルドもできるようなので頑張ればリリースの自動化もできるのかもしれません。