Check Paclet #815
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Check Paclet | |
on: | |
schedule: | |
- cron: '30 12 * * *' | |
pull_request: | |
branches: ["main"] | |
workflow_dispatch: | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
RESOURCE_PUBLISHER_TOKEN: ${{ secrets.RESOURCE_PUBLISHER_TOKEN }} | |
RESOURCE_SYSTEM_BASE: ${{ secrets.RESOURCE_SYSTEM_BASE }} | |
TEST_CLOUD_ACCOUNT_PASSWORD: ${{ secrets.TEST_CLOUD_ACCOUNT_PASSWORD }} | |
TEST_CLOUD_ACCOUNT_USER: ${{ secrets.TEST_CLOUD_ACCOUNT_USER }} | |
TEST_PUBLISHER_ID: ${{ secrets.TEST_PUBLISHER_ID }} | |
WOLFRAM_SYSTEM_ID: Linux-x86-64 | |
WOLFRAMSCRIPT_ENTITLEMENTID: ${{ secrets.WOLFRAMSCRIPT_ENTITLEMENTID }} | |
ACTIONS_STEP_DEBUG: ${{ secrets.ACTIONS_STEP_DEBUG }} | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
Check: | |
name: Check | |
runs-on: ubuntu-latest | |
container: | |
image: wolframresearch/wolframengine:13.0.1 | |
options: --user root --privileged --init --ulimit core=-1 | |
timeout-minutes: 20 | |
steps: | |
- name: Setup debugging | |
if: env.ACTIONS_STEP_DEBUG | |
run: | | |
ulimit -c unlimited | |
mkdir -p /tmp/cores | |
chmod a+rwx /tmp/cores | |
sysctl -w kernel.core_pattern=/tmp/cores/core.%e.%p.%h.%t | |
- name: Checkout files | |
uses: actions/checkout@v3 | |
- name: Build paclet MX | |
run: bash Scripts/RunScript.sh BuildPacletMX.wls | |
- name: Check paclet | |
run: bash Scripts/RunScript.sh CheckPaclet.wls | |
- name: Upload core dump | |
if: always() && env.ACTIONS_STEP_DEBUG | |
uses: actions/upload-artifact@v3 | |
with: | |
name: check-core-dump | |
path: /tmp/cores | |
retention-days: 1 | |
if-no-files-found: ignore | |
- name: Upload stack data | |
if: always() && env.PACLET_STACK_HISTORY | |
uses: actions/upload-artifact@v3 | |
with: | |
name: check-paclet-stacks | |
path: ${{ env.PACLET_STACK_HISTORY }} | |
retention-days: 1 | |
if-no-files-found: error | |
- name: Upload workflow values | |
if: always() && env.PACLET_WORKFLOW_VALUES | |
uses: actions/upload-artifact@v3 | |
with: | |
name: paclet-workflow-values | |
path: ${{ env.PACLET_WORKFLOW_VALUES }} | |
retention-days: 1 | |
if-no-files-found: error | |
Build: | |
name: Build | |
runs-on: ubuntu-latest | |
container: | |
image: wolframresearch/wolframengine:13.0.1 | |
options: --user root --privileged --init --ulimit core=-1 | |
timeout-minutes: 20 | |
steps: | |
- name: Setup debugging | |
if: env.ACTIONS_STEP_DEBUG | |
run: | | |
ulimit -c unlimited | |
mkdir -p /tmp/cores | |
chmod a+rwx /tmp/cores | |
sysctl -w kernel.core_pattern=/tmp/cores/core.%e.%p.%h.%t | |
- name: Checkout files | |
uses: actions/checkout@v3 | |
- name: Build paclet MX | |
run: bash Scripts/RunScript.sh BuildPacletMX.wls | |
- name: Build paclet | |
run: bash Scripts/RunScript.sh BuildPaclet.wls | |
- name: Upload core dump | |
if: always() && env.ACTIONS_STEP_DEBUG | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build-core-dump | |
path: /tmp/cores/ | |
retention-days: 1 | |
if-no-files-found: ignore | |
- name: Upload stack data | |
if: always() && env.PACLET_STACK_HISTORY | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build-paclet-stacks | |
path: ${{ env.PACLET_STACK_HISTORY }} | |
retention-days: 1 | |
if-no-files-found: error | |
- name: Upload build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: PacletBuildArtifact | |
path: ${{ env.PACLET_BUILD_DIR }} | |
if-no-files-found: error | |
- name: Upload workflow values | |
if: always() && env.PACLET_WORKFLOW_VALUES | |
uses: actions/upload-artifact@v3 | |
with: | |
name: paclet-workflow-values | |
path: ${{ env.PACLET_WORKFLOW_VALUES }} | |
retention-days: 1 | |
if-no-files-found: error | |
Test-Linux: | |
name: Test-Linux | |
needs: [Build] | |
runs-on: ubuntu-latest | |
container: | |
image: wolframresearch/wolframengine:13.0.1 | |
options: --user root | |
timeout-minutes: 10 | |
steps: | |
- name: Checkout | |
id: checkout-code-step | |
uses: actions/checkout@v3 | |
- name: Download workflow values | |
uses: actions/download-artifact@v3 | |
with: | |
name: paclet-workflow-values | |
path: .paclet-workflow-values | |
- name: Download MX build | |
id: download-mx-artifacts-step | |
uses: actions/download-artifact@v3 | |
with: | |
name: PacletBuildArtifact | |
path: MXBuild | |
- name: Test paclet | |
run: bash Scripts/RunScript.sh TestPaclet.wls | |
- name: Upload stack data | |
if: always() && env.PACLET_STACK_HISTORY | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-paclet-stacks-${{ env.WOLFRAM_SYSTEM_ID }} | |
path: ${{ env.PACLET_STACK_HISTORY }} | |
retention-days: 1 | |
if-no-files-found: error | |
- name: Upload workflow values | |
if: always() && env.PACLET_WORKFLOW_VALUES | |
uses: actions/upload-artifact@v3 | |
with: | |
name: paclet-workflow-values | |
path: ${{ env.PACLET_WORKFLOW_VALUES }} | |
retention-days: 1 | |
if-no-files-found: error | |
Test-MacOSX: | |
name: Test-MacOSX | |
needs: [Build] | |
runs-on: macos-latest | |
env: | |
WOLFRAM_SYSTEM_ID: MacOSX-x86-64 | |
WOLFRAMSCRIPT_ENTITLEMENTID: ${{ secrets.WOLFRAMSCRIPT_ENTITLEMENTID }} | |
WOLFRAMENGINE_CACHE_KEY: WolframEngine-A | |
WOLFRAMENGINE_INSTALLATION_DIRECTORY: "/Applications/Wolfram Engine.app" | |
timeout-minutes: 20 | |
steps: | |
- name: Checkout | |
id: checkout-code-step | |
uses: actions/checkout@v3 | |
- name: Download workflow values | |
uses: actions/download-artifact@v3 | |
with: | |
name: paclet-workflow-values | |
path: .paclet-workflow-values | |
- name: RestoreCachedWolframEngine | |
id: cache-restore-step | |
uses: actions/cache@v3 | |
with: | |
path: ${{ env.WOLFRAMENGINE_INSTALLATION_DIRECTORY }} | |
key: wolframengine-${{ env.WOLFRAM_SYSTEM_ID }}-${{ env.WOLFRAMENGINE_CACHE_KEY }} | |
- name: InstallWolframEngine | |
if: steps.cache-restore-step.outputs.cache-hit != 'true' | |
run: | | |
echo 'Installing Wolfram Engine...' | |
brew install --cask wolfram-engine | |
echo 'Installed Wolfram Engine.' | |
- name: Download MX build | |
id: download-mx-artifacts-step | |
uses: actions/download-artifact@v3 | |
with: | |
name: PacletBuildArtifact | |
path: MXBuild | |
- name: Test paclet | |
run: | | |
export PATH="${{ env.WOLFRAMENGINE_EXECUTABLES_DIRECTORY }}:$PATH" | |
wolframscript -debug -verbose -script Scripts/TestPaclet.wls | |
env: | |
WOLFRAMENGINE_EXECUTABLES_DIRECTORY: "${{ env.WOLFRAMENGINE_INSTALLATION_DIRECTORY }}/Contents/Resources/Wolfram Player.app/Contents/MacOS" | |
WOLFRAMSCRIPT_KERNELPATH: "${{ env.WOLFRAMENGINE_INSTALLATION_DIRECTORY }}/Contents/MacOS/WolframKernel" | |
- name: Upload stack data | |
if: always() && env.PACLET_STACK_HISTORY | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-paclet-stacks-${{ env.WOLFRAM_SYSTEM_ID }} | |
path: ${{ env.PACLET_STACK_HISTORY }} | |
retention-days: 1 | |
if-no-files-found: error | |
- name: Upload workflow values | |
if: always() && env.PACLET_WORKFLOW_VALUES | |
uses: actions/upload-artifact@v3 | |
with: | |
name: paclet-workflow-values | |
path: ${{ env.PACLET_WORKFLOW_VALUES }} | |
retention-days: 1 | |
if-no-files-found: error | |
Test-Windows: | |
name: Test-Windows | |
needs: [Build] | |
runs-on: windows-latest | |
env: | |
WOLFRAM_SYSTEM_ID: Windows-x86-64 | |
WOLFRAMSCRIPT_ENTITLEMENTID: ${{ secrets.WOLFRAMSCRIPT_ENTITLEMENTID }} | |
WOLFRAMENGINE_INSTALL_MSI_DOWNLOAD_URL: https://files.wolframcdn.com/packages/winget/13.0.0.0/WolframEngine_13.0.0_WIN.msi | |
WOLFRAMENGINE_CACHE_KEY: WolframEngine-A | |
timeout-minutes: 20 | |
steps: | |
- name: Checkout | |
id: checkout-code-step | |
uses: actions/checkout@v3 | |
- name: Download workflow values | |
uses: actions/download-artifact@v3 | |
with: | |
name: paclet-workflow-values | |
path: .paclet-workflow-values | |
- name: RestoreCachedWolframEngine | |
id: cache-restore-step | |
uses: actions/cache@v3 | |
env: | |
WOLFRAMENGINE_INSTALLATION_DIRECTORY: '${{ runner.temp }}\WolframEngine' | |
with: | |
path: ${{ env.WOLFRAMENGINE_INSTALLATION_DIRECTORY }} | |
key: wolframengine-${{ env.WOLFRAM_SYSTEM_ID }}-${{ env.WOLFRAMENGINE_CACHE_KEY }} | |
- name: InstallWolframEngine | |
if: steps.cache-restore-step.outputs.cache-hit != 'true' | |
env: | |
WOLFRAMENGINE_INSTALLATION_DIRECTORY: '${{ runner.temp }}\WolframEngine' | |
WOLFRAMENGINE_INSTALL_MSI_PATH: '${{ runner.temp }}\WolframEngine-Install.msi' | |
WOLFRAMENGINE_INSTALL_LOG_PATH: '${{ runner.temp }}\WolframEngine-Install.log' | |
run: | | |
echo 'Downloading Wolfram Engine installer...' | |
$msiFile = '${{ env.WOLFRAMENGINE_INSTALL_MSI_PATH }}' | |
$logFile = '${{ env.WOLFRAMENGINE_INSTALL_LOG_PATH }}' | |
Import-Module BitsTransfer | |
Start-BitsTransfer '${{ env.WOLFRAMENGINE_INSTALL_MSI_DOWNLOAD_URL }}' $msiFile | |
echo 'Downloaded Wolfram Engine installer.' | |
$DataStamp = get-date -Format yyyyMMddTHHmmss | |
$MSIArguments = @( | |
"/i" | |
('"{0}"' -f $msiFile) | |
'INSTALLLOCATION="${{ env.WOLFRAMENGINE_INSTALLATION_DIRECTORY }}"' | |
"/qn" | |
"/norestart" | |
"/L*v" | |
$logFile | |
) | |
echo 'Installing Wolfram Engine...' | |
Start-Process "msiexec.exe" -ArgumentList $MSIArguments -Wait -NoNewWindow | |
echo 'Installed Wolfram Engine.' | |
Set-Alias -Name wolframscript -Value wolfram | |
- name: Download MX build | |
id: download-mx-artifacts-step | |
uses: actions/download-artifact@v3 | |
with: | |
name: PacletBuildArtifact | |
path: MXBuild | |
- name: Test paclet | |
run: | | |
$env:Path += ';${{ env.WOLFRAMENGINE_INSTALLATION_DIRECTORY }}\' | |
wolfram -script Scripts/TestPaclet.wls | |
env: | |
WOLFRAMENGINE_INSTALLATION_DIRECTORY: '${{ runner.temp }}\WolframEngine' | |
WOLFRAMINIT: "-pwfile !cloudlm.wolfram.com -entitlement ${{ secrets.WOLFRAMSCRIPT_ENTITLEMENTID }}" | |
- name: Upload stack data | |
if: always() && env.PACLET_STACK_HISTORY | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-paclet-stacks-${{ env.WOLFRAM_SYSTEM_ID }} | |
path: ${{ env.PACLET_STACK_HISTORY }} | |
retention-days: 1 | |
if-no-files-found: error | |
- name: Upload workflow values | |
if: always() && env.PACLET_WORKFLOW_VALUES | |
uses: actions/upload-artifact@v3 | |
with: | |
name: paclet-workflow-values | |
path: ${{ env.PACLET_WORKFLOW_VALUES }} | |
retention-days: 1 | |
if-no-files-found: error |