Skip to content

Package for Windows #770

Package for Windows

Package for Windows #770

name: Package for Windows
on:
workflow_dispatch:
inputs:
git-ref:
description: Branch of gem/oq-builders repository
default: master
required: true
path:
description: Path to upload packages
default: /oq-engine/
required: true
oq-ref:
description: Branch of Openquake Engine
default: master
required: true
oq-rel:
description: Build Number of Openquake Engine
default: 1
required: false
oq-science:
description: Build oq-mbtk and vmtk
default: 0
required: true
# push:
# branches:
# -
schedule:
- cron: "00 18 * * *"
jobs:
Build_Installer:
runs-on: ubuntu-latest
env:
GEM_SET_BRANCH: ${{ github.event.inputs.oq-ref }}
GEM_SET_BRANCH_TOOLS: ${{ github.event.inputs.oq-ref }}
GEM_SET_RELEASE: ${{ github.event.inputs.oq-rel }}
GEM_SET_BUILD_SCIENCE: ${{ github.event.inputs.oq-science }}
GIT_BRANCH: ${{ github.ref }}
GIT_COMMIT_SHA: ${{ github.sha }}
steps:
- name: Clone Repository (Latest)
uses: actions/checkout@v4
if: github.event.inputs.git-ref == ''
- name: Clone Repository (Custom Ref)
uses: actions/checkout@v4
if: github.event.inputs.git-ref != ''
with:
ref: ${{ github.event.inputs.git-ref }}
- name: Docker build of the container and create installer
run: |
echo "Check variable for build packages"
echo "GEM_SET_BRANCH: ${GEM_SET_BRANCH}"
echo "GEM_SET_BRANCH_TOOLS: ${GEM_SET_BRANCH_TOOLS}"
echo "GEM_SET_RELEASE: ${GEM_SET_RELEASE}"
echo "GEM_SET_BUILD_SCIENCE: ${GEM_SET_BUILD_SCIENCE}"
sleep 2
bash -x ci/windows_package.sh
#
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: Installer
path: /home/runner/work/oq-builders/oq-builders/out
retention-days: 5
Test_OQ:
needs: Build_Installer
runs-on: windows-2019
timeout-minutes: 45
steps:
- name: Download Windows Installer from build job
uses: actions/download-artifact@v4
with:
name: Installer
- name: Execute the Installer
run: |
$Install = Get-ChildItem -Filter *.exe
Start-Process -FilePath $Install.Fullname -ArgumentList "/S" -Wait
$env:PATH += ";$env:LOCALAPPDATA\Programs\OpenQuake Engine\python3\Scripts"
Write-Host ${env:PATH}
pwd
- name: Clone Repository (Latest)
uses: actions/checkout@v4
if: github.event.inputs.git-ref == ''
- name: Clone Repository (Custom Ref)
uses: actions/checkout@v4
if: github.event.inputs.git-ref != ''
with:
ref: ${{ github.event.inputs.git-ref }}
- name: Run oq
run: |
$env:PATH += ";$env:LOCALAPPDATA\Programs\OpenQuake Engine\python3\Scripts"
oq.exe --version
oq.exe engine --run "https://downloads.openquake.org/pkgs/test_event_based_risk_inputs_bc.zip"
oq.exe engine --run "https://downloads.openquake.org/jobs/M4_Exercise.zip"
oq.exe engine --list-risk-calculations
- name: Run oq webui console and curl for the standalone tools
run: |
$env:PATH += ";$env:LOCALAPPDATA\Programs\OpenQuake Engine\python3\Scripts"
Write-Host ${env:PATH}
cd "$env:LOCALAPPDATA\Programs\OpenQuake Engine\python3\Scripts"
Start-Job -ScriptBlock{& oq.exe webui start 127.0.0.1:8800 -s 2>&1 > "$env:LOCALAPPDATA\Temp\webui.log" }
ping 127.0.0.1 -n 6 > null
Get-Job
netstat -o -n -a | findstr 8800
Write-Host "Test webui and tools Web pages"
ping 127.0.0.1 -n 6 > null
curl.exe -I -G http://127.0.0.1:8800/engine
ping 127.0.0.1 -n 6 > null
curl.exe -X HEAD -I http://127.0.0.1:8800/ipt/
ping 127.0.0.1 -n 6 > null
curl.exe -X HEAD -I http://127.0.0.1:8800/taxonomy/
ping 127.0.0.1 -n 6 > null
curl.exe -X HEAD -I http://127.0.0.1:8800/taxtweb/
ping 127.0.0.1 -n 6 > null
oq.exe engine --list-risk-calculations
curl.exe -v --fail -G http://127.0.0.1:8800/engine/1/outputs
- name: Upload Artifact WebUI log
uses: actions/upload-artifact@v4
with:
name: WebUI_log
path: C:\\Users\\runneradmin\\AppData\\Local\\Temp\\webui.log
retention-days: 5
- name: Test installation of oq-mbtk
run: |
$env:PATH="$env:LOCALAPPDATA\Programs\OpenQuake Engine\python3"
$env:PATH="$env:PATH;$env:LOCALAPPDATA\Programs\OpenQuake Engine\python3\Scripts"
python.exe -V
cd "$env:LOCALAPPDATA\Programs\OpenQuake Engine"
Remove-Item -Path .\oq-mbtk\openquake\cat\__init__.py
python.exe -m pip install pytest
pytest -vsx .\oq-mbtk\openquake\cat
if: github.event.inputs.oq-science == '1'
- name: Compare files of VMTK
run: |
$env:PATH="$env:LOCALAPPDATA\Programs\OpenQuake Engine\python3"
$env:PATH="$env:PATH;$env:LOCALAPPDATA\Programs\OpenQuake Engine\python3\Scripts"
python.exe -V
cd "$env:LOCALAPPDATA\Programs\OpenQuake Engine"
cd "oq-vmtk\demonstration_files"
dir
python.exe computation_scripts_example_lite.py
cd "outputs\out_dynamic_an_edps_imls\CR_LFINF-CDN_H1"
dir
$dirB = "$env:GITHUB_WORKSPACE\ci\to_compare"
$dirA = "$env:LOCALAPPDATA\Programs\OpenQuake Engine\oq-vmtk\demonstration_files\outputs\out_dynamic_an_edps_imls\CR_LFINF-CDN_H1"
if ( Compare-Object (Get-Content $dirA\max_accels.csv) -DifferenceObject (Get-Content $dirB\max_accels.csv) -SyncWindow 0 ) { exit 1} else {"Files are the same"}
if ( Compare-Object (Get-Content $dirA\imls.csv) -DifferenceObject (Get-Content $dirB\imls.csv) -SyncWindow 0 ) {exit 1} else {"Files are the same"}
if ( Compare-Object (Get-Content $dirA\max_disps.csv) -DifferenceObject (Get-Content $dirB\max_disps.csv) -SyncWindow 0 ) {exit 1} else {"Files are the same"}
if: github.event.inputs.oq-science == '1'
Upload_Installer:
needs: Test_OQ
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download Windows Installer from build job
uses: actions/download-artifact@v4
with:
name: Installer
- name: rsync to downloads.openquake.org
shell: bash
env:
DOWNLOAD_SSH: ${{ secrets.DOWNLOAD_ARTIFACTS }}
folder: ${{ github.event.inputs.path }}
run: |
gpg --quiet --batch --yes --decrypt --passphrase="$DOWNLOAD_SSH" --output ./.deploy_rsa ./.oq_builders.enc
chmod 600 ./.deploy_rsa
eval $(ssh-agent -s) && ssh-add ./.deploy_rsa
# print value of folder
echo "Folder to upload packages: ${folder}"
if test -z "$folder"
then
echo "\$folder is empty"
folder=oq-engine/nightly/
echo $folder
else
echo "\$folder is NOT empty"
fi
#rsync -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 332' -ax OpenQuake_Engine* ftp@downloads.openquake.org:/mnt/box/openquake/downloads/pkgs/windows/oq-engine/nightly/
rsync -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 332' -ax OpenQuake_Engine* ftp@downloads.openquake.org:/mnt/box/openquake/downloads/pkgs/windows/${folder}