From 1f16e1f61c30686910f2c3e7e014574530e19c41 Mon Sep 17 00:00:00 2001 From: Andrew Plotner Date: Mon, 11 Mar 2024 02:27:34 -0400 Subject: [PATCH] Add M1 builds to CI workflow (Currently w/out Crashpad enabled!) Have the CI automatically create M1 mac builds. Python2.7 building is removed because Python2.7 errors when trying to build on ARM, and Python3 building was changed to build a later Python version because Python3.8 is not available for ARM. TODO: Crashpad doesn't seem to want to work with ARM macs, figure out how to fix this later. --- .github/workflows/ci-workflow.yml | 90 +++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 9d1fcd1da2..89e8f5166b 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -97,6 +97,96 @@ jobs: with: files: ${{github.workspace}}/main/build/*.tar.gz + macos_aarch64: + name: macOS aarch64 ${{matrix.cfg.name}} + runs-on: ${{matrix.cfg.os}} + strategy: + fail-fast: false + matrix: + cfg: + - { os: macos-14, name: "Sonoma", dist: true } + + steps: + + - name: Checkout Etterna + uses: actions/checkout@v3 + with: + path: main + + - name: Checkout CrashpadTools + uses: actions/checkout@v3 + with: + repository: etternagame/CrashpadTools + path: tools + + - name: Install homebrew packages + run: brew install cmake nasm ninja openssl + + - name: Setup Python 3 + uses: actions/setup-python@v4 + with: + python-version: '3.12' + + - name: Generate CMake + run: mkdir main/build && cd main/build && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_CRASHPAD=OFF -G Ninja .. + + - name: Build Project + run: cd main/build && ninja + + - name: Generate binary + if: ${{matrix.cfg.dist}} + run: cd main/build && cpack + + - name: Upload Binary + if: ${{matrix.cfg.dist}} + uses: actions/upload-artifact@v3 + with: + name: "Etterna - macOS aarch64" + path: '${{github.workspace}}/main/build/*.dmg' + + - name: Update Environment Variables + if: ${{matrix.cfg.dist}} + run: | + echo "${{github.workspace}}/tools/mac" >> $GITHUB_PATH + echo "ETTERNA_ARCH=aarch64" >> $GITHUB_ENV + + - name: Generate Symbols + if: ${{matrix.cfg.dist}} + run: | + echo "Running dsymutil..." + dsymutil -o ${{github.workspace}}/main/Etterna.dsym main/Etterna.app/Contents/MacOS/Etterna > /dev/null + echo "Dumping Symbols..." + dump_syms ${{github.workspace}}/main/Etterna.dsym main/Etterna.app/Contents/MacOS/Etterna > ${{github.workspace}}/main/Etterna.sym + echo "Stripping debug symbols from binary..." + strip main/Etterna.app/Contents/MacOS/Etterna + + - name: Prepare symbols for upload artifacts + if: ${{matrix.cfg.dist}} + run: cd main && ${{github.workspace}}/main/.ci/prepare_symbols.py + + - name: Upload Symbols to action artifacts + if: ${{matrix.cfg.dist}} + uses: actions/upload-artifact@v3 + with: + name: Etterna Symbols - ${{github.sha}} + path: '${{github.workspace}}/main/EtternaSymbolsUploadDir' + + - name: Get version for CrashServer Upload + id: get_version + if: ${{ matrix.cfg.dist && github.event_name == 'release' && github.event.action == 'published' }} + run: | + echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/} + + - name: Upload Symbols to Crash Server + if: ${{ matrix.cfg.dist && github.event_name == 'release' && github.event.action == 'published' }} + run: symupload ${{github.workspace}}/main/Etterna.sym "https://crash.etterna.dev/api/symbol/upload?api_key=${{secrets.CRASHSERVER_API_KEY}}&version=${{ steps.get_version.outputs.VERSION }}" + + - name: Upload files to Release + uses: softprops/action-gh-release@v1 + if: ${{ matrix.cfg.dist && github.event_name == 'release' && github.event.action == 'published' }} + with: + files: ${{github.workspace}}/main/build/*.dmg + macos: name: macOS x64 ${{matrix.cfg.name}} runs-on: ${{matrix.cfg.os}}