osx #353
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: osx | |
on: | |
schedule: | |
- cron: '0 1 * * *' | |
workflow_dispatch: | |
jobs: | |
osx: | |
# Run for tarantool/tarantool repository only. | |
if: github.repository == 'tarantool/tarantool' | |
runs-on: | |
- 'macos-${{ matrix.osx-version }}-self-hosted' | |
- '${{ matrix.machine-arch }}' | |
timeout-minutes: 60 | |
strategy: | |
fail-fast: false | |
matrix: | |
osx-version: [ 13, 14 ] | |
machine-arch: [ x86_64, aarch64 ] | |
tarantool-branch: | |
- 'master' | |
- 'release/3.0' | |
- 'release/2.11' | |
- 'release/2.10' | |
build-type: [ debug, release ] | |
steps: | |
- name: Prepare checkout | |
uses: tarantool/actions/prepare-checkout@master | |
- name: Sources checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ matrix.tarantool-branch }} | |
fetch-depth: 0 | |
submodules: recursive | |
- uses: ./.github/actions/environment | |
- name: Install deps | |
uses: ./.github/actions/install-deps-osx | |
- name: Run testing | |
run: make -f .test.mk test-osx-${{ matrix.build-type }} | |
- name: Send VK Teams message on failure | |
if: failure() | |
uses: ./.github/actions/report-job-status | |
with: | |
bot-token: ${{ secrets.VKTEAMS_BOT_TOKEN }} | |
- name: Calculate short name for Tarantool branch | |
if: failure() | |
run: > | |
echo "SHORT_BRANCH_NAME=$(basename ${{ matrix.tarantool-branch }})" >> | |
$GITHUB_ENV | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: ${{ format( | |
'osx-{0}-{1}-{2}-{3}', | |
matrix.osx-version, | |
matrix.machine-arch, | |
env.SHORT_BRANCH_NAME, | |
matrix.build-type) }} | |
retention-days: 21 | |
path: ${{ env.VARDIR }}/artifacts | |
- name: Upload artifacts to S3 | |
uses: ./.github/actions/s3-upload-artifact | |
if: ( success() || failure() ) && ( github.ref == 'refs/heads/master' || | |
startsWith(github.ref, 'refs/heads/release/') || | |
startsWith(github.ref, 'refs/tags/') ) | |
with: | |
job-name: ${{ github.job }} (${{ join(matrix.*, ', ') }}) | |
access-key-id: ${{ secrets.MULTIVAC_S3_ACCESS_KEY_ID }} | |
secret-access-key: ${{ secrets.MULTIVAC_S3_SECRET_ACCESS_KEY }} | |
source: ${{ env.VARDIR }}/artifacts | |
# From time to time, this step fails due to the following error: | |
# | |
# Error: Unable to retrieve job ID by provided job name | |
# | |
# The action tries to get job ID by the name via the `get-job-id` action | |
# to compose the proper artifact name. `get-job-id` performs a request | |
# to GitHub for the list of workflow jobs and finds the job by its name | |
# and then gets its ID. | |
# | |
# For some reason, sometimes GitHub doesn't give the complete job list | |
# and there is no chance to find the job and get its ID. At least, it | |
# has been noticed for this workflow with 32 parallel jobs. | |
# | |
# It looks like the issue resides on the GitHub side and the simplest | |
# way to resolve this is to ignore the failure and not fail the whole | |
# workflow due to this GitHub bug. | |
continue-on-error: true |