Fix installer.sh
to only require /bin/sh
.
#550
Workflow file for this run
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: CI | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- '**' | |
- '!*.md' | |
pull_request: | |
paths: | |
- '**' | |
- '!*.md' | |
defaults: | |
run: | |
shell: bash | |
concurrency: | |
group: CI-${{ github.ref }} | |
# Queue on all branches and tags, but only cancel overlapping PR burns. | |
cancel-in-progress: ${{ github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/tags/') }} | |
env: | |
# Work around SIGSEGVs and other errors under some qemu targets. | |
UV_CONCURRENT_BUILDS: 1 | |
jobs: | |
org-check: | |
name: Check GitHub Organization | |
if: github.repository_owner == 'a-scie' | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Noop | |
run: "true" | |
ci: | |
name: (${{ matrix.name }}) CI | |
needs: org-check | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
# N.B.: macos-13 is the oldest non-deprecated Intel Mac runner and macos-14 is the oldest | |
# non-deprecated ARM Mac runner. | |
include: | |
- os: ubuntu-24.04 | |
name: Linux x86-64 (musl) | |
image: alpine | |
arch: amd64 | |
- os: ubuntu-24.04 | |
name: Linux x86-64 (glibc) | |
image: debian | |
arch: amd64 | |
- os: ubuntu-24.04 | |
name: Linux aarch64 | |
image: debian | |
arch: arm64 | |
- os: ubuntu-24.04 | |
name: Linux armv7l | |
image: debian | |
arch: arm/v7 | |
- os: ubuntu-24.04 | |
name: Linux s390x | |
image: debian | |
arch: s390x | |
- os: ubuntu-24.04 | |
name: Linux powerpc64le | |
image: debian | |
arch: ppc64le | |
- os: macos-13 | |
name: macOS x86-64 | |
- os: macos-14 | |
name: macOS aarch64 | |
- os: windows-2022 | |
name: Windows x86-64 | |
- os: windows-arm64 | |
name: Windows aarch64 | |
env: | |
FORCE_COLOR: 1 | |
SCIENCE_AUTH_API_GITHUB_COM_BEARER: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Install the latest version of uv | |
if: matrix.os != 'windows-arm64' | |
uses: astral-sh/setup-uv@v5 | |
- name: Setup uv | |
if: matrix.os != 'windows-arm64' | |
run: | | |
export UV="$(which uv)" | |
"${UV}" -V | |
echo UV="${UV}" >> ${GITHUB_ENV} | |
- name: Install the latest version of uv | |
if: matrix.os == 'windows-arm64' | |
run: | | |
CI_BIN_DIR="$(mktemp -d)" | |
echo CI_BIN_DIR="${CI_BIN_DIR}" >> ${GITHUB_ENV} | |
( | |
cd "${CI_BIN_DIR}" | |
curl -fL -O https://github.com/astral-sh/uv/releases/latest/download/uv-x86_64-pc-windows-msvc.zip | |
curl -fL -O https://github.com/astral-sh/uv/releases/latest/download/uv-x86_64-pc-windows-msvc.zip.sha256 | |
shasum -c uv-x86_64-pc-windows-msvc.zip.sha256 | |
unzip uv-x86_64-pc-windows-msvc.zip | |
) | |
export UV="${CI_BIN_DIR}/uv.exe" | |
"${UV}" -V | |
echo UV="${UV}" >> ${GITHUB_ENV} | |
- name: Setup x86_64 Python for Prism | |
if: matrix.os == 'windows-arm64' | |
run: | | |
# N.B.: We use an x86-64 Python for Windows ARM64 because this is what we ship with via | |
# PBS, and we need to be able to resolve x86-64 compatible requirements (which include | |
# native deps like psutil) for our shiv. | |
UV_PYTHON_VERSION=cpython-3.12.9-windows-x86_64-none | |
"${UV}" python install ${UV_PYTHON_VERSION} | |
echo UV_PYTHON="${UV_PYTHON_VERSION}" >> ${GITHUB_ENV} | |
- name: Checkout Lift | |
uses: actions/checkout@v4 | |
- name: Restore MyPy Cache | |
id: restore-mypy-cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: .mypy_cache | |
# We're using a key suffix / restore-keys prefix trick here to get an updatable cache. | |
# See: https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache | |
key: ${{ matrix.docker-platform || format('{0}-{1}', matrix.os, runner.arch) }}-a-scie-lift-mypy-v1-${{ github.run_id }} | |
restore-keys: ${{ matrix.docker-platform || format('{0}-{1}', matrix.os, runner.arch) }}-a-scie-lift-mypy-v1 | |
- name: Check Formatting & Lints | |
if: matrix.image == '' | |
run: | | |
"${UV}" run dev-cmd ci --skip test | |
- name: Check Formatting & Lints | |
if: matrix.image != '' | |
run: | | |
"${UV}" run dev-cmd docker -- --image ${{ matrix.image }} --arch ${{ matrix.arch }} \ | |
ci --skip test | |
- name: Cache MyPy | |
uses: actions/cache/save@v4 | |
if: github.ref == 'refs/heads/main' | |
with: | |
path: .mypy_cache | |
key: ${{ steps.restore-mypy-cache.outputs.cache-primary-key }} | |
- name: Configure Windows pytest short tmp dir path | |
if: matrix.os == 'windows-2022' || matrix.os == 'windows-arm64' | |
run: | | |
mkdir -p C:/tmp/gha | |
echo PYTEST_ADDOPTS="--basetemp C:/tmp/gha/pytest" >> ${GITHUB_ENV} | |
echo SCIE_BASE=C:/tmp/gha/nce >> ${GITHUB_ENV} | |
- name: Unit Tests | |
if: matrix.image == '' | |
run: | | |
"${UV}" run dev-cmd test -- -vvs | |
- name: Unit Tests | |
if: matrix.image != '' | |
run: | | |
"${UV}" run dev-cmd docker -- --image ${{ matrix.image }} --arch ${{ matrix.arch }} \ | |
test -- -vvs | |
- name: Build & Package | |
if: matrix.image == '' | |
run: | | |
"${UV}" run dev-cmd package | |
- name: Build & Package | |
if: matrix.image != '' | |
run: | | |
"${UV}" run dev-cmd docker -- --image ${{ matrix.image }} --arch ${{ matrix.arch }} \ | |
package | |
- name: Generate Doc Site | |
if: matrix.image == '' | |
run: | | |
"${UV}" run dev-cmd doc linkcheck | |
- name: Generate Doc Site | |
if: matrix.image != '' | |
run: | | |
"${UV}" run dev-cmd docker -- --image ${{ matrix.image }} --arch ${{ matrix.arch }} \ | |
doc linkcheck | |
- name: Cleanup | |
if: always() | |
run: | | |
if [[ -n "${CI_BIN_DIR}" && -d "${CI_BIN_DIR}" ]]; then | |
rm -rf "${CI_BIN_DIR}" | |
fi |