-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #683 from MESAHub/feature/pmocz/actions
Adding test-mesa Github Action workflow
- Loading branch information
Showing
3 changed files
with
233 additions
and
92 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
name : 'install-mesa' | ||
|
||
description: 'Download and install the MESA SDK and install MESA' | ||
|
||
inputs: | ||
sdk: | ||
description: 'The version of the MESA SDK to install' | ||
required: false | ||
default: '23.7.3' | ||
|
||
runs: | ||
|
||
using: 'composite' | ||
|
||
steps: | ||
- name: Delete unused packages | ||
run: | | ||
# runners have 150GB of disk space and the Ubuntu image is big so we sometimes found it ran out of space for MESA | ||
# others have encountered this too so we took commands from this action | ||
# https://github.com/jlumbroso/free-disk-space | ||
# currently commented because we don't need it and these commands can need changing when the Ubuntu image changes | ||
sudo rm -rf /usr/local/lib/android | ||
# sudo apt-get remove -y '^aspnetcore-.*' | ||
# sudo apt-get remove -y '^dotnet-.*' # 990 MB | ||
# sudo apt-get remove -y '^llvm-.*' # 1052 MB | ||
# sudo apt-get remove -y 'php.*' # 56.6 MB | ||
# sudo apt-get remove -y '^mysql-.*' # 209 MB | ||
# sudo apt-get remove -y azure-cli google-cloud-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri # 2274 MB | ||
sudo apt-get autoremove -y # 771 MB | ||
sudo apt-get clean | ||
shell: bash | ||
|
||
- name: Create LFS file list | ||
run: | | ||
git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id | ||
shell: bash | ||
|
||
- name: Restore LFS cache | ||
uses: actions/cache@v4 | ||
id: lfs-cache | ||
with: | ||
path: .git/lfs | ||
key: ${{ runner.os }}-${{ hashFiles('.lfs-assets-id') }}-v1 | ||
|
||
- name: Git LFS Pull | ||
run: git lfs pull | ||
shell: bash | ||
if: steps.lfs-cache.outputs.cache-hit != 'true' | ||
|
||
- name: Git LFS Checkout | ||
run: git lfs checkout | ||
shell: bash | ||
if: steps.lfs-cache.outputs.cache-hit == 'true' | ||
|
||
- name: Install dependencies Linux | ||
run: | | ||
sudo apt-get -y update | ||
sudo apt-get -y install wget binutils make perl libx11-6 libx11-dev zlib1g zlib1g-dev tcsh | ||
shell: bash | ||
|
||
- uses: actions/cache@v4 | ||
id: cache | ||
with: | ||
path: | | ||
mesasdk-x86_64-linux-${{inputs.sdk}}.tar.gz | ||
key: ${{ runner.os }}-${{inputs.sdk}} | ||
|
||
- name: Get SDK ${{ runner.os }} '21.4.1' | ||
if: ${{ (steps.cache.outputs.cache-hit != 'true') && ( inputs.sdk == '21.4.1') }} | ||
run: | | ||
wget -q https://zenodo.org/record/5802444/files/mesasdk-x86_64-linux-21.4.1.tar.gz | ||
shell: bash | ||
|
||
- name: Get SDK ${{ runner.os }} '22.6.1' | ||
if: ${{ (steps.cache.outputs.cache-hit != 'true') && ( inputs.sdk == '22.6.1') }} | ||
run: | | ||
wget -q https://zenodo.org/record/7457681/files/mesasdk-x86_64-linux-22.6.1.tar.gz | ||
shell: bash | ||
|
||
- name: Get SDK ${{ runner.os }} '23.7.3' | ||
if: ${{ (steps.cache.outputs.cache-hit != 'true') && ( inputs.sdk == '23.7.3') }} | ||
run: | | ||
wget -q https://zenodo.org/record/10624843/files/mesasdk-x86_64-linux-23.7.3.tar.gz | ||
shell: bash | ||
|
||
- name: Get SDK ${{ runner.os }} '24.7.1' | ||
if: ${{ (steps.cache.outputs.cache-hit != 'true') && ( inputs.sdk == '24.7.1') }} | ||
run: | | ||
wget -q https://zenodo.org/records/13768913/files/mesasdk-x86_64-linux-24.7.1.tar.gz | ||
shell: bash | ||
|
||
- name: Unpack SDK ${{ runner.os }} ${{inputs.sdk}} | ||
run: | | ||
tar xvf mesasdk-x86_64-linux-${{inputs.sdk}}.tar.gz | ||
shell: bash | ||
|
||
- name: Compile | ||
run: | | ||
# Linux runners have 4 cores | ||
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories | ||
export OMP_NUM_THREADS=4 | ||
export NPROCS=4 | ||
export "MESASDK_ROOT=$(readlink -f mesasdk)" | ||
source "${MESASDK_ROOT}/bin/mesasdk_init.sh" | ||
export "MESA_DIR=$(readlink -f ./)" | ||
# Save environment variables to Github environment | ||
echo "OMP_NUM_THREADS=${OMP_NUM_THREADS}" >> $GITHUB_ENV | ||
echo "NPROCS=${NPROCS}" >> $GITHUB_ENV | ||
echo "MESASDK_ROOT=${MESASDK_ROOT}" >> $GITHUB_ENV | ||
echo "MESA_DIR=${MESA_DIR}" >> $GITHUB_ENV | ||
# Everything is run as root so we need to disable the root check in the install script | ||
sed -i 's/\${EUID:-\$(id -u)}/1/' install | ||
# Turn off caching during build to save more space | ||
sed -i 's/use_cache_for_eos = .true./use_cache_for_eos = .false./g' $MESA_DIR/eos/public/eos_def.f90 | ||
sed -i 's/use_cache = .true./use_cache = .false./g' $MESA_DIR/star/private/star_private_def.f90 | ||
./install | ||
if [ ! -f lib/libbinary.a ]; then | ||
exit 1 | ||
fi | ||
shell: bash |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,102 +7,15 @@ jobs: | |
strategy: | ||
fail-fast: false | ||
matrix: | ||
sdk: ["21.4.1", "22.6.1", "23.7.3"] | ||
sdk: ["22.6.1", "23.7.3", "24.7.1"] | ||
|
||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Delete unused packages | ||
run: | | ||
# runners have 150GB of disk space and the Ubuntu image is big so we sometimes found it ran out of space for MESA | ||
# others have encountered this too so we took commands from this action | ||
# https://github.com/jlumbroso/free-disk-space | ||
# currently commented because we don't need it and these commands can need changing when the Ubuntu image changes | ||
sudo rm -rf /usr/local/lib/android | ||
# sudo apt-get remove -y '^aspnetcore-.*' | ||
# sudo apt-get remove -y '^dotnet-.*' # 990 MB | ||
# sudo apt-get remove -y '^llvm-.*' # 1052 MB | ||
# sudo apt-get remove -y 'php.*' # 56.6 MB | ||
# sudo apt-get remove -y '^mysql-.*' # 209 MB | ||
# sudo apt-get remove -y azure-cli google-cloud-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri # 2274 MB | ||
sudo apt-get autoremove -y # 771 MB | ||
sudo apt-get clean | ||
- name: Checkout | ||
uses: actions/[email protected] | ||
|
||
- name: Create LFS file list | ||
run: | | ||
git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id | ||
- name: Restore LFS cache | ||
uses: actions/cache@v3 | ||
id: lfs-cache | ||
with: | ||
path: .git/lfs | ||
key: ${{ runner.os }}-${{ hashFiles('.lfs-assets-id') }}-v1 | ||
|
||
- name: Git LFS Pull | ||
run: git lfs pull | ||
if: steps.lfs-cache.outputs.cache-hit != 'true' | ||
|
||
- name: Git LFS Checkout | ||
run: git lfs checkout | ||
if: steps.lfs-cache.outputs.cache-hit == 'true' | ||
|
||
- name: Install dependencies Linux | ||
run: | | ||
sudo apt-get -y update | ||
sudo apt-get -y install wget binutils make perl libx11-6 libx11-dev zlib1g zlib1g-dev tcsh | ||
shell: bash | ||
uses: actions/checkout@v4 | ||
|
||
- uses: actions/cache@v3 | ||
id: cache | ||
- name: Install MESA on ${{ runner.os }} with SDK ${{matrix.sdk}} | ||
uses: ./.github/actions/install-mesa | ||
with: | ||
path: | | ||
mesasdk-x86_64-linux-${{matrix.sdk}}.tar.gz | ||
key: ${{ runner.os }}-${{matrix.sdk}} | ||
|
||
|
||
- name: Get SDK ${{ runner.os }} '21.4.1' | ||
if: ${{ (steps.cache.outputs.cache-hit != 'true') && ( matrix.sdk == '21.4.1') }} | ||
run: | | ||
wget -q https://zenodo.org/record/5802444/files/mesasdk-x86_64-linux-21.4.1.tar.gz | ||
shell: bash | ||
|
||
- name: Get SDK ${{ runner.os }} '22.6.1' | ||
if: ${{ (steps.cache.outputs.cache-hit != 'true') && ( matrix.sdk == '22.6.1') }} | ||
run: | | ||
wget -q https://zenodo.org/record/7457681/files/mesasdk-x86_64-linux-22.6.1.tar.gz | ||
shell: bash | ||
|
||
- name: Get SDK ${{ runner.os }} '23.7.3' | ||
if: ${{ (steps.cache.outputs.cache-hit != 'true') && ( matrix.sdk == '23.7.3') }} | ||
run: | | ||
wget -q https://zenodo.org/record/10624843/files/mesasdk-x86_64-linux-23.7.3.tar.gz | ||
shell: bash | ||
|
||
- name: Unpack SDK ${{ runner.os }} ${{matrix.sdk}} | ||
run: | | ||
tar xvf mesasdk-x86_64-linux-${{matrix.sdk}}.tar.gz | ||
shell: bash | ||
|
||
- name: Compile | ||
shell: bash | ||
run: | | ||
# Linux runners have 4 cores | ||
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories | ||
export OMP_NUM_THREADS=4 | ||
export NPROCS=4 | ||
export "MESASDK_ROOT=$(readlink -f mesasdk)" | ||
source "${MESASDK_ROOT}/bin/mesasdk_init.sh" | ||
export "MESA_DIR=$(readlink -f ./)" | ||
# Everything is run as root so we need to disable the root check in the install script | ||
sed -i 's/\${EUID:-\$(id -u)}/1/' install | ||
# Turn off caching during build to save more space | ||
sed -i 's/use_cache_for_eos = .true./use_cache_for_eos = .false./g' $MESA_DIR/eos/public/eos_def.f90 | ||
sed -i 's/use_cache = .true./use_cache = .false./g' $MESA_DIR/star/private/star_private_def.f90 | ||
./install | ||
if [ ! -f lib/libbinary.a ]; then | ||
exit 1 | ||
fi | ||
sdk: ${{matrix.sdk}} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
name: Test Mesa | ||
|
||
on: [workflow_dispatch, release] | ||
|
||
jobs: | ||
test_mesa: | ||
environment: gh-action-testhub | ||
strategy: | ||
fail-fast: false | ||
|
||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: ${{ github.event.pull_request.head.ref }} | ||
|
||
- name: Print git hash | ||
run: | | ||
cd $GITHUB_WORKSPACE | ||
pwd | ||
git branch | ||
git log --pretty=format:'%h' -n 1 | ||
shell: bash | ||
|
||
- name: Install MESA on ${{ runner.os }} with SDK 24.7.1 | ||
uses: ./.github/actions/install-mesa | ||
with: | ||
sdk: "24.7.1" | ||
|
||
- name: Checkout mesa_test | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: MESAHub/mesa_test | ||
path: mesa_test # Store in $GITHUB_WORKSPACE/mesa_test | ||
|
||
- name: Install mesa_test | ||
run: | | ||
cd $GITHUB_WORKSPACE/mesa_test | ||
sudo gem install mesa_test | ||
cd $GITHUB_WORKSPACE | ||
mkdir /home/runner/.mesa_test | ||
shell: bash | ||
|
||
- name: Create mesa_test config file | ||
env: | ||
OMP_NUM_THREADS: ${{env.OMP_NUM_THREADS}} | ||
NPROCS: ${{env.NPROCS}} | ||
MESASDK_ROOT: ${{env.MESASDK_ROOT}} | ||
MESA_DIR: ${{env.MESA_DIR}} | ||
run: | | ||
MESA_TEST_YML=/home/runner/.mesa_test/config.yml | ||
echo "---" > $MESA_TEST_YML | ||
echo "computer_name: GitHub_Runner" >> $MESA_TEST_YML | ||
echo "email: ${{ secrets.MESA_TEST_EMAIL }}" >> $MESA_TEST_YML | ||
echo "password: ${{ secrets.MESA_TEST_PASSWORD }}" >> $MESA_TEST_YML | ||
echo "logs_token: ${{ secrets.MESA_TEST_LOGS_TOKEN }}" >> $MESA_TEST_YML | ||
echo "github_protocol: :ssh" >> $MESA_TEST_YML | ||
echo "mesa_mirror: $GITHUB_WORKSPACE/mirror" >> $MESA_TEST_YML | ||
echo "mesa_work: $GITHUB_WORKSPACE" >> $MESA_TEST_YML | ||
echo "platform: Linux" >> $MESA_TEST_YML | ||
echo "platform_version: Ubuntu" >> $MESA_TEST_YML | ||
shell: bash | ||
|
||
- name: Test Problem 13 | ||
env: | ||
OMP_NUM_THREADS: ${{env.OMP_NUM_THREADS}} | ||
NPROCS: ${{env.NPROCS}} | ||
MESASDK_ROOT: ${{env.MESASDK_ROOT}} | ||
MESA_DIR: ${{env.MESA_DIR}} | ||
run: | | ||
source "${MESASDK_ROOT}/bin/mesasdk_init.sh" | ||
mesa_test test 13 | ||
shell: bash | ||
|
||
- name: Test Problem 15 | ||
env: | ||
OMP_NUM_THREADS: ${{env.OMP_NUM_THREADS}} | ||
NPROCS: ${{env.NPROCS}} | ||
MESASDK_ROOT: ${{env.MESASDK_ROOT}} | ||
MESA_DIR: ${{env.MESA_DIR}} | ||
run: | | ||
source "${MESASDK_ROOT}/bin/mesasdk_init.sh" | ||
mesa_test test 15 | ||
shell: bash | ||
|
||
- name: Test Problem 29 | ||
env: | ||
OMP_NUM_THREADS: ${{env.OMP_NUM_THREADS}} | ||
NPROCS: ${{env.NPROCS}} | ||
MESASDK_ROOT: ${{env.MESASDK_ROOT}} | ||
MESA_DIR: ${{env.MESA_DIR}} | ||
run: | | ||
source "${MESASDK_ROOT}/bin/mesasdk_init.sh" | ||
mesa_test test 29 | ||
shell: bash | ||
|
||
- name: Test Problem 41 | ||
env: | ||
OMP_NUM_THREADS: ${{env.OMP_NUM_THREADS}} | ||
NPROCS: ${{env.NPROCS}} | ||
MESASDK_ROOT: ${{env.MESASDK_ROOT}} | ||
MESA_DIR: ${{env.MESA_DIR}} | ||
run: | | ||
source "${MESASDK_ROOT}/bin/mesasdk_init.sh" | ||
mesa_test test 41 | ||
shell: bash |