name: Check profiles on: {} permissions: contents: read jobs: check_profiles: name: Check profiles runs-on: ubuntu-24.04 steps: - name: Checkout repository uses: actions/checkout@v6 - name: Run extra JSON check id: extra_json_check continue-on-error: true run: | set +e python3 ./scripts/orca_extra_profile_check.py 2>&1 | tee ${{ runner.temp }}/extra_json_check.log exit ${PIPESTATUS[0]} # download - name: Download working-directory: ${{ github.workspace }} run: | curl -L -o OrcaSlicer_profile_validator https://github.com/OrcaSlicer/OrcaSlicer/releases/download/nightly-builds/OrcaSlicer_profile_validator_Linux_Ubuntu2404_nightly chmod +x ./OrcaSlicer_profile_validator # validate profiles - name: validate system profiles id: validate_system continue-on-error: true run: | set +e ./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_system.log exit ${PIPESTATUS[0]} # For now run filament subtype check only for BBL profiles until we fix other vendors' profiles. - name: validate filament subtype check for BBL profiles id: validate_filament_subtypes continue-on-error: true run: | set +e ./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 -v BBL -f 2>&1 | tee ${{ runner.temp }}/validate_filament_subtypes.log exit ${PIPESTATUS[0]} - name: validate custom presets id: validate_custom continue-on-error: true working-directory: ${{ github.workspace }} run: | set +e curl -LJO https://github.com/OrcaSlicer/OrcaSlicer/releases/download/nightly-builds/orca_custom_preset_tests.zip unzip -q ./orca_custom_preset_tests.zip -d ${{ github.workspace }}/resources/profiles ./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_custom.log exit ${PIPESTATUS[0]} - name: Prepare PR number for comment workflow if: ${{ always() && github.event_name == 'pull_request' }} run: | mkdir -p ${{ runner.temp }}/profile-check-results echo "${{ github.event.pull_request.number }}" > ${{ runner.temp }}/profile-check-results/pr_number.txt - name: Prepare comment artifact if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} run: | { # Marker matched by check_profiles_comment.yml to delete prior comments. echo "" echo "## :x: Profile Validation Errors" echo "" if [ "${{ steps.extra_json_check.outcome }}" = "failure" ]; then echo "### Extra JSON Check Failed" echo "" echo '```' head -c 30000 ${{ runner.temp }}/extra_json_check.log || echo "No output captured" echo '```' echo "" fi if [ "${{ steps.validate_system.outcome }}" = "failure" ]; then echo "### System Profile Validation Failed" echo "" echo '```' head -c 30000 ${{ runner.temp }}/validate_system.log || echo "No output captured" echo '```' echo "" fi if [ "${{ steps.validate_filament_subtypes.outcome }}" = "failure" ]; then echo "### BBL Filament Subtype Validation Failed" echo "" echo '```' head -c 30000 ${{ runner.temp }}/validate_filament_subtypes.log || echo "No output captured" echo '```' echo "" fi if [ "${{ steps.validate_custom.outcome }}" = "failure" ]; then echo "### Custom Preset Validation Failed" echo "" echo '```' head -c 30000 ${{ runner.temp }}/validate_custom.log || echo "No output captured" echo '```' echo "" fi echo "---" echo "*Please fix the above errors and push a new commit.*" } > ${{ runner.temp }}/profile-check-results/pr_comment.md - name: Upload comment artifact if: ${{ always() && github.event_name == 'pull_request' }} uses: actions/upload-artifact@v7 with: name: profile-check-results path: ${{ runner.temp }}/profile-check-results/ retention-days: 1 - name: Fail if any check failed if: ${{ always() && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} run: | echo "One or more profile checks failed. See above for details." exit 1