Add Windows on arm64 as a supported platform #574
Workflow file for this run
This file contains hidden or 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: 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 | |
Get-ChildItem -Path "C:\a\ponyup\ponyup\_corral\github_com_ponylang_net_ssl" -Recurse | |
Get-ChildItem -Path "C:\a\ponyup\ponyup\_corral\github_com_ponylang_crypto" -Recurse | |
.\make.ps1 -Command build 2>&1 | |
.\make.ps1 -Command test 2>&1 |