testing #29542
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: 🏗️ Test Install Scripts | |
on: | |
push: | |
paths-ignore: | |
- "**.md" | |
branches: | |
- "long_lived/**" | |
- main | |
- "release/**" | |
release: | |
types: [published] | |
pull_request: | |
paths-ignore: | |
- "**.md" | |
branches: | |
- "**" | |
concurrency: | |
group: ${{ github.event_name == 'pull_request' && format('{0}-{1}', github.workflow_ref, github.event.pull_request.number) || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
test_scripts: | |
name: Native ${{ matrix.os.emoji }} ${{ matrix.arch.emoji }} ${{ matrix.development.name }} - ${{ matrix.editable.name }} | |
runs-on: ${{ matrix.os.runs-on[matrix.arch.matrix] }} | |
strategy: | |
fail-fast: false | |
matrix: | |
python: | |
- major-dot-minor: "3.10" | |
os: | |
- name: Linux | |
emoji: 🐧 | |
runs-on: | |
arm: [Linux, ARM64] | |
intel: ubuntu-latest | |
matrix: linux | |
- name: macOS | |
emoji: 🍎 | |
runs-on: | |
arm: macos-latest | |
intel: macos-13 | |
matrix: macos | |
- name: Windows | |
emoji: 🪟 | |
runs-on: | |
intel: windows-latest | |
matrix: windows | |
arch: | |
- name: ARM | |
emoji: 💪 | |
matrix: arm | |
- name: Intel | |
emoji: 🌀 | |
matrix: intel | |
development: | |
- name: Non-dev | |
value: false | |
- name: Dev | |
value: true | |
editable: | |
- name: Non-edit | |
value: false | |
matrix: non-editable | |
- name: Edit | |
value: true | |
matrix: editable | |
exclude: | |
- os: | |
matrix: windows | |
arch: | |
matrix: arm | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Python environment | |
uses: Chia-Network/actions/setup-python@main | |
with: | |
python-version: ${{ matrix.python.major-dot-minor }} | |
- uses: ./.github/actions/install | |
with: | |
python-version: ${{ matrix.python.major-dot-minor }} | |
development: ${{ matrix.development.value }} | |
editable: ${{ matrix.editable.value }} | |
do-system-installs: true | |
- uses: chia-network/actions/activate-venv@main | |
- name: Run chia --help | |
run: | | |
chia --help | |
- name: Run install-gui script (Linux, macOS) | |
if: matrix.os.matrix != 'windows' | |
run: | | |
sh install-gui.sh | |
- name: Run install-gui script (Windows) | |
if: matrix.os.matrix == 'windows' | |
run: | | |
./Install-gui.ps1 | |
- name: Collect editable info | |
id: editable-info | |
shell: bash | |
run: | | |
echo "pre-edit-version=$(chia version)" >> "$GITHUB_OUTPUT" | |
echo '__version__ = "shooby-doowah"' >> chia/__init__.py | |
echo "post-edit-version=$(chia version)" >> "$GITHUB_OUTPUT" | |
- name: Check editable | |
if: matrix.editable.matrix == 'editable' | |
shell: bash | |
env: | |
PRE_VERSION: ${{ steps.editable-info.outputs.pre-edit-version }} | |
POST_VERSION: ${{ steps.editable-info.outputs.post-edit-version }} | |
run: | | |
[ "$POST_VERSION" = "shooby-doowah" -a "$PRE_VERSION" != "shooby-doowah" ] | |
- name: Check non-editable | |
if: matrix.editable.matrix == 'non-editable' | |
shell: bash | |
env: | |
PRE_VERSION: ${{ steps.editable-info.outputs.pre-edit-version }} | |
POST_VERSION: ${{ steps.editable-info.outputs.post-edit-version }} | |
run: | | |
[ "$POST_VERSION" != "shooby-doowah" -a "$PRE_VERSION" = "$POST_VERSION" ] | |
test_scripts_in_docker: | |
name: Docker ${{ matrix.distribution.name }} ${{ matrix.arch.name }} | |
runs-on: ${{ matrix.os.runs-on[matrix.arch.matrix] }} | |
container: ${{ matrix.distribution.url }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- name: Linux | |
matrix: linux | |
runs-on: | |
intel: ubuntu-latest | |
arm: [linux, arm64] | |
distribution: | |
- name: amazonlinux:2023 | |
type: amazon | |
url: "docker://amazonlinux:2023" | |
- name: arch:latest | |
type: arch | |
url: "docker://archlinux:latest" | |
- name: debian:bullseye | |
type: debian | |
# https://packages.debian.org/bullseye/python/python3 (3.9) | |
url: "docker://debian:bullseye" | |
- name: debian:bookworm | |
type: debian | |
# https://packages.debian.org/bookworm/python/python3 (3.11) | |
url: "docker://debian:bookworm" | |
- name: fedora:37 | |
type: fedora | |
# (37, 3.11) https://packages.fedoraproject.org/search?query=python3&releases=Fedora+37&start=0 | |
url: "docker://fedora:37" | |
- name: fedora:38 | |
type: fedora | |
# (38, 3.11) https://packages.fedoraproject.org/search?query=python3&releases=Fedora+38&start=0 | |
url: "docker://fedora:38" | |
- name: rockylinux:8 | |
type: rocky | |
url: "docker://rockylinux:8" | |
- name: rockylinux:9 | |
type: rocky | |
url: "docker://rockylinux:9" | |
- name: ubuntu:focal (20.04) | |
type: ubuntu | |
# https://packages.ubuntu.com/focal/python3 (20.04, 3.8) | |
url: "docker://ubuntu:focal" | |
- name: ubuntu:jammy (22.04) | |
type: ubuntu | |
# https://packages.ubuntu.com/jammy/python3 (22.04, 3.10) | |
url: "docker://ubuntu:jammy" | |
- name: ubuntu:noble (24.04) | |
type: ubuntu | |
# https://packages.ubuntu.com/noble/python3 (24.04, 3.12) | |
url: "docker://ubuntu:noble" | |
arch: | |
- name: ARM64 | |
matrix: arm | |
- name: Intel | |
matrix: intel | |
exclude: | |
- distribution: | |
type: arch | |
arch: | |
matrix: arm | |
steps: | |
- name: Prepare Amazon Linux | |
if: ${{ matrix.distribution.type == 'amazon' }} | |
run: | | |
yum install --assumeyes git sudo | |
- name: Prepare Arch | |
if: ${{ matrix.distribution.type == 'arch' }} | |
run: | | |
pacman --noconfirm -Syu | |
pacman --noconfirm -S base git sudo openssl-1.1 | |
# The behavior we follow in install.sh is unique with Arch in that | |
# we leave it to the user to install the appropriate version of python, | |
# so we need to install python here in order for the test to succeed. | |
pacman --noconfirm -U --needed https://archive.archlinux.org/packages/p/python/python-3.11.8-1-x86_64.pkg.tar.zst | |
- name: Prepare Debian | |
if: ${{ matrix.distribution.type == 'debian' }} | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
apt-get --yes update | |
apt-get install --yes git lsb-release sudo python3-venv | |
- name: Prepare Fedora | |
if: ${{ matrix.distribution.type == 'fedora' }} | |
run: | | |
yum install --assumeyes git | |
- name: Prepare Rocky | |
if: ${{ matrix.distribution.type == 'rocky' }} | |
run: | | |
yum install --assumeyes git sudo python39 | |
- name: Prepare Ubuntu | |
if: ${{ matrix.distribution.type == 'ubuntu' }} | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
# for bionic | |
apt-get --yes update | |
apt-get install --yes software-properties-common | |
add-apt-repository --yes ppa:git-core/ppa | |
apt-get --yes update | |
apt-get install --yes git lsb-release sudo | |
MINIMUM=3.9 | |
if ! apt satisfy --yes "python3-venv (>= ${MINIMUM})" | |
then | |
apt-get install --yes python${MINIMUM}-venv | |
fi | |
- name: Add safe git directory | |
run: git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
# after installing git so we use that copy | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: ./.github/actions/install | |
with: | |
python-version: ${{ matrix.python-version }} | |
development: true | |
do-system-installs: true | |
- uses: chia-network/actions/activate-venv@main | |
- name: Run chia --help | |
run: | | |
chia --help |