不知道各位有没有遇到过这样一种情况

自己想用一款开源的软件/支持库

但是由于各种原因,不能在自己机器上进行编译

这时候我们可以使用持续集成工具(CI/CD)来进行编译

并且Github在前段时间正式发布了可免费使用的持续集成平台 Github Actions

Github Actions

Actions的官方文档

软件与硬件资源

每台虚拟机都有相同的硬件资源。

  • 2-core CPU
  • 7 GB RAM 内存
  • 14 GB SSD 硬盘空间
虚拟环境YAML 工作流程标签
Windows Server 2019windows-latestwindows-2019
Ubuntu 18.04ubuntu-latestubuntu-18.04
Ubuntu 16.04ubuntu-16.04
macOS Catalina 10.15macos-latest or macos-10.15

使用限制

  • 每个仓库只能同时运行20个workflow
  • 每小时可以调用1000次 GithubAPI
  • 每个job最多可以运行6个小时
  • 免费版的用户最大支持20个job同时运行,macOS只能同时运行个

编译JDK

TencentKona是腾讯的长时间支持(LTS) OpenJDK,项目地址: Github
这里使用Antions来编译腾讯的JDK TencentKona-8
理论上其他的JDK也能用相同的方式来在线构建

过程

  1. 首先,fork一份源码
  2. 等待fork完成后,打开在Pull requests旁边的Actions
    Actions
  3. 在Actions页面里官方提供了一般C/C++的构建项目
  4. 由于JDK的编译需要安装支持库, 所以说可以直接跳过选择已有的Actions项目
    点击旁边的 [Set up a workflow yourself]

skipActions

  1. 将下列代码复制到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
  2. 点击左上角绿色的[Start commit],在打开的小窗口中点击绿色的[Commit new file]
    startCommit
  3. 在等待半个小时后,回到项目的Actions页面,找到第一个构建job
  4. 在Artifacts中会有一个build,点击会下载一个build.zip,这就是JDK编译的结果了
    buildSuccess

标签: Java, JDK, Github, CI/CD