Skip to content

Fix installer.sh to only require /bin/sh. #550

Fix installer.sh to only require /bin/sh.

Fix installer.sh to only require /bin/sh. #550

Workflow file for this run

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