Enable all debugging flags #15
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
- push | |
- pull_request | |
jobs: | |
natives-linux: | |
name: Linux (x86_64) native library compilation | |
runs-on: ubuntu-latest | |
container: | |
image: ubuntu:18.04 | |
env: | |
GCC: gcc-8 | |
defaults: | |
run: | |
working-directory: src/main/c | |
steps: | |
- name: Checkout the target branch | |
uses: actions/checkout@v3 | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: temurin | |
java-version: 8 | |
# Don't need the dependency cache here (or in any of the other native | |
# library compilation steps), because we're not invoking the Java | |
# compiler in this step. We only need the JDK for its headers. | |
- name: Install build prerequisites | |
run: | | |
apt-get update | |
apt-get --assume-yes install make $GCC | |
- name: Build the Linux native libraries (x86_64 only) | |
run: | | |
make clean-linux | |
make linux64 | |
# The names of the artifacts containing native libraries correspond | |
# exactly to the directories inside `src/main/c/resources/native`. That | |
# way, the Java build job can pull down all artifacts and unpack them | |
# into that directory to overwrite the versions in-repo. This is sadly | |
# necessary because the actions/download-artifact@v3 action flattens | |
# paths inside artifacts. If it retained full relative paths, we could | |
# put Linux and Windows natives inside the same artifact, and we could be | |
# flexible with the artifact names. But it doesn't, so we can't, and we | |
# can't. | |
- name: Upload Linux native libraries | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux | |
path: src/main/c/resources/native/linux | |
java: | |
name: Java compilation | |
runs-on: ubuntu-latest | |
needs: | |
- natives-linux | |
steps: | |
# We use Spotless in “ratchet mode” to incrementally enforce code | |
# formatting throughout the project. In order to ensure feature branches | |
# don't regress formatting when compared with the master branch, we need | |
# to have a local copy of the master branch for comparison. | |
- name: Checkout the master branch | |
uses: actions/checkout@v3 | |
with: | |
ref: master | |
- name: Checkout the target branch | |
uses: actions/checkout@v3 | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: temurin | |
java-version: 8 | |
cache: gradle | |
- name: Download native libraries | |
uses: actions/download-artifact@v3 | |
with: | |
path: src/main/c/resources/native | |
- name: Build the Java library | |
run: ./gradlew build | |
- name: Determine commit hash for artifact filename | |
id: vars | |
run: echo "short-rev=$(git rev-parse --short HEAD)" >>$GITHUB_OUTPUT | |
- name: Upload build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nrjavaserial-${{steps.vars.outputs.short-rev}} | |
path: build/libs/*.jar |