Skip to content

Commit

Permalink
Merge pull request #683 from MESAHub/feature/pmocz/actions
Browse files Browse the repository at this point in the history
Adding test-mesa Github Action workflow
  • Loading branch information
pmocz authored Sep 16, 2024
2 parents 8006bd5 + 4473d7b commit 80bc894
Show file tree
Hide file tree
Showing 3 changed files with 233 additions and 92 deletions.
120 changes: 120 additions & 0 deletions .github/actions/install-mesa/action.yml
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
97 changes: 5 additions & 92 deletions .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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}}
108 changes: 108 additions & 0 deletions .github/workflows/test-mesa.yml
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

0 comments on commit 80bc894

Please sign in to comment.