mirror of
https://github.com/strawberrymusicplayer/strawberry
synced 2025-02-04 03:17:30 +01:00
CI: Add macOS arm64 build and upload path
This commit is contained in:
parent
5df6066150
commit
fe7e0ffbba
73
.github/workflows/build.yml
vendored
73
.github/workflows/build.yml
vendored
@ -757,16 +757,21 @@ jobs:
|
|||||||
|
|
||||||
build-macos:
|
build-macos:
|
||||||
name: Build macOS
|
name: Build macOS
|
||||||
runs-on: macos-11
|
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
arch: [ 'x86_64' ]
|
runner: [ 'macos-11', 'macos-arm64' ]
|
||||||
buildtype: [ 'release' ]
|
buildtype: [ 'release' ]
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.runner }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
- name: Set arch
|
||||||
|
shell: bash
|
||||||
|
run: echo "arch=$(uname -m)" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Set buildtype
|
- name: Set buildtype
|
||||||
run: echo "buildtype=$(echo ${{matrix.buildtype}} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
|
run: echo "buildtype=$(echo ${{matrix.buildtype}} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
|
||||||
|
|
||||||
@ -774,6 +779,7 @@ jobs:
|
|||||||
run: echo "cmake_buildtype=$(echo ${{env.buildtype}} | awk '{print toupper(substr($0,0,1))tolower(substr($0,2))}')" >> $GITHUB_ENV
|
run: echo "cmake_buildtype=$(echo ${{env.buildtype}} | awk '{print toupper(substr($0,0,1))tolower(substr($0,2))}')" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Uninstall homebrew
|
- name: Uninstall homebrew
|
||||||
|
if: matrix.runner == 'macos-11'
|
||||||
run: |
|
run: |
|
||||||
curl -sfLO https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh
|
curl -sfLO https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh
|
||||||
chmod +x ./uninstall.sh
|
chmod +x ./uninstall.sh
|
||||||
@ -786,19 +792,19 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Download macOS dependencies
|
- name: Download macOS dependencies
|
||||||
run: curl -f -O -L https://github.com/strawberrymusicplayer/strawberry-macos-dependencies/releases/latest/download/strawberry-macos-${{matrix.arch}}-${{env.buildtype}}.tar.xz
|
run: curl -f -O -L https://github.com/strawberrymusicplayer/strawberry-macos-dependencies/releases/latest/download/strawberry-macos-${{env.arch}}-${{env.buildtype}}.tar.xz
|
||||||
|
|
||||||
- name: Extract macOS dependencies
|
- name: Extract macOS dependencies
|
||||||
run: sudo tar -C / -xf strawberry-macos-${{matrix.arch}}-${{env.buildtype}}.tar.xz
|
run: sudo tar -C / -xf strawberry-macos-${{env.arch}}-${{env.buildtype}}.tar.xz
|
||||||
|
|
||||||
- name: Set prefix path
|
- name: Set prefix path
|
||||||
run: echo "prefix_path=/opt/strawberry_macos_${{matrix.arch}}_${{env.buildtype}}" >> $GITHUB_ENV
|
run: echo "prefix_path=/opt/strawberry_macos_${{env.arch}}_${{env.buildtype}}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Update PATH
|
- name: Update PATH
|
||||||
run: echo "${{env.prefix_path}}/bin" >> $GITHUB_PATH
|
run: echo "${{env.prefix_path}}/bin" >> $GITHUB_PATH
|
||||||
|
|
||||||
- name: Change rpath for lconvert
|
- name: Change rpath for lconvert
|
||||||
run: sudo install_name_tool -change @rpath/QtCore.framework/Versions/A/QtCore /opt/strawberry_macos_x86_64_release/lib/QtCore.framework/QtCore /opt/strawberry_macos_x86_64_release/bin/lconvert
|
run: sudo install_name_tool -change @rpath/QtCore.framework/Versions/A/QtCore /opt/strawberry_macos_${{env.arch}}_release/lib/QtCore.framework/QtCore /opt/strawberry_macos_${{env.arch}}_release/bin/lconvert
|
||||||
|
|
||||||
- name: Create Build Environment
|
- name: Create Build Environment
|
||||||
run: cmake -E make_directory build
|
run: cmake -E make_directory build
|
||||||
@ -852,26 +858,34 @@ jobs:
|
|||||||
working-directory: build
|
working-directory: build
|
||||||
run: make dmg
|
run: make dmg
|
||||||
|
|
||||||
- name: Upload artifacts
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: macos
|
|
||||||
path: build/*.dmg
|
|
||||||
|
|
||||||
- name: SSH key setup
|
- name: SSH key setup
|
||||||
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' || github.ref == 'refs/heads/macos'
|
if: matrix.runner == 'macos-11' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' || github.ref == 'refs/heads/macos')
|
||||||
uses: shimataro/ssh-key-action@v2
|
uses: shimataro/ssh-key-action@v2
|
||||||
with:
|
with:
|
||||||
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}}
|
known_hosts: ${{secrets.SSH_KNOWN_HOSTS}}
|
||||||
key: ${{ secrets.SSH_KEY }}
|
key: ${{ secrets.SSH_KEY }}
|
||||||
|
|
||||||
|
- name: Set is release
|
||||||
|
run: echo "is_release=$(grep '^\s*set\s*(\s*INCLUDE_GIT_REVISION\s\+OFF\s*)\s*$' cmake/Version.cmake >/dev/null 2>&1 && echo 1 || echo 0)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Get release version
|
||||||
|
run: echo "release_version=$(git describe --tags --exact-match ${GITHUB_SHA} 2>/dev/null | head -1)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Set Upload path
|
||||||
|
run: |
|
||||||
|
if [ "${{env.is_release}}" = "1" ] && ! [ "${{env.release_version}}" = "" ]; then
|
||||||
|
echo "upload_path=${{secrets.DOWNLOADS_PATH}}/stable_releases/macos" >> $GITHUB_ENV
|
||||||
|
else
|
||||||
|
echo "upload_path=${{secrets.DOWNLOADS_PATH}}/development_releases/macos" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Create server path
|
- name: Create server path
|
||||||
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' || github.ref == 'refs/heads/macos'
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' || github.ref == 'refs/heads/macos'
|
||||||
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{secrets.BUILDS_PATH}}/macos
|
run: ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}} mkdir -p ${{env.upload_path}}
|
||||||
|
|
||||||
- name: rsync
|
- name: rsync
|
||||||
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' || github.ref == 'refs/heads/macos'
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci' || github.ref == 'refs/heads/macos'
|
||||||
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var build/*.dmg ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/macos/
|
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var build/*.dmg ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{env.upload_path}}/
|
||||||
|
|
||||||
|
|
||||||
build-macos-homebrew:
|
build-macos-homebrew:
|
||||||
@ -1674,7 +1688,6 @@ jobs:
|
|||||||
- build-mageia
|
- build-mageia
|
||||||
- build-debian
|
- build-debian
|
||||||
- build-ubuntu
|
- build-ubuntu
|
||||||
- build-macos
|
|
||||||
- build-windows-mingw
|
- build-windows-mingw
|
||||||
- build-windows-msvc
|
- build-windows-msvc
|
||||||
steps:
|
steps:
|
||||||
@ -1721,28 +1734,30 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||||
run: |
|
run: |
|
||||||
echo "Release version: ${{env.release_version}}"
|
echo "Release version: ${{env.release_version}}"
|
||||||
|
filenames=()
|
||||||
|
files=()
|
||||||
a_files=()
|
a_files=()
|
||||||
for i in $(find artifacts -type f); do
|
for i in $(find artifacts -type f); do
|
||||||
filename=$(basename $i)
|
filename=$(basename $i)
|
||||||
|
if [[ ${filenames[@]} =~ ${filename} ]]; then
|
||||||
|
echo "Skipping duplicate file: ${filename}"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
filenames+=("${filename}")
|
||||||
existing_asset=$(hub release show -f "%as" ${{env.release_version}} | tr -d '[:blank:]' | grep ".*/${filename}\$" 2>/dev/null || true)
|
existing_asset=$(hub release show -f "%as" ${{env.release_version}} | tr -d '[:blank:]' | grep ".*/${filename}\$" 2>/dev/null || true)
|
||||||
if [ "${existing_asset}" = "" ]; then
|
if [ "${existing_asset}" = "" ]; then
|
||||||
echo "Adding file: ${filename}"
|
echo "Adding file: ${filename}"
|
||||||
if [ "${file_list}" = "" ]; then
|
files+=("$i")
|
||||||
file_list="$i"
|
|
||||||
else
|
|
||||||
file_list="${file_list} $i"
|
|
||||||
fi
|
|
||||||
a_files+=("-a" "${i}")
|
a_files+=("-a" "${i}")
|
||||||
else
|
else
|
||||||
echo "Skipping existing file: ${filename}"
|
echo "Release already has file: ${filename}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if ! [ "${file_list}" = "" ]; then
|
if ! [ "${files[@]}" = "" ]; then
|
||||||
echo "Uploading files: ${file_list}"
|
echo "Uploading files: ${files[@]}"
|
||||||
rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var ${file_list} ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.RELEASES_PATH}}/
|
rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var ${files[@]} ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.RELEASES_PATH}}/
|
||||||
fi
|
fi
|
||||||
a_file_list="${a_files[@]}"
|
if ! [ "${a_files[@]}" = "" ]; then
|
||||||
if ! [ "${a_file_list}" = "" ]; then
|
echo "Adding files to GitHub release: ${files}"
|
||||||
echo "Adding files to GitHub release: ${file_list}"
|
hub release edit -m "Strawberry ${{env.release_version}}" ${a_files[@]} "${{env.release_version}}"
|
||||||
hub release edit -m "Strawberry ${{env.release_version}}" ${a_file_list} "${{env.release_version}}"
|
|
||||||
fi
|
fi
|
||||||
|
@ -28,7 +28,7 @@ if(MACDEPLOYQT_EXECUTABLE)
|
|||||||
)
|
)
|
||||||
if(CREATEDMG_EXECUTABLE)
|
if(CREATEDMG_EXECUTABLE)
|
||||||
add_custom_target(dmg
|
add_custom_target(dmg
|
||||||
COMMAND ${CREATEDMG_EXECUTABLE} --volname strawberry --background "${CMAKE_SOURCE_DIR}/dist/macos/dmg_background.png" --app-drop-link 450 218 --icon strawberry.app 150 218 --window-size 600 450 strawberry-${STRAWBERRY_VERSION_PACKAGE}-${CMAKE_HOST_SYSTEM_PROCESSOR}.dmg strawberry.app
|
COMMAND ${CREATEDMG_EXECUTABLE} --volname strawberry --background "${CMAKE_SOURCE_DIR}/dist/macos/dmg_background.png" --app-drop-link 450 218 --icon strawberry.app 150 218 --window-size 600 450 --skip-jenkins strawberry-${STRAWBERRY_VERSION_PACKAGE}-${CMAKE_HOST_SYSTEM_PROCESSOR}.dmg strawberry.app
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user