Skip to content

Refactor / improve python modbus #1521

Refactor / improve python modbus

Refactor / improve python modbus #1521

Workflow file for this run

# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
name: "Java Platform compatibility"
on:
push:
branches: [ "develop", "plc4j" ]
paths:
- code-generation/**
- protocols/**
- plc4j**
- pom.xml
pull_request:
paths:
- code-generation/**
- protocols/**
- plc4j**
- pom.xml
workflow_dispatch:
inputs:
forceUpdates:
description: "Forces a snapshot update"
required: false
default: 'false'
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
jobs:
test:
strategy:
matrix:
# 8 not anymore supported for building
java: [ 11, 17, 21 ]
os: [ ubuntu-latest, macos-latest, windows-latest ]
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Install libpcap for Linux
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get install libpcap-dev
- name: Install libpcap for macos
if: matrix.os == 'macos-latest'
run: brew install libpcap
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-package: jdk
java-version: ${{ matrix.java }}
- name: Cache local Maven repository
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Set Platform options
id: platform_opts
uses: actions/github-script@v7.0.1
env:
OS: ${{ matrix.os }}
with:
script: |
const { OS } = process.env
if (OS.includes("windows")) {
core.setOutput('platform_opts', ``)
} else if (OS.includes("macos")) {
core.setOutput('platform_opts', `-Djna.library.path="$(find /usr/local/Cellar/libpcap/ -name lib)"`)
} else if (OS.includes("ubuntu")) {
core.setOutput('platform_opts', ``)
} else {
core.setOutput('platform_opts', ``)
}
- name: Calculate platform suffix
id: platform_suffix
uses: actions/github-script@v7.0.1
env:
OS: ${{ matrix.os }}
with:
script: |
const { OS } = process.env
if (OS.includes("windows")) {
core.setOutput('platform_suffix', `.cmd`)
} else {
core.setOutput('platform_suffix', ``)
}
- name: Set extra options
id: extra_options
uses: actions/github-script@v7.0.1
env:
FORCE_UPDATE: ${{ github.event.inputs.forceUpdates }}
with:
script: |
const { FORCE_UPDATE } = process.env
if (FORCE_UPDATE.includes("true")) {
core.setOutput('extra_options', `-U`)
} else {
core.setOutput('extra_options', ``)
}
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: java
# Note: due to github has no concept of recovering from a fail even if we have our fallback below we append a second un-parallel run behind this to be sure that it works with all checks. Only if that fails too we are ok with a "red" (which should be yellow) cross indicating a problem
- name: Run mvnw
run: |
./mvnw${{ steps.platform_suffix.outputs.platform_suffix }} ${{ steps.extra_options.outputs.extra_options }} -B -P'with-java,enable-all-checks,update-generated-code' ${{ steps.platform_opts.outputs.platform_opts }} install
- name: Upload Test Report (first failure)
uses: actions/upload-artifact@v4
if: failure()
with:
name: "java-test-report-first-failure-${{ matrix.os }}-java-${{ matrix.java }}"
path: |
**/surefire-reports/TEST-*.xml
**/failsafe-reports/TEST-*.xml
- name: Run mvnv without BacNet regression tests
if: ${{ failure() }}
run: ./mvnw${{ steps.platform_suffix.outputs.platform_suffix }} ${{ steps.extra_options.outputs.extra_options }} -B -P'with-java,skip-bacnet-regression-test,update-generated-code' ${{ steps.platform_opts.outputs.platform_opts }} install
- name: Upload Test Report
uses: actions/upload-artifact@v4
if: success() || failure()
with:
name: "java-test-report-${{ matrix.os }}-java-${{ matrix.java }}"
path: |
**/surefire-reports/TEST-*.xml
**/failsafe-reports/TEST-*.xml
# - name: Perform CodeQL Analysis
# uses: github/codeql-action/analyze@v3