Skip to content

Add Windows on arm64 as a supported platform #581

Add Windows on arm64 as a supported platform

Add Windows on arm64 as a supported platform #581

Workflow file for this run

name: PR
on: pull_request
concurrency:
group: pr-${{ github.ref }}
cancel-in-progress: true
permissions:
packages: read
jobs:
superlinter:
name: Lint bash, docker, markdown, and yaml
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- name: Lint codebase
uses: docker://github/super-linter:v3.8.3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VALIDATE_ALL_CODEBASE: true
VALIDATE_BASH: true
VALIDATE_DOCKERFILE: true
VALIDATE_MD: true
VALIDATE_YAML: true
validate-docker-image-builds:
name: Validate Docker image builds
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- name: Docker build
run: "docker build --pull ."
verify-changelog:
name: Verify CHANGELOG is valid
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- name: Verify CHANGELOG
uses: docker://ghcr.io/ponylang/changelog-tool:release
with:
args: changelog-tool verify
# Currently, GitHub actions supplied by GH like checkout and cache do not work
# in musl libc environments on arm64. We can work around this by running
# those actions on the host and then "manually" doing our work that would
# normally be done "in the musl container" by starting the container ourselves
# for various steps by invoking docker directly.
#
# This is not in line with our standard pattern of "just do it all in the
# container" but is required to work around the GitHub actions limitation
# documented above.
arm64-alpine3_21-bootstrap:
name: arm64 Alpine 3.21 bootstrap
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Pull Docker image
run: docker pull ghcr.io/ponylang/ponyup-ci-alpine3.21-bootstrap-tester:20250603
- name: Bootstrap test
run: |
docker run --rm \
-v ${{ github.workspace }}:/root/project \
-w /root/project \
-e SSL=0.9.0 \
ghcr.io/ponylang/ponyup-ci-alpine3.21-bootstrap-tester:20250603 \
.ci-scripts/test-bootstrap.sh
arm64-ubuntu24_04-bootstrap:
name: arm64 Ubuntu 24.04 bootstrap
runs-on: ubuntu-24.04-arm
container:
image: ghcr.io/ponylang/ponyup-ci-ubuntu24.04-bootstrap-tester:20250603
steps:
- uses: actions/checkout@v4.1.1
- name: Bootstrap test
run: SSL=3.0.x .ci-scripts/test-bootstrap.sh
x86-64-alpine3_20-bootstrap:
name: x86-64 Alpine 3.20 bootstrap
runs-on: ubuntu-latest
container:
image: ghcr.io/ponylang/ponyup-ci-alpine3.20-bootstrap-tester:20250603
steps:
- uses: actions/checkout@v4.1.1
- name: Bootstrap test
run: SSL=0.9.0 .ci-scripts/test-bootstrap.sh
x86-64-alpine3_21-bootstrap:
name: x86-64 Alpine 3.21 bootstrap
runs-on: ubuntu-latest
container:
image: ghcr.io/ponylang/ponyup-ci-alpine3.21-bootstrap-tester:20250603
steps:
- uses: actions/checkout@v4.1.1
- name: Bootstrap test
run: SSL=0.9.0 .ci-scripts/test-bootstrap.sh
x86-64-ubuntu24_04-bootstrap:
name: x86-64 Ubuntu 24.04 bootstrap
runs-on: ubuntu-latest
container:
image: ghcr.io/ponylang/ponyup-ci-ubuntu24.04-bootstrap-tester:20250603
steps:
- uses: actions/checkout@v4.1.1
- name: Bootstrap test
run: SSL=3.0.x .ci-scripts/test-bootstrap.sh
alpine-bootstrap:
name: Alpine bootstrap
runs-on: ubuntu-latest
container:
image: ghcr.io/ponylang/ponyup-ci-alpine-bootstrap-tester:20241204
steps:
- uses: actions/checkout@v4.1.1
- name: Bootstrap test
run: SSL=0.9.0 .ci-scripts/test-bootstrap.sh
fedora41-bootstrap:
name: Fedora 41 bootstrap
runs-on: ubuntu-latest
container:
image: ghcr.io/ponylang/ponyup-ci-fedora41-bootstrap-tester:20241205
steps:
- uses: actions/checkout@v4.1.1
- name: Bootstrap test
run: SSL=3.0.x .ci-scripts/test-bootstrap.sh
ubuntu22_04-bootstrap:
name: Ubuntu 22.04 bootstrap
runs-on: ubuntu-latest
container:
image: ghcr.io/ponylang/ponyup-ci-ubuntu22.04-bootstrap-tester:20230830
steps:
- uses: actions/checkout@v4.1.1
- name: Bootstrap test
run: SSL=3.0.x .ci-scripts/test-bootstrap.sh
arm64-macos-bootstrap:
name: arm64 MacOS bootstrap
runs-on: macos-15
steps:
- uses: actions/checkout@v4.1.1
- name: Install dependencies
# libressl gets installed but is returning a non-zero exit code,
# so we have to soldier on through the stupidity
continue-on-error: true
run: |
brew update
brew install libressl
- name: Bootstrap test
run: SSL=0.9.0 .ci-scripts/test-bootstrap.sh
x86-64-macos-bootstrap:
name: x86-64 MacOS bootstrap
runs-on: macos-13
steps:
- uses: actions/checkout@v4.1.1
- name: Install dependencies
# libressl gets installed but is returning a non-zero exit code,
# so we have to soldier on through the stupidity
continue-on-error: true
run: |
brew update
brew install libressl
- name: Bootstrap test
run: SSL=0.9.0 .ci-scripts/test-bootstrap.sh
# Currently, GitHub actions supplied by GH like checkout and cache do not work
# in musl libc environments on arm64. We can work around this by running
# those actions on the host and then "manually" doing our work that would
# normally be done "in the musl container" by starting the container ourselves
# for various steps by invoking docker directly.
#
# This is not in line with our standard pattern of "just do it all in the
# container" but is required to work around the GitHub actions limitation
# documented above.
arm64-linux:
name: arm64 Linux tests
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
- name: Pull Docker image
run: docker pull ghcr.io/ponylang/shared-docker-ci-arm64-unknown-linux-builder-with-libressl-4.0.0:latest
- name: Test with most recent ponyc release
run: |
docker run --rm \
-v ${{ github.workspace }}:/root/project \
-w /root/project \
ghcr.io/ponylang/shared-docker-ci-arm64-unknown-linux-builder-with-libressl-4.0.0:latest \
make test
x86-64-linux:
name: x86-64 Linux tests
runs-on: ubuntu-latest
container:
image: ghcr.io/ponylang/shared-docker-ci-x86-64-unknown-linux-builder-with-libressl-4.0.0:release
steps:
- uses: actions/checkout@v4.1.1
- name: Test with the most recent ponyc release
run: make test
x86-64-macos:
name: x86-64 MacOS tests
runs-on: macos-13
steps:
- uses: actions/checkout@v4.1.1
- name: install pony tools
run: bash .ci-scripts/macos-x86-install-pony-tools.bash release
- name: Test with the most recent ponyc release
run: |
export PATH="/tmp/corral/bin:/tmp/ponyc/bin/:$PATH"
make test
arm64-macos:
name: arm64 MacOS tests
runs-on: macos-15
steps:
- uses: actions/checkout@v4.1.1
- name: install pony tools
run: bash .ci-scripts/macos-arm64-install-pony-tools.bash release
- name: Test with the most recent ponyc release
run: |
export PATH="/tmp/corral/bin:/tmp/ponyc/bin/:$PATH"
make test
x86-64-windows:
name: x86-64 Windows tests
runs-on: windows-2022
steps:
- uses: actions/checkout@v4.1.1
- name: Test with most recent ponyc release
run: |
Invoke-WebRequest https://dl.cloudsmith.io/public/ponylang/releases/raw/versions/latest/ponyc-x86-64-pc-windows-msvc.zip -OutFile C:\ponyc.zip;
Expand-Archive -Path C:\ponyc.zip -DestinationPath C:\ponyc;
Invoke-WebRequest https://dl.cloudsmith.io/public/ponylang/releases/raw/versions/latest/corral-x86-64-pc-windows-msvc.zip -OutFile C:\corral.zip;
Expand-Archive -Path C:\corral.zip -DestinationPath C:\ponyc;
$env:PATH = 'C:\ponyc\bin;' + $env:PATH;
.\make.ps1 -Command fetch 2>&1
.\make.ps1 -Command build 2>&1
.\make.ps1 -Command test 2>&1
arm64-windows:
name: arm64 Windows tests
runs-on: windows-11-arm
steps:
- uses: actions/checkout@v4.1.1
- name: Test with most recent ponyc release
run: |
Invoke-WebRequest https://dl.cloudsmith.io/public/ponylang/nightlies/raw/versions/latest/ponyc-arm64-pc-windows-msvc.zip -OutFile C:\ponyc.zip;
Expand-Archive -Force -Path C:\ponyc.zip -DestinationPath C:\ponyc;
Invoke-WebRequest https://dl.cloudsmith.io/public/ponylang/nightlies/raw/versions/latest/corral-arm64-pc-windows-msvc.zip -OutFile C:\corral.zip;
Expand-Archive -Force -Path C:\corral.zip -DestinationPath C:\ponyc;
$env:PATH = 'C:\ponyc\bin;' + $env:PATH;
.\make.ps1 -Command fetch 2>&1
.\make.ps1 -Command build 2>&1
.\.ci-scripts\machine-type.ps1 -Binary C:\a\ponyup\ponyup\build\release\ponyup.exe 2>&1
.\make.ps1 -Command test 2>&1
.\.ci-scripts\machine-type.ps1 -Binary C:\a\ponyup\ponyup\build\release\test.exe 2>&1