Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
cd60a53
testing out linux incremental build
tijcolem Jun 25, 2025
44e7a52
formatting
tijcolem Jun 25, 2025
9b98c43
Fix Docker volume paths and command formatting in incremental build w…
anchapin Jun 25, 2025
3945503
fix: update volume mounting in incremental build workflow
anchapin Jun 25, 2025
abe2307
Merge branch 'develop' into self-hosted
anchapin Jun 25, 2025
fb57ba4
added pwd and ls commands
anchapin Jun 25, 2025
435a2b2
Update Docker volume paths and build output directory
anchapin Jun 25, 2025
6f5cadf
Fix OpenStudio source volume path in incremental build workflow
anchapin Jun 25, 2025
70dee16
remove jenkinsfiles
anchapin Jun 25, 2025
eb47f52
Add debug output for branch name in incremental build workflow
anchapin Jun 25, 2025
e9e5230
fix: Use head_ref for PR builds in incremental workflow
anchapin Jun 25, 2025
223ad26
Update PR number extraction in incremental build workflow
anchapin Jun 25, 2025
e7f9700
Update PR_NUMBER environment variable in incremental build workflow
anchapin Jun 25, 2025
0391dc4
Fix PR number extraction in incremental build workflow
anchapin Jun 25, 2025
c0cb20b
Remove Conan environment variables and update volume mount path
anchapin Jun 25, 2025
1f2c953
Remove unnecessary pip install conan step from incremental build work…
anchapin Jun 25, 2025
1ac5d3d
Add whoami command to debug CI environment in incremental build workflow
anchapin Jun 25, 2025
2be29ee
fix: remove echo from whoami command in incremental build workflow
anchapin Jun 25, 2025
37eb690
Add disk space and home directory checks to CI workflow
anchapin Jun 25, 2025
efae7f8
Add debug commands to incremental build workflow
anchapin Jun 25, 2025
0dab21e
Update Conan cache volume mapping in incremental build workflow
anchapin Jun 25, 2025
ece9fd0
Remove debug tail command from incremental build workflow
anchapin Jun 25, 2025
6cf90cc
Comment out conan profile detect in incremental build workflow
anchapin Jun 25, 2025
66744f0
Update incremental build workflow with improved Docker volume structure
anchapin Jun 25, 2025
04e4558
Fix environment variable reference in incremental build workflow
anchapin Jun 25, 2025
4cd0efb
Fix indentation in CMake configuration command
anchapin Jun 25, 2025
d825b84
Comment out Python setup step in incremental build workflow
anchapin Jun 25, 2025
a368077
Add debugging pause in incremental build workflow
anchapin Jun 25, 2025
55ab432
Fix CMake command formatting in incremental build workflow
anchapin Jun 25, 2025
f9f7288
Remove debug tail command from incremental build workflow
anchapin Jun 25, 2025
e9d33e6
Add printenv command to incremental build workflow for debugging
anchapin Jun 25, 2025
313c799
Comment out cmake configuration in incremental build workflow
anchapin Jun 25, 2025
4c73b47
Comment out conanbuild.sh sourcing in incremental build workflow
anchapin Jun 25, 2025
4a17bd5
fix: source conanbuild.sh in incremental build workflow
anchapin Jun 25, 2025
bc9976f
Uncomment CMake configuration in incremental build workflow
anchapin Jun 25, 2025
f7f622b
Uncomment and update Ninja build step in incremental workflow
anchapin Jun 25, 2025
4f01c15
fix: use dot operator instead of source in build script
anchapin Jun 25, 2025
5b86681
Using 80% of the cores instead of max-1 since last time it crashed
anchapin Jun 26, 2025
4604502
fix: use MAX_SAFE_THREADS variable for Ninja and CTest parallelism
anchapin Jun 26, 2025
6e7e02e
fix: update CTest directory path to use environment variables
anchapin Jun 26, 2025
724bd01
fix: update CTest command and enable artifact upload in incremental b…
anchapin Jun 26, 2025
b894aae
fix: update CTest directory path and enhance test result handling in …
anchapin Jun 26, 2025
0469267
fix: update CTest results directory variable and cleanup step
anchapin Jun 26, 2025
d149a52
fix: streamline CTest execution and remove redundant steps in increme…
anchapin Jun 26, 2025
12413ae
fix: correct CMake options and improve CTest execution flow in increm…
anchapin Jun 26, 2025
7defb8e
fix: update CTest results handling and cleanup process in incremental…
anchapin Jun 26, 2025
dbdafa1
fix: update CTest execution to include JUnit output and modify test r…
anchapin Jun 26, 2025
21f7798
fix: update CTest execution commands and modify test result publishin…
anchapin Jun 26, 2025
d78b2dd
fix: update test result publishing action to use version v2 in increm…
anchapin Jun 26, 2025
4deee61
fix: update test result publishing action to use version v2
anchapin Jun 26, 2025
3cdecd3
fix: update test result publishing action to use composite version v2
anchapin Jun 26, 2025
5ceb7bc
fix: enhance CTest execution to include JUnit output and update test …
anchapin Jun 26, 2025
91c349d
fix: update permissions in incremental build workflow and specify act…
anchapin Jun 26, 2025
ee99014
fix: update test results publishing action to use mikepenz/action-jun…
anchapin Jun 26, 2025
71bc96f
fix: update test results publishing action to use dorny/test-reporter…
anchapin Jun 26, 2025
76a30d6
fix: enable CMake setup step and update test results path in incremen…
anchapin Jun 26, 2025
7db95a1
fix: update test results publishing action to use mikepenz/action-jun…
anchapin Jun 26, 2025
5ffcc90
fix: update CTest command to improve output handling and adjust repor…
anchapin Jun 26, 2025
8763daa
fix: enhance CTest execution by creating separate directories for tes…
anchapin Jun 26, 2025
455e3dd
fix: enhance CTest execution by adding debugging steps and organizing…
anchapin Jun 26, 2025
4763af3
fix: update incremental build workflow to correct volume paths and en…
anchapin Jun 26, 2025
f9f7e77
fix: update test results publishing action to correctly reference res…
anchapin Jun 26, 2025
2734fb3
fix: update test results publishing step to use test-summary action f…
anchapin Jun 26, 2025
e3d3010
fix: update incremental build workflow to improve job conditions and …
anchapin Jun 26, 2025
6a4e9d3
fix: streamline incremental build workflow by removing defaults and e…
anchapin Jun 26, 2025
4adc7e4
fix: add conan profile detection step before installing dependencies
anchapin Jun 26, 2025
7b3b17b
fix: add conan remote configuration before installing dependencies
anchapin Jun 26, 2025
a8dda8e
fix: enforce conan remote addition with --force flag for dependency i…
anchapin Jun 26, 2025
285fdf5
fix: enhance incremental build workflow by adding ccache installation…
anchapin Jun 26, 2025
253d7f9
fix: enhance incremental build workflow with improved error handling …
anchapin Jun 27, 2025
741fb3c
fix: add safe directory configuration to clean workspace step
anchapin Jun 27, 2025
92bf723
fix: resolve Kitware GPG key issue for ccache installation
anchapin Jun 27, 2025
1f7ebea
fix: update default compiler setup to remove sudo for update-alternat…
anchapin Jun 27, 2025
1e114f4
fix: remove outdated gcc-9 setup from default compiler configuration
anchapin Jun 27, 2025
a1c0c33
fix: remove outdated bincrafters remote from dependency installation
anchapin Jun 27, 2025
fd258d6
fix: add NREL v2 remote for Conan dependency installation
anchapin Jun 27, 2025
c55942c
fix: enhance Conan profile detection in incremental build workflow
anchapin Jun 27, 2025
af0508c
fix: improve Conan profile detection in incremental build workflow
anchapin Jun 27, 2025
6258f13
fix: update Conan profile detection to check for profile file existence
anchapin Jun 27, 2025
43f1adc
Update incremental-build.yml
anchapin Jun 27, 2025
64aae63
fix: add SSL verification option to Conan install command
anchapin Jun 27, 2025
4aff996
fix: update ccache installation and Conan remote configuration for SS…
anchapin Jun 27, 2025
f1784ac
fix: set NODE_TLS_REJECT_UNAUTHORIZED to 0 for secure connections
anchapin Jun 27, 2025
005bf6c
fix: enhance ccache configuration and update build cache management
anchapin Jun 27, 2025
cee6ab2
fix: adjust MAX_SAFE_THREADS and MAKEFLAGS for improved build perform…
anchapin Jun 27, 2025
ac184c3
feat: add test results dashboard generation and publishing to PR
anchapin Jun 27, 2025
0b57c78
fix: update build environment and Docker image for consistency
anchapin Jun 27, 2025
d917708
feat: add Jenkins pipeline files for incremental code coverage on mul…
anchapin Jun 27, 2025
3742789
fix: update incremental build workflow comments for clarity and context
anchapin Jun 27, 2025
03a6947
fix: update incremental build workflow to improve directory handling …
anchapin Jun 27, 2025
83cf6ee
fix: update Docker volume and build name for consistency in increment…
anchapin Jun 27, 2025
5f6b5aa
fix: remove unnecessary backslash in git checkout command for clarity
anchapin Jun 27, 2025
e79dfe7
fix: update paths in test summary and dashboard generation for consis…
anchapin Jun 27, 2025
1a36776
fix: enhance incremental build workflow with concurrency settings and…
anchapin Jun 27, 2025
630c072
fix: update pull request number handling in incremental build workflo…
anchapin Jun 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
366 changes: 366 additions & 0 deletions .github/workflows/incremental-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,366 @@
name: Build and Test (Ubuntu 22.04)

