diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6b0c99ae..621c79a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,6 +43,120 @@ jobs: with: fetch-depth: 0 + - name: TEMPORARY VIPM license validation + shell: bash + env: + VIPM_SERIAL_NUMBER: ${{ secrets.VIPM_SERIAL_NUMBER }} + VIPM_FULL_NAME: ${{ secrets.VIPM_FULL_NAME }} + VIPM_EMAIL: ${{ secrets.VIPM_EMAIL }} + run: | + set -euo pipefail + + echo "Checking VIPM installation" + echo "Starting Linux VIPM container..." + + docker run --rm -i \ + -e VIPM_SERIAL_NUMBER="${VIPM_SERIAL_NUMBER}" \ + -e VIPM_FULL_NAME="${VIPM_FULL_NAME}" \ + -e VIPM_EMAIL="${VIPM_EMAIL}" \ + nationalinstruments/labview:latest-linux \ + bash -s <<'VIPM_SCRIPT' + set -euo pipefail + echo "VIPM container script started." + + if ! command -v vipm >/dev/null 2>&1; then + echo "VIPM is not installed. Installing VIPM..." + apt-get update + apt-get install -y wget ca-certificates xvfb + wget -O /tmp/vipm.deb "https://traffic.libsyn.com/secure/jkinc/vipm_26.3.1-4025_amd64.deb" + apt-get install -y /tmp/vipm.deb + else + echo "VIPM is already installed." + fi + + export DISPLAY=:99 + export VIPM_TIMEOUT=500 + + echo "DISPLAY=$DISPLAY" + echo "vipm version:" + vipm --version + + if ! pgrep -x Xvfb >/dev/null 2>&1; then + echo "Starting Xvfb on DISPLAY=$DISPLAY..." + Xvfb "$DISPLAY" -screen 0 1280x720x24 -ac +extension GLX +render -noreset >/tmp/xvfb.log 2>&1 & + else + echo "Xvfb is already running." + fi + + mkdir -p /tmp/natinst + echo "1" > /tmp/natinst/LVContainer.txt + + if ! pgrep -x labview >/dev/null 2>&1 && ! pgrep -x labview64 >/dev/null 2>&1; then + echo "Locating LabVIEW executable..." + LABVIEW_BIN="$(command -v labview64 || true)" + if [ -z "$LABVIEW_BIN" ]; then + LABVIEW_BIN="$(find / -path '*LabVIEW*' -name labview 2>/dev/null | head -n 1)" + fi + + echo "LABVIEW_BIN='$LABVIEW_BIN'" + command -v labview64 || true + + if [ -z "$LABVIEW_BIN" ]; then + echo "ERROR: LabVIEW executable not found in the container." + find / -maxdepth 6 \( -path '*/LabVIEW*' -o -path '*/natinst*' \) 2>/dev/null | head -n 200 || true + exit 1 + fi + + if [ ! -x "$LABVIEW_BIN" ]; then + echo "ERROR: LabVIEW executable is not executable: $LABVIEW_BIN" + exit 1 + fi + + echo "Using LabVIEW binary: $LABVIEW_BIN" + "$LABVIEW_BIN" --headless >/tmp/labview.log 2>&1 & + LABVIEW_PID=$! + echo "Waiting for LabVIEW startup (pid $LABVIEW_PID)..." + sleep 15 + if ! kill -0 "$LABVIEW_PID" 2>/dev/null; then + echo "ERROR: LabVIEW exited during startup." + cat /tmp/labview.log || true + exit 1 + fi + echo "LabVIEW startup check passed." + else + echo "LabVIEW is already running." + fi + + echo "Xvfb status:" + pgrep -a -x Xvfb || true + + echo "LabVIEW status:" + pgrep -a labview || true + pgrep -a labview64 || true + + echo "VIPM startup diagnostics complete. Attempting activation..." + if vipm activate --serial-number "$VIPM_SERIAL_NUMBER" --name "$VIPM_FULL_NAME" --email "$VIPM_EMAIL"; then + echo "VIPM activation succeeded (exit code 0)." + else + activation_status=$? + echo "VIPM activation failed (exit code $activation_status)." + exit "$activation_status" + fi + + echo "Installing LUnit package..." + if vipm install astemes_lib_lunit_cli --labview-version 2026 --labview-bitness 64; then + echo "LUnit package installation succeeded (exit code 0)." + else + install_status=$? + echo "LUnit package installation failed (exit code $install_status)." + exit "$install_status" + fi + + echo "VIPM validation succeeded: VIPM is installed, activated, and LUnit is available via VIPM." + VIPM_SCRIPT + + echo "Linux VIPM container exited successfully." + - name: Run VI Analyzer tests uses: ni/open-source/via-lv-docker@actions with: