使用Github Actions进行在线编译
不知道各位有没有遇到过这样一种情况
自己想用一款开源的软件/支持库
但是由于各种原因,不能在自己机器上进行编译
这时候我们可以使用持续集成工具(CI/CD)来进行编译
并且Github在前段时间正式发布了可免费使用的持续集成平台 Github Actions
Github Actions
软件与硬件资源
每台虚拟机都有相同的硬件资源。
- 2-core CPU
- 7 GB RAM 内存
- 14 GB SSD 硬盘空间
虚拟环境 | YAML 工作流程标签 |
---|---|
Windows Server 2019 | windows-latest 或 windows-2019 |
Ubuntu 18.04 | ubuntu-latest 或 ubuntu-18.04 |
Ubuntu 16.04 | ubuntu-16.04 |
macOS Catalina 10.15 | macos-latest or macos-10.15 |
使用限制
- 每个仓库只能同时运行20个workflow
- 每小时可以调用1000次 GithubAPI
- 每个job最多可以运行6个小时
- 免费版的用户最大支持20个job同时运行,macOS只能同时运行个
编译JDK
TencentKona是腾讯的长时间支持(LTS) OpenJDK,项目地址: Github
这里使用Antions来编译腾讯的JDK TencentKona-8
理论上其他的JDK也能用相同的方式来在线构建
过程
- 首先,fork一份源码
- 等待fork完成后,打开在Pull requests旁边的Actions
- 在Actions页面里官方提供了一般C/C++的构建项目
- 由于JDK的编译需要安装支持库, 所以说可以直接跳过选择已有的Actions项目
点击旁边的 [Set up a workflow yourself]
将下列代码复制到Actions页面左边的编辑框中
name: C/C++ CI on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install dependence run: sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libasound2-dev openjdk-8-jdk - name: Make configure executable run: chmod +x ./configure - name: configure run: ./configure - name: Make4.0+ compatible run: sudo sed -i 's/WARNINGS_ARE_ERRORS = -Werror/# WARNINGS_ARE_ERRORS = -Werror/' ./hotspot/make/linux/makefiles/gcc.make - name: make run: make all - name: Upload artifact uses: actions/upload-artifact@master with: name: build path: ./build
- 点击左上角绿色的[Start commit],在打开的小窗口中点击绿色的[Commit new file]
- 在等待半个小时后,回到项目的Actions页面,找到第一个构建job
- 在Artifacts中会有一个build,点击会下载一个build.zip,这就是JDK编译的结果了