on:
pull_request:
push:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'Pull Request - Ready for CI')
runs-on: linux-openstudio-2

permissions:
contents: read
issues: read
checks: write
pull-requests: write
actions: read

env:
MAX_SAFE_THREADS: $(( ($(nproc) * 90 + 50) / 100 ))
CMAKE_CXX_COMPILER_LAUNCHER: ccache
MAKEFLAGS: "-j$(( ($(nproc) * 90 + 50) / 100 ))"
NODE_TLS_REJECT_UNAUTHORIZED: 0
DOCKER_ROOT: /github/home
OPENSTUDIO_DOCKER_VOLUME: /github/home/Ubuntu
OPENSTUDIO_SOURCE_NAME: OpenStudio
OPENSTUDIO_BUILD_NAME: OS-build

container: # Define the Docker container for the job. All subsequent steps run inside it.
image: nrel/openstudio-cmake-tools:jammy
options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally
volumes: # envs don't work in volume definition for containers
- "/srv/data/jenkins/docker-volumes/conan-data/.conan2:/github/home/.conan2" # Conan cache
- "/srv/data/jenkins/docker-volumes/ubuntu-2204:/github/home/Ubuntu"

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for all branches and tags

- name: Prepare workspace
run: |
cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}
# make safe repository
git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}"

- name: Install ccache
run: |
# Fix Kitware GPG key issue
wget --no-check-certificate -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu jammy main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null
apt-get update && apt-get install -y ccache

- name: Set default compiler
run: |
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 --slave /usr/bin/g++ g++ /usr/bin/g++-11
update-alternatives --set gcc /usr/bin/gcc-11

- name: Cache ccache
uses: actions/cache@v4
with:
path: ${{ env.DOCKER_ROOT }}/.ccache
key: ${{ runner.os }}-ccache-${{ github.sha }}
restore-keys: |
${{ runner.os }}-ccache-

- name: Configure ccache
run: |
ccache --max-size=2G
ccache --set-config=compression=true
ccache --set-config=compression_level=1
ccache --show-stats

- name: Git Setup
run: |
# Set up git and fetch PR head, then detect conan profile and install dependencies
cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}
git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}" && \
git config user.email "cicommercialbuilding@gmail.com" && \
git config user.name "ci-commercialbuildings" && \
git fetch origin && \
git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \
git checkout origin/pr/${{ github.event.pull_request.number || github.ref }}

- name: Install dependencies
run: |
cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}
conan remote add conancenter https://center.conan.io --force
conan remote update conancenter --insecure
conan remote add nrel-v2 https://conan.openstudio.net/artifactory/api/conan/conan-v2 --force
conan remote update nrel-v2 --insecure
if [ ! -f "${{ env.DOCKER_ROOT }}/.conan2/profiles/default" ]; then
conan profile detect
fi
conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release

