name: Build and Test j3270 on: push: branches: [ "master", "main", "develop" ] pull_request: branches: [ "master", "main" ] workflow_dispatch: jobs: build: name: Build JAR & Run Tests runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v4 - name: Set up Java JDK (Temurin 17) uses: actions/setup-java@v4 continue-on-error: true with: java-version: '17' distribution: 'temurin' - name: Ensure Java & Build Tools Available run: | if ! command -v javac >/dev/null 2>&1 || ! command -v gradle >/dev/null 2>&1; then echo "Installing JDK 17 and Gradle via package manager..." if command -v apt-get >/dev/null 2>&1; then apt-get update && apt-get install -y openjdk-17-jdk-headless gradle || true elif command -v apk >/dev/null 2>&1; then apk add --no-cache openjdk17 gradle || true fi fi echo "Java compiler:" javac -version || which javac || true echo "Java runtime:" java -version || which java || true echo "Gradle:" gradle -version || echo "Gradle not available" - name: Make scripts executable run: | chmod +x ./build_all.sh ./run.sh - name: Run Unit Tests run: | if command -v gradle >/dev/null 2>&1; then echo "Running Gradle unit tests..." gradle test --info else echo "Gradle not found; running standalone build verification..." sh ./build_all.sh fi - name: Build Standalone JAR run: | sh ./build_all.sh - name: Upload j3270 Executable JAR Artifact uses: actions/upload-artifact@v3 continue-on-error: true with: name: j3270-executable-jar path: build/j3270.jar - name: Upload Test Reports if: always() uses: actions/upload-artifact@v3 continue-on-error: true with: name: test-reports path: | lib3270j/build/reports/tests/ j3270/build/reports/tests/ - name: Report Build Status if: failure() run: | echo "### ❌ Build or Test Failed" >> $GITHUB_STEP_SUMMARY echo "Please check the runner logs above for details." >> $GITHUB_STEP_SUMMARY