Add macOS builds #30
Workflow file for this run
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: Build | |
on: | |
workflow_dispatch: | |
inputs: | |
otp-ref-name: | |
default: "OTP-27.0.1" | |
openssl-version: | |
default: "3.1.6" | |
# TODO: remove push: before merging | |
push: | |
concurrency: builds_txt | |
jobs: | |
build: | |
name: "Build OTP macOS ${{ matrix.arch }}" | |
runs-on: macos-latest | |
env: | |
# TODO: Remove ` || ...` before merging. | |
OTP_REF_NAME: ${{ inputs.otp-ref-name || 'OTP-27.0.1' }} | |
OPENSSL_VERSION: ${{ inputs.openssl-version || '3.1.6' }} | |
OTP_DIR: /tmp/builds/otp-${{ inputs.otp-ref-name || 'OTP-27.0.1' }}-openssl-${{ inputs.openssl-version || '3.1.6' }}-macos-${{ matrix.arch }} | |
# TODO: use {{ github.sha }} | |
OTP_REF: OTP-27.0.1 | |
strategy: | |
matrix: | |
arch: [amd64, arm64] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: /tmp/builds/openssl-${{ env.OPENSSL_VERSION }}-macos-${{ matrix.arch }} | |
key: openssl-${{ env.OPENSSL_VERSION }}-macos-${{ matrix.arch }} | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ env.OTP_DIR }} | |
key: otp-${{ env.OTP_REF_NAME }}-openssl-${{ env.OPENSSL_VERSION }}-macos-${{ matrix.arch }} | |
- name: Build | |
run: | | |
sh priv/scripts/otp/build_otp_macos.sh "${{ env.OTP_REF_NAME }}" "${{ env.OTP_REF_NAME }}" "${{ matrix.arch }}" | |
- name: Upload | |
run: | | |
function purge_key() { | |
curl \ | |
--fail \ | |
--retry 10 \ | |
-X POST \ | |
-H "Fastly-Key: ${FASTLY_KEY}" \ | |
-H "Accept: application/json" \ | |
-H "Content-Length: 0" \ | |
"https://api.fastly.com/service/${FASTLY_SERVICE_ID}/purge/$1" | |
} | |
ref_name=${{ env.OTP_REF_NAME }} | |
tgz=${{ env.OTP_REF_NAME }}.tar.gz | |
tar czf ${tgz} --cd ${{ env.OTP_DIR }} . | |
s3_base_url="s3://${{ env.AWS_S3_BUCKET }}/builds/otp/${{ matrix.arch }}/macos" | |
# Upload tar.gz | |
surrogate_key="builds/otp/${{ matrix.arch }}/macos/${{ env.OTP_REF_NAME }}" | |
aws s3 cp \ | |
${tgz} \ | |
"${s3_base_url}/${tgz}" \ | |
--cache-control "public,max-age=3600" \ | |
--metadata '{"surrogate-key":"builds builds/otp ${surrogate_key}","surrogate-control":"public,max-age=604800"}' | |
purge_key ${surrogate_key} | |
# Upload builds.txt | |
date=$(date -u '+%Y-%m-%dT%H:%M:%SZ') | |
build_sha256=$(shasum -a 256 $tgz | cut -d ' ' -f 1) | |
aws s3 cp ${s3_base_url}/builds.txt builds.txt || true | |
touch builds.txt | |
sed -i.bak "/^${ref_name} /d" builds.txt | |
echo -e "${ref_name} ${{ env.OTP_REF }} ${date} ${build_sha256}\n$(cat builds.txt)" > builds.txt | |
sort -u -k1,1 -o builds.txt builds.txt | |
surrogate_key="builds/otp/${{ matrix.arch }}/macos/builds.txt" | |
aws s3 cp \ | |
builds.txt \ | |
${s3_base_url}/builds.txt \ | |
--cache-control "public,max-age=3600" \ | |
--metadata '{"surrogate-key":"builds builds/otp ${surrogate_key}","surrogate-control":"public,max-age=604800"}' | |
purge_key ${surrogate_key} | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.BUILDS_AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.BUILDS_AWS_SECRET_ACCESS_KEY }} | |
AWS_REGION: ${{ secrets.BUILDS_AWS_REGION }} | |
AWS_S3_BUCKET: ${{ secrets.BUILDS_AWS_S3_BUCKET }} | |
FASTLY_SERVICE_ID: ${{ secrets.BUILDS_FASTLY_SERVICE_ID }} | |
FASTLY_KEY: ${{ secrets.BUILDS_FASTLY_KEY }} |