# wrap cmake with ccache using a flag or environment variable
- name: Configure with CMake
working-directory: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}
run: |
. ./conanbuild.sh
cmake -G Ninja \
-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DBUILD_TESTING:BOOL=ON \
-DCPACK_BINARY_DEB:BOOL=ON \
-DCPACK_BINARY_TGZ:BOOL=ON \
-DCPACK_BINARY_IFW:BOOL=OFF \
-DCPACK_BINARY_NSIS:BOOL=OFF \
-DCPACK_BINARY_RPM:BOOL=OFF \
-DCPACK_BINARY_STGZ:BOOL=OFF \
-DCPACK_BINARY_TBZ2:BOOL=OFF \
-DCPACK_BINARY_TXZ:BOOL=OFF \
-DCPACK_BINARY_TZ:BOOL=OFF \
-DBUILD_PYTHON_BINDINGS:BOOL=ON \
-DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \
-DPYTHON_VERSION:STRING=3.12.2 \
-DBUILD_RUBY_BINDINGS:BOOL=ON \
-DBUILD_CLI:BOOL=ON \
..

- name: Verify build state
working-directory: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}
run: |
if [ -f "build.ninja" ]; then
echo "Ninja build file found - checking what needs to be built"
ninja -n -j 1 package | head -20 || true
else
echo "No build.ninja found - full reconfiguration will be needed"
fi

- name: Build with Ninja
working-directory: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}
run: |
. ./conanbuild.sh
ninja -j ${{ env.MAX_SAFE_THREADS }} package

- name: Run CTests with enhanced error handling
working-directory: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}
run: |
set +e # Don't exit on first failure
mkdir -p Testing/run{1,2,3}

echo "Starting first test run..."
ctest -j ${{ env.MAX_SAFE_THREADS }} --no-compress-output --output-on-failure --output-junit Testing/run1/results.xml
RESULT1=$?

if [ $RESULT1 -ne 0 ]; then
echo "First test run failed (exit code: $RESULT1), retrying failed tests..."
ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/run2/results.xml
RESULT2=$?

if [ $RESULT2 -ne 0 ]; then
echo "Second test run failed (exit code: $RESULT2), final attempt with verbose output..."
ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/run3/results.xml
RESULT3=$?
else
RESULT3=0
fi
else
echo "First test run passed"
RESULT2=0
RESULT3=0
fi

# Report results
echo "Test run results: Run1=$RESULT1, Run2=$RESULT2, Run3=$RESULT3"

# Set job status based on results
if [ $RESULT1 -eq 0 ] || [ $RESULT2 -eq 0 ] || [ $RESULT3 -eq 0 ]; then
echo "Tests passed (some may have required retries)"
exit 0
else
echo "All test attempts failed"
exit 1
fi
continue-on-error: true

- name: Test Summary
uses: test-summary/action@v2
with:
paths: "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/results.xml" # Path to your JUnit output file
output: "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/test-summary.md"
if: always()

- name: Upload test summary
uses: actions/upload-artifact@v4
with:
name: test-summary
path: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/test-summary.md
if: always()

- name: Generate test results dashboard
if: always()
run: |
mkdir -p ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard

# Create comprehensive test dashboard
cat > ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/test-dashboard.md << 'EOF'
# 🧪 Test Results Dashboard

## Summary

EOF

# Process JUnit XML files and extract test information
python3 << 'PYTHON_EOF'
import xml.etree.ElementTree as ET
import os
import glob
from datetime import datetime

build_dir = "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}"
dashboard_file = f"{build_dir}/Testing/dashboard/test-dashboard.md"

# Find all JUnit XML files
xml_files = glob.glob(f"{build_dir}/Testing/run*/results.xml")

total_tests = 0
total_failures = 0
total_errors = 0
total_skipped = 0
failed_tests = []

# Parse XML files
for xml_file in xml_files:
if os.path.exists(xml_file):
try:
tree = ET.parse(xml_file)
root = tree.getroot()

# Handle different JUnit XML formats
if root.tag == 'testsuites':
testsuites = root.findall('testsuite')
else:
testsuites = [root]

