name: macos-homebrew-breakpad concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: workflow_dispatch: #push: # branches: # - dev # - master # # - staged # paths-ignore: # - 'docs/**' # - ".github/**" # - "howto/**" # - "*.md" # - ".clang-format" jobs: build: name: Build runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-13] qt_ver: [ 6.4.3,6.5.1 ] qt_arch: [clang_64] env: targetName: GoldenDict version: 23.06.02 version-suffix: alpha prerelease: true steps: # macos 11.0 默认环境变了,要指定 - name: prepare env if: ${{ matrix.os == 'macos-11' }} run: | softwareupdate --all --install --force sudo xcode-select --print-path sudo xcode-select --switch /Library/Developer/CommandLineTools - uses: actions/checkout@v3 with: fetch-depth: 0 submodules: true - name: Set outputs id: githash run: | echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" - name: install deps on macos run: | brew install pcre2 harfbuzz freetype brew install cmake ninja python brew install automake brew install autoconf brew install libtool brew install opencc brew install speex brew install wavpack brew install automake fdk-aac git lame libass libtool libvorbis libvpx opus sdl shtool texi2html theora wget x264 x265 xvid nasm brew install speex brew tap homebrew-ffmpeg/ffmpeg brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-speex brew install libiconv brew install lzo bzip2 brew install libogg brew install zstd lzip brew install libvorbis brew install hunspell git clone https://github.com/xiaoyifang/eb.git cd eb && ./configure && make -j 8 && sudo make install && cd .. brew install xz lzo brew install pkg-config brew install create-dmg brew install xapian brew install libzim # brew reinstall icu4c brew install dylibbundler find /opt -name libicudata.72.dylib find /usr/local -name libicudata.72.dylib - name: version-file shell: bash env: VAR_SUFFIX: ${{env.version-suffix}} VAR_VERSION: ${{env.version}} run: | current_tag=$(git rev-parse --short=8 HEAD) release_date=$(date +'%Y%m%d') echo "$VAR_VERSION-$VAR_SUFFIX.$release_date.$current_tag">version.txt cat version.txt echo "$version" - name: vcpkg install shell: bash run: | vcpkg install breakpad - name: copy vcpkg packages into winlibs shell: bash run: | ls -al /usr/local/share/vcpkg/packages/breakpad* cp -R /usr/local/share/vcpkg/packages/breakpad*/* thirdparty/breakpad ls -al thirdparty/breakpad/lib - uses: actions/setup-python@v3 with: python-version: '3.9' - name: Install Qt uses: jurplel/install-qt-action@v3 with: version: ${{ matrix.qt_ver }} arch: ${{ matrix.qt_arch }} modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech setup-python: 'false' - name: compile run: | qmake CONFIG+=release CONFIG+=no_macos_universal CONFIG+=zim_support CONFIG+=use_xapian CONFIG+=use_breakpad make -j8 - name: package run: | macdeployqt ${targetName}.app -no-strip -qmldir=. -verbose=1 otool -L GoldenDict.app/Contents/MacOS/GoldenDict ls -al GoldenDict.app/Contents/Frameworks otool -L GoldenDict.app/Contents/Frameworks/libicu*.dylib ls -al /usr/local/Cellar/icu4c/7*/lib/libicudata.*.dylib cp -r /usr/local/Cellar/icu4c/7*/lib/libicudata.*.dylib GoldenDict.app/Contents/Frameworks codesign --force --deep -s - GoldenDict.app ls -al GoldenDict.app/Contents/Frameworks mkdir tmp mv ${targetName}.app ./tmp # --background "installer_background.png" create-dmg --volname "${targetName} Installer" --volicon "icons/macicon.icns" --window-pos 200 120 --window-size 800 400 --icon-size 100 --icon "${targetName}.app" 200 190 --hide-extension "${targetName}.app" --app-drop-link 600 185 --skip-jenkins "${targetName}.dmg" tmp/ - name: changelog id: changelog run: | previousTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 2p) echo "previousTag : $previousTag" CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)" CHANGELOG="${CHANGELOG//'%'/'%25'}" CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" CHANGELOG="${CHANGELOG//'\"'/'%22'}" CHANGELOG="${CHANGELOG//"'"/ }" echo "::set-output name=changelog::$(echo "$CHANGELOG")" echo "::set-output name=prev_tag::$previousTag" echo "::set-output name=curr_tag::$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)" - name: Set outputs id: vars run: | echo "::set-output name=sha_short::$(git rev-parse --short=8 HEAD)" echo "::set-output name=release_date::$(date +'%Y%m%d')" echo "::set-output name=release_time::$(date +'%H%M%S')" echo "::set-output name=release_time_clock::$(date +'%H:%M:%S')" echo "::set-output name=release_hm::$(date +'%y%m%d')" # tag 上传Release - name: "Build Changelog" id: build_changelog uses: mikepenz/release-changelog-builder-action@v3 with: commitMode: false fromTag: ${{ steps.changelog.outputs.prev_tag }} toTag: "${{ steps.changelog.outputs.curr_tag }}" configurationJson: | { "template": "#{{CHANGELOG}}\n\n
\n🔴 Uncategorized\n\n#{{UNCATEGORIZED}}\n
", "categories": [ { "title": "## 🚀 Features", "labels": ["feature","feat","opt"] }, { "title": "## 🐛 Fixes", "labels": ["fix","bug"] } , { "title": "## 🤖 Github action", "labels": ["action"] } , { "title": "## 🧼 Clean Code", "labels": ["clean"] } ], "label_extractor": [ { "pattern": "([^:]*):.*", "target": "$1", "on_property": "title", "flags": "gu" } ] } - name: uploadRelease uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: ${{ env.targetName }}.dmg asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_homebrew_breakpad_${{steps.vars.outputs.release_date}}.dmg tag: tag-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }} overwrite: true release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} prerelease: ${{env.prerelease}} body: | release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}} branch: ${{ github.ref_name }} commit: ${{ steps.vars.outputs.sha_short }} Qt version: Qt5.15.2, Qt6.X Windows built with: msvc64, Visual studio 2019 ## goldendict.exe can not be used alone if you have a previous version. replace this maybe ok. if not ,download the whole bundle. AppImage built with: Ubuntu-20.04 ,latest gcc macos built with: macos-10.15,macos-11.0,clang_64 x86_64 Qt6.X(homebrew build) Qt5.15.2(Intel Kind) auto built by github action. use on your on risk:-) **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** [xapian](https://xapian.org/) is enabled by default which offers 10X~20X performance ------------------------------ 文件名的模式: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** [xapian](https://xapian.org/) 用于全文索引的创建,提供更快的全文索引创建、搜索支持 比如: 6.4.3-GoldenDict.exe_windows-2022_20230502.zip 表示基于qt6.4.3,windows-2022, 于20230502日创建的版本。 CHANGES: ${{ steps.changelog.outputs.changelog }} ---------------- ${{steps.build_changelog.outputs.changelog}}