GitHub通过Github Actions支持云端工作流程自动化。此功能对于自动化构建、部署和continuous integration的其他方面非常有用。
服务
SciJava项目以多种方式使用Github Actions:
- 执行 SciJava 项目的构建。 Github Actions 将
SNAPSHOT构建部署到 SciJava Maven repository,以响应到每个代码仓库的main分支。因此,任何依赖于给定组件的LATEST版本的下游项目都将与上次成功的 Github 构建匹配,即main上的最新代码。 - 运行每个项目的相关unit tests。Github Actions 有助于及早发现代码库中引入的新错误。
- 执行第 SciJava 项目中的第releases。 Github Actions 将发布版本部署到适当的 Maven 存储库 - 通常是 SciJava Maven 存储库或Maven Central via the Central Publisher Portal。
- 保持javadoc网站更新。
- 保留其他网络资源的更新。
Maven工件的自动部署
将您的库房部署到 Maven 仓库储备配置其他开发人员使用。它也是contribution requirement for the Fiji project。
##要求
- 在 GitHub 上托管您的open-source项目。
- 通过 Image.sc Zulip 或 Image.sc Forum 联系 SciJava 管理员(@ctrueden、@hinerm、@tpietzsch),并请求他们向您的组织添加身份验证隐私配置。
##指示
- 为了向存储库添加Github CI支持,需要以下秘密:A) 用于部署到Maven存储库;B) 在部署到Maven Central的情况下,用于工件的GPG签名。
- 如果机密已添加到您的组织,并且您具有对 GitHub 上存储库的用户访问权限,则可以使用 github-actionify.sh script 和
-f标志来执行所需的相关操作。 - 如果您有未提交的更改,github-actionify 脚本将返回
[ERROR] Dirty working copy。如果出现此错误,请使用git status检查存储库的状态,然后重新运行github-actionify -f。 - 如果您需要帮助,请在开发类别中询问on the Image.sc Forum,或在 Image.sc Zulip 上的SciJava stream中询问。
测试不能无头运行的东西
如果您的测试需要显示(即:它们在运行 headless 时未通过),您将在构建过程中收到错误,例如:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
Error: myTest Time elapsed: 0.097 s «< ERROR!
您可以使用Xvfb修复此问题,如下所示。
在您的存储库中有一个文件.github/workflows/build.yml。
在这个文件中应该有一些行:
- name: Set up CI environment
run: .github/setup.sh
- name: Execute the build
run: .github/build.sh
如果您按照如下所示修改显示并更改这些行,则需要的测试也应该可以工作。
- name: Set up CI environment
run: .github/setup.sh
- name: Install xvfb
run: sudo apt-get install xvfb
- name: Execute the build using xfvb
run: xvfb-run –auto-servernum .github/build.sh
当然,您应该仅将其作为最后的手段,因为最好的单元测试首先不需要显示。