for testsuite in testsuites:
suite_name = testsuite.get('name', 'Unknown')
tests = int(testsuite.get('tests', 0))
failures = int(testsuite.get('failures', 0))
errors = int(testsuite.get('errors', 0))
skipped = int(testsuite.get('skipped', 0))

total_tests += tests
total_failures += failures
total_errors += errors
total_skipped += skipped

# Get failed test details
for testcase in testsuite.findall('testcase'):
test_name = testcase.get('name', 'Unknown')
classname = testcase.get('classname', suite_name)

failure = testcase.find('failure')
error = testcase.find('error')

if failure is not None or error is not None:
failure_info = failure if failure is not None else error
message = failure_info.get('message', 'No message')
details = failure_info.text or 'No details available'

failed_tests.append({
'suite': suite_name,
'class': classname,
'name': test_name,
'message': message,
'details': details,
'run': os.path.basename(os.path.dirname(xml_file))
})
except Exception as e:
print(f"Error parsing {xml_file}: {e}")

# Generate dashboard content
with open(dashboard_file, 'a') as f:
# Summary section
success_rate = ((total_tests - total_failures - total_errors) / total_tests * 100) if total_tests > 0 else 0

f.write(f"| Metric | Value |\n")
f.write(f"|--------|-------|\n")
f.write(f"| **Total Tests** | {total_tests} |\n")
f.write(f"| **Passed** | {total_tests - total_failures - total_errors} |\n")
f.write(f"| **Failed** | {total_failures} |\n")
f.write(f"| **Errors** | {total_errors} |\n")
f.write(f"| **Skipped** | {total_skipped} |\n")
f.write(f"| **Success Rate** | {success_rate:.1f}% |\n")
f.write(f"| **Generated** | {datetime.now().strftime('%Y-%m-%d %H:%M:%S UTC')} |\n\n")

if success_rate >= 100:
f.write("## ✅ All Tests Passed!\n\n")
elif success_rate >= 95:
f.write("## ⚠️ Minor Issues Detected\n\n")
else:
f.write("## ❌ Significant Test Failures\n\n")

# Failed tests section
if failed_tests:
f.write(f"## 🔍 Failed Tests ({len(failed_tests)} failures)\n\n")

# Group by test suite
suites = {}
for test in failed_tests:
suite = test['suite']
if suite not in suites:
suites[suite] = []
suites[suite].append(test)

for suite_name, suite_tests in suites.items():
f.write(f"### {suite_name} ({len(suite_tests)} failures)\n\n")

for test in suite_tests:
f.write(f"<details>\n")
f.write(f"<summary><strong>{test['class']}.{test['name']}</strong> ({test['run']})</summary>\n\n")
f.write(f"**Error Message:**\n")
f.write(f"```\n{test['message']}\n```\n\n")
f.write(f"**Full Details:**\n")
f.write(f"```\n{test['details']}\n```\n\n")
f.write(f"</details>\n\n")

# Test run information
f.write("## 📊 Test Run Information\n\n")
f.write("| Run | XML File | Status |\n")
f.write("|-----|----------|--------|\n")
for i, xml_file in enumerate(xml_files, 1):
status = "✅ Found" if os.path.exists(xml_file) else "❌ Missing"
run_name = os.path.basename(os.path.dirname(xml_file))
f.write(f"| {run_name} | `{os.path.basename(xml_file)}` | {status} |\n")

if not xml_files:
f.write("| - | No XML files found | ❌ Missing |\n")

print(f"Dashboard generated with {total_tests} tests, {total_failures + total_errors} failures")
PYTHON_EOF

- name: Publish test results to PR
if: always() && github.event_name == 'pull_request'
uses: marocchino/sticky-pull-request-comment@v2
with:
header: test-results
path: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/test-dashboard.md

- name: Upload comprehensive test results
uses: actions/upload-artifact@v4
with:
name: test-results-dashboard
path: |
${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/
${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/
if: always()

- name: Upload build artifacts with metadata
uses: actions/upload-artifact@v4
with:
name: ubuntu-2204-${{ github.head_ref || github.ref_name }}-${{ github.sha }}
path: |
${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb
${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz
retention-days: 30
if: always()
25 changes: 0 additions & 25 deletions .github/workflows/mac.yml

This file was deleted.

Loading
Loading