Build #594
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: | |
push: | |
# Only run on branches (not tags) | |
branches: | |
- '*' | |
workflow_dispatch: | |
workflow_run: | |
workflows: ['Update Mixxx'] | |
types: [completed] | |
jobs: | |
build: | |
runs-on: macos-11 | |
env: | |
DEPS_BASE_NAME: mixxx-deps-arm64-macos | |
ARTIFACT_BASE_NAME: mixxx-arm64-macos | |
VCPKG_DEFAULT_TRIPLET: arm64-osx-min1100 | |
VCPKG_DEFAULT_HOST_TRIPLET: x64-osx-min1015 | |
VCPKG_OVERLAY_TRIPLETS: vcpkg/overlay/triplets | |
VCPKG_OVERLAY_PORTS: vcpkg/overlay/osx:vcpkg/overlay/ports | |
VCPKG_ROOT: ${{ github.workspace }}/vcpkg | |
MIXXX_ROOT: ${{ github.workspace }}/mixxx | |
SCRIPTS_ROOT: ${{ github.workspace }}/scripts | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: '0' # to compute the monotonic version correctly | |
submodules: true | |
- name: Fetch versions and paths | |
run: | | |
for mod in "${{ env.VCPKG_ROOT }}" "${{ env.MIXXX_ROOT }}"; do | |
echo "$(basename "$mod")_commit=$(cd $mod && git rev-parse HEAD)" >> "$GITHUB_ENV" | |
echo "$(basename "$mod")_commit_short=$(cd $mod && git rev-parse --short HEAD)" >> "$GITHUB_ENV" | |
done | |
echo "mixxx_version=$(scripts/mixxx-version)" >> "$GITHUB_ENV" | |
shell: bash | |
- name: Set up build environment | |
run: | | |
${{ env.SCRIPTS_ROOT }}/install-brew-deps | |
xcrun --show-sdk-version | |
# Build dependencies | |
- name: Bootstrap vcpkg | |
run: ${{ env.SCRIPTS_ROOT }}/bootstrap-vcpkg | |
- name: Set up vcpkg cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{ env.VCPKG_ROOT }}/installed | |
# TODO: Include hashed list of installed packages in key? | |
key: vcpkg-installed-${{ env.VCPKG_DEFAULT_TRIPLET }}-${{ env.vcpkg_commit }}-${{ github.ref }}-${{ github.run_number }} | |
restore-keys: | | |
vcpkg-installed-${{ env.VCPKG_DEFAULT_TRIPLET }}-${{ env.vcpkg_commit }}-${{ github.ref }}- | |
vcpkg-installed-${{ env.VCPKG_DEFAULT_TRIPLET }}-${{ env.vcpkg_commit }}- | |
- name: Check disk space | |
run: df -h | |
- name: Output vcpkg dependency graph | |
run: ${{ env.SCRIPTS_ROOT }}/install-vcpkg-deps --graph --no-install --no-remove | |
- name: Install vcpkg packages | |
run: ${{ env.SCRIPTS_ROOT }}/install-vcpkg-deps | |
- name: Upload vcpkg build logs | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: vcpkg-buildlogs | |
path: ${{ env.VCPKG_ROOT }}/buildtrees/**/*.log | |
# Export dependency archive to artifacts | |
- name: Export vcpkg archive | |
run: >- | |
${{ env.SCRIPTS_ROOT }}/vcpkg export | |
--x-all-installed | |
--zip | |
--output="${{ env.DEPS_BASE_NAME }}-${{ env.vcpkg_commit_short }}" | |
- name: Upload vcpkg archive | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.DEPS_BASE_NAME }}-${{ env.vcpkg_commit_short }} | |
path: ${{ env.VCPKG_ROOT }}/${{ env.DEPS_BASE_NAME }}-${{ env.vcpkg_commit_short }}.zip | |
# Build Mixxx | |
- name: Configure build cache size | |
run: ccache -M 500M | |
- name: Set up build cache | |
uses: actions/cache@v3 | |
with: | |
path: $HOME/Library/Caches/ccache | |
key: ccache-${{ env.mixxx_commit }}-${{ github.ref }}-${{ github.run_number }} | |
restore-keys: | | |
ccache-${{ env.mixxx_commit }}-${{ github.ref }}- | |
ccache-${{ env.mixxx_commit }}- | |
ccache- | |
- name: Configure Mixxx build | |
run: >- | |
cmake | |
-G Ninja | |
-B build | |
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake | |
-DCMAKE_BUILD_TYPE=RelWithDebInfo | |
-DMACOS_BUNDLE=ON | |
-DCMAKE_CROSSCOMPILING=1 | |
-DRUN_HAVE_POSIX_REGEX=0 | |
-DCMAKE_C_COMPILER=$(xcrun -find cc) | |
-DCMAKE_CXX_COMPILER=$(xcrun -find c++) | |
-DCMAKE_OSX_DEPLOYMENT_TARGET="11.0" | |
-DCMAKE_OSX_ARCHITECTURES=arm64 | |
-DCMAKE_SYSTEM_PROCESSOR=arm64 | |
-DQT6=ON | |
working-directory: mixxx | |
- name: Upload Mixxx configuration logs | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: mixxx-configurelogs | |
path: ${{ env.MIXXX_ROOT }}/build/CMakeFiles/*.log | |
- name: Build Mixxx | |
run: cmake --build build --target mixxx | |
working-directory: mixxx | |
- name: Package Mixxx | |
run: cpack -G DragNDrop -V && mv *.dmg "mixxx-${{ env.mixxx_version }}.dmg" | |
working-directory: mixxx/build | |
- name: Upload packaged Mixxx binaries | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT_BASE_NAME }} | |
path: ${{ env.MIXXX_ROOT }}/build/*.dmg | |
- name: Create tag | |
if: github.ref == 'refs/heads/main' | |
run: | | |
version="${{ env.mixxx_version }}" | |
tag="v$version" | |
git fetch --tags | |
if git rev-parse "$tag" >/dev/null 2>&1; then | |
echo "tag_created=false" >> "$GITHUB_ENV" | |
else | |
git tag -am "Version $version" "$tag" | |
git push origin "$tag" | |
echo "tag=$tag" >> "$GITHUB_ENV" | |
echo "tag_created=true" >> "$GITHUB_ENV" | |
fi | |
shell: bash | |
- name: Create GitHub release | |
if: ${{ env.tag_created == 'true' }} | |
uses: softprops/action-gh-release@v1 | |
with: | |
tag_name: ${{ env.tag }} | |
name: ${{ env.mixxx_version }} | |
files: ${{ env.MIXXX_ROOT }}/build/*.dmg |