Skip to content

Check Paclet

Check Paclet #894

Workflow file for this run

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:latest
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:latest
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:latest
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-Linux-13:
name: Test-Linux-13
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-13-${{ 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-1
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.3.0.0/WolframEngine_13.3.0_WIN.msi
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_INSTALL_MSI_DOWNLOAD_URL }}
- 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