Skip to content

macOS binaries workflow with caching #84

macOS binaries workflow with caching

macOS binaries workflow with caching #84

Workflow file for this run

name: Passenger generic binaries tests CI tests
env:
ENTERPRISE: 0
on:
push: {}
pull_request: {}
jobs:
# build_linux:
# name: "Binary automation Linux-${{ matrix.arch }}"
# strategy:
# fail-fast: false
# matrix:
# include:
# - arch: x86_64
# runner: ubuntu-24.04
# - arch: aarch64
# runner: passenger-ubuntu-24.04-arm64-4cpu
# runs-on: ${{ matrix.runner }}
# env:
# WORKSPACE: ${{ github.workspace }}
# OUTPUT_DIR: ${{ github.workspace }}/output-linux-${{ matrix.arch }}
# ARCHITECTURE: ${{ matrix.arch }}
# CACHE_DIR: ${{ github.workspace }}/cache/linux-${{ matrix.arch }}/executor-${{ github.run_id }}
# RUNTIME_DIR: ${{ github.workspace }}/cache/linux-${{ matrix.arch }}/executor-${{ github.run_id }}/runtime
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: docker/setup-buildx-action@v3
# - run: ./dev/ci/tests/binaries/build-linux
# - uses: actions/upload-artifact@v4
# with:
# name: binaries-linux-${{ matrix.arch }}
# path: 'output-linux-${{ matrix.arch }}/**/*'
# - run: ./dev/ci/tests/binaries/test-linux
build_macos:
name: Binaries macOS ${{ matrix.arch }}
strategy:
fail-fast: false
matrix:
include:
- runner: macos-13
arch: x86_64
- runner: macos-14
arch: arm64
runs-on: ${{ matrix.runner }}
environment: dev
permissions:
id-token: write
env:
WORKSPACE: ${{ github.workspace }}
OUTPUT_DIR: ${{ github.workspace }}/output
ARCHITECTURE: ${{ matrix.arch }}
CACHE_DIR: ${{ github.workspace }}/cache/macos-${{ matrix.arch }}/executor-${{ github.run_id }}
RUNTIME_DIR: ${{ github.workspace }}/cache/macos-${{ matrix.arch }}/executor-${{ github.run_id }}/runtime
steps:
- uses: actions/checkout@v4
with:
submodules: true
# - uses: azure/login@v2
# with:
# tenant-id: ${{ vars.AZURE_TENANT_ID }}
# client-id: ${{ vars.AZURE_CLIENT_ID }}
# subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Install RVM
run: set -o pipefail && curl -fsSL https://get.rvm.io | bash
- name: Install Rubies
run: xargs -I{} "$HOME/.rvm/bin/rvm" install ruby-{} < packaging/binaries/shared/definitions/ruby_versions
- run: mkdir cache runtime
working-directory: packaging/binaries
- name: Determine runtime version
id: determine_runtime_version
run: |
RUNTIME_VERSION=$(cat shared/definitions/macos_runtime_version)
echo "version=$RUNTIME_VERSION" >> "$GITHUB_OUTPUT"
working-directory: packaging/binaries
- name: Check whether precompiled runtime exists
id: check_precompiled_runtime_exists
run: |
OUTPUT=$(
az storage blob exists \
-c "$AZURE_CI_STORAGE_CONTAINER_NAME" \
-n "macos-runtime-$SUFFIX.tar.zstd" \
-o tsv
)
echo "exists=$OUTPUT" >> "$GITHUB_OUTPUT"
env:
AZURE_STORAGE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
AZURE_CI_STORAGE_CONTAINER_NAME: ${{ vars.SCCACHE_AZURE_BLOB_CONTAINER }}
SUFFIX: ${{ steps.determine_runtime_version.outputs.version }}-${{ matrix.runner }}-${{ matrix.arch }}
- name: Download precompiled runtime
run: >
az storage blob download
-c "$AZURE_CI_STORAGE_CONTAINER_NAME"
-n "macos-runtime-$SUFFIX.tar.zstd"
-f macos-runtime.tar.zstd
--no-progress
env:
AZURE_STORAGE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
AZURE_CI_STORAGE_CONTAINER_NAME: ${{ vars.SCCACHE_AZURE_BLOB_CONTAINER }}
SUFFIX: ${{ steps.determine_runtime_version.outputs.version }}-${{ matrix.runner }}-${{ matrix.arch }}
if: steps.check_precompiled_runtime_exists.outputs.exists == 'True'
working-directory: packaging/binaries
- name: Extract precompiled runtime
run: tar -C runtime -x --zstd -f macos-runtime.tar.zstd && rm macos-runtime.tar.zstd
if: steps.check_precompiled_runtime_exists.outputs.exists == 'True'
working-directory: packaging/binaries
- name: Compile runtime
run: ./macos/setup-runtime -c cache -o runtime -j 4
if: steps.check_precompiled_runtime_exists.outputs.exists != 'True'
working-directory: packaging/binaries
- name: Package compiled runtime
run: tar -C runtime -c --zstd -f macos-runtime.tar.zstd .
if: steps.check_precompiled_runtime_exists.outputs.exists != 'True'
working-directory: packaging/binaries
- name: Store compiled runtime
run: >
az storage blob upload
-c "$AZURE_CI_STORAGE_CONTAINER_NAME"
-n "macos-runtime-$SUFFIX.tar.zstd"
-f macos-runtime.tar.zstd
--overwrite
&&
rm macos-runtime.tar.zstd
env:
AZURE_STORAGE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
AZURE_CI_STORAGE_CONTAINER_NAME: ${{ vars.SCCACHE_AZURE_BLOB_CONTAINER }}
SUFFIX: ${{ steps.determine_runtime_version.outputs.version }}-${{ matrix.runner }}-${{ matrix.arch }}
if: steps.check_precompiled_runtime_exists.outputs.exists != 'True'
working-directory: packaging/binaries
- run: ./dev/ci/tests/binaries/build-macos
- uses: actions/upload-artifact@v4
with:
name: binaries-macos-${{ matrix.arch }}
path: 'output-macos-${{ matrix.arch }}/**/*'
- run: ./dev/ci/tests/binaries/test-macos