Skip to content

ElasticLib CI

ElasticLib CI #228

Workflow file for this run

name: ElasticLib
on:
push:
pull_request:
branches: ["main"]
workflow_dispatch:
jobs:
wpiformat-analyze:
name: "Verify Formatting"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Fetch all history and metadata
run: |
git checkout -b pr
git branch -f main origin/main
- name: Set up Python 3.8
uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Install wpiformat
run: pip3 install wpiformat==2024.50
- name: Run wpiformat
run: wpiformat -f Elastic.java elasticlib.h elasticlib.cpp elasticlib.py
working-directory: ./elasticlib
- name: Check output
run: git --no-pager diff --exit-code HEAD
build-java:
name: "Build Java"
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Download Dependencies
run: |
mkdir -p elasticlib/libsjava
curl -L -o elasticlib/libsjava/ntcore-java-2025.2.1.jar https://frcmaven.wpi.edu/release/edu/wpi/first/ntcore/ntcore-java/2025.2.1/ntcore-java-2025.2.1.jar
curl -L -o elasticlib/libsjava/wpimath-java-2025.2.1.jar https://frcmaven.wpi.edu/release/edu/wpi/first/wpimath/wpimath-java/2025.2.1/wpimath-java-2025.2.1.jar
curl -L -o elasticlib/libsjava/wpiunits-java-2025.2.1.jar https://frcmaven.wpi.edu/release/edu/wpi/first/wpiunits/wpiunits-java/2025.2.1/wpiunits-java-2025.2.1.jar
curl -L -o elasticlib/libsjava/wpiutil-java-2025.2.1.jar https://frcmaven.wpi.edu/release/edu/wpi/first/wpiutil/wpiutil-java/2025.2.1/wpiutil-java-2025.2.1.jar
curl -L -o elasticlib/libsjava/jackson-core-2.13.0.jar https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.13.0/jackson-core-2.13.0.jar
curl -L -o elasticlib/libsjava/jackson-databind-2.13.0.jar https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.13.0/jackson-databind-2.13.0.jar
curl -L -o elasticlib/libsjava/jackson-annotations-2.13.0.jar https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.13.0/jackson-annotations-2.13.0.jar
- name: Build Check
run: |
cd elasticlib
mkdir -p out
javac -d out -cp "libsjava/*" *.java
build-cpp:
name: "Build C++"
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Dependencies from FRC Maven
run: |
mkdir -p elasticlib/libs-cpp
curl -L -o elasticlib/libs-cpp/ntcore-cpp-2025.2.1.so https://frcmaven.wpi.edu/release/edu/wpi/first/ntcore/ntcore-cpp/2025.2.1/ntcore-cpp-2025.2.1.so
curl -L -o elasticlib/libs-cpp/wpimath-cpp-2025.2.1.so https://frcmaven.wpi.edu/release/edu/wpi/first/wpimath/wpimath-cpp/2025.2.1/wpimath-cpp-2025.2.1.so
curl -L -o elasticlib/libs-cpp/wpiutil-cpp-2025.2.1.so https://frcmaven.wpi.edu/release/edu/wpi/first/wpiutil/wpiutil-cpp/2025.2.1/wpiutil-cpp-2025.2.1.so
curl -L -o elasticlib/libs-cpp/wpiunits-cpp-2025.2.1.so https://frcmaven.wpi.edu/release/edu/wpi/first/wpiunits/wpiunits-cpp/2025.2.1/wpiunits-cpp-2025.2.1.so
- name: Install g++ and make
run: |
sudo apt-get update
sudo apt-get install -y g++ make
- name: Compile C++ Code
run: |
g++ -std=c++17 \
-Ielasticlib/libs-cpp/ntcore-cpp-2025.2.1/include \
-Ielasticlib/libs-cpp/wpimath-cpp-2025.2.1/include \
-Ielasticlib/libs-cpp/wpiutil-cpp-2025.2.1/include \
-Ielasticlib/libs-cpp/wpiunits-cpp-2025.2.1/include \
-o elasticlib/elasticlib.o \
-c elasticlib/elasticlib.cpp
- name: Link C++ Code
run: |
g++ -o elasticlib/elasticlib elasticlib/elasticlib.o \
-Lelasticlib/libs-cpp -l:ntcore-cpp-2025.2.1.so \
-l:wpimath-cpp-2025.2.1.so -l:wpiutil-cpp-2025.2.1.so \
-l:wpiunits-cpp-2025.2.1.so