Skip to content

macos-arm64

macos-arm64 #27

Workflow file for this run

name: macos-arm64
on:
schedule:
- cron: "0 2 * * 2"
push:
branches: [ main ]
tags: [ v* ]
paths-ignore:
- .github/workflows/ubuntu.yml
- .github/workflows/windows.yml
- .github/workflows/alpine.yml
- .github/workflows/macos-x86_64.yml
- .github/workflows/release_tag.yml
- .cirrus.*
- Makefile.win
pull_request:
paths-ignore:
- .github/workflows/ubuntu.yml
- .github/workflows/windows.yml
- .github/workflows/alpine.yml
- .github/workflows/macos-x86_64.yml
- .github/workflows/release_tag.yml
- .cirrus.*
- Makefile.win
workflow_dispatch:
concurrency:
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
cancel-in-progress: true
jobs:
# https://wildwolf.name/github-actions-how-to-avoid-running-the-same-workflow-multiple-times/
prepare:
runs-on: ubuntu-latest
outputs:
head_tag: ${{ steps.check.outputs.head_tag }}
foreign_pr: ${{ steps.check.outputs.foreign_pr }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Retrieve tags
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* || true
- name: Set output variables
id: check
run: |
fpr="no"
tag=""
if [[ "${{ github.ref }}" == refs/heads/* ]]; then
tag="$(git tag --points-at HEAD)"
elif [[ "${{ github.ref }}" == refs/pull/* ]] && [ "${{ github.event.pull_request.head.repo.full_name }}" != "${{ github.event.pull_request.base.repo.full_name }}" ]; then
fpr="yes"
fi
echo "foreign_pr=${fpr}" >> $GITHUB_OUTPUT
echo "head_tag=${tag}" >> $GITHUB_OUTPUT
build:
runs-on: macos-14
needs: prepare
if: "(github.event_name == 'push' && needs.prepare.outputs.head_tag == '') || github.event_name == 'pull_request' || github.event_name == 'schedule'"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup environment
run: cat common.env >> $GITHUB_ENV
- name: Setup Tebako
uses: tamatebako/tebako/.github/actions/setup-tebako@main
with:
cache: build
cache_ver: ${{ env.CACHE_VER }}
cache_path: ${{ env.TEBAKO_DIR }}
ruby_version: ${{ env.RUBY_VER }}
bundler_version: ${{ env.BUNDLER_VER }}
- name: package metanorma
run: make build/bin/metanorma-darwin-arm64
- uses: actions/upload-artifact@v4
with:
name: metanorma-darwin-arm64
path: build/bin/metanorma-darwin-arm64
- name: Verify packaging
run: |
build/bin/metanorma-darwin-arm64 --tebako-extract extracted_source_filesystem
diff -r extracted_source_filesystem .archive/tebako/output/source_filesystem
- name: Smoke test
run: build/bin/metanorma-darwin-arm64 help
build-matrix:
uses: metanorma/ci/.github/workflows/build-sample-matrix.yml@main
with:
smoke: false
flavors-only: true
public-only: true
test:
needs: [build, build-matrix]
runs-on: macos-14
continue-on-error: ${{ matrix.flavor.experimental }}
strategy:
max-parallel: 5
fail-fast: false
matrix: ${{ fromJson(needs.build-matrix.outputs.samples-matrix) }}
steps:
- uses: actions/checkout@v4
- run: rm Gemfile
- if: matrix.flavor.id == 'ietf'
uses: metanorma/ci/xml2rfc-setup-action@main
- uses: actions/download-artifact@v4
with:
name: metanorma-darwin-arm64
path: build/bin
- run: chmod a+x build/bin/metanorma-darwin-arm64
- uses: actions/cache@v4
with:
path: ~/.relaton
key: relaton-macos-${{ matrix.flavor.id }}
restore-keys: relaton-macos-${{ matrix.flavor.id }}
- name: Fetch samples (${{ matrix.flavor.id }})
uses: actions/checkout@v4
with:
submodules: recursive
repository: metanorma/mn-samples-${{ matrix.flavor.id }}
token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
path: ${{ github.workspace }}/samples
fetch-depth: 1
- name: Test (${{ matrix.flavor.id }})
timeout-minutes: 45
run: |
build/bin/metanorma-darwin-arm64 \
site generate samples \
-c samples/metanorma.yml \
-o site-${{ matrix.flavor.id }} \
--agree-to-terms
- uses: actions/upload-artifact@v4
with:
name: site-${{ matrix.flavor.id }}
path: site-${{ matrix.flavor.id }}
release:
if: startsWith(github.ref, 'refs/tags/')
runs-on: macos-14
needs: test
steps:
- uses: actions/download-artifact@v4
with:
name: metanorma-darwin-arm64
path: build/bin
- name: Package binary into archive
run: |
chmod a+x build/bin/metanorma-darwin-arm64
cp build/bin/metanorma-darwin-arm64 metanorma-darwin-arm64
tar -czvf metanorma-darwin-arm64.tgz metanorma-darwin-arm64
- name: Calculate SHA256 hash
run: |
brew install coreutils
sha256sum metanorma-darwin-arm64.tgz | cut -d ' ' -f1 > metanorma-darwin-arm64.tgz.sha256.txt
- uses: softprops/action-gh-release@v1
with:
files: |
metanorma-darwin-arm64.tgz
metanorma-darwin-arm64.tgz.sha256.txt
- uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
repository: metanorma/homebrew-metanorma
event-type: ${{ github.repository }}
client-payload: '{ "ref": "${{ github.ref }}" }'