Fix multiple continuous release binaries (#1948)

* ci,scripts: remove unused lua patching code

* ci: remove old continuous release binaries

* ci: generate release notes when releasing with tags

* ci: remove the unicode patch flag

* ci: add content: write permission to GH_TOKEN

* ci: use ncipollo/release-action@v1

* ci: update existing releases

* ci: actually set removeArtifacts to true

* ci: do not rebuild for both bundle and portable

We now allow using meson setup --reconfigure, which will preserve the build cache, and changes nothing but the installation path

* build.sh: fix wrong conditional

* ci: fix tar command output

* ci: fix tar command extracting to wrong directory

* ci: add merge-multiple: true to properly lay out the artifacts

* ci: only upload the correct files
This commit is contained in:
Takase 2024-11-16 14:10:24 +08:00 committed by GitHub
parent c15910856a
commit 7d457f8fc5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 58 additions and 66 deletions

View File

@ -29,6 +29,8 @@ jobs:
outputs:
release: ${{ steps.check_release.outputs.release }}
ref: ${{ steps.check_release.outputs.ref }}
permissions:
contents: write
steps:
- name: Update Tag
uses: richardsimko/update-tag@v1
@ -58,10 +60,8 @@ jobs:
strategy:
matrix:
config:
- { runner: macos-13, type: bundle, arch: x86_64-darwin }
- { runner: macos-13, type: portable, arch: x86_64-darwin }
- { runner: macos-14, type: bundle, arch: aarch64-darwin }
- { runner: macos-14, type: portable, arch: aarch64-darwin }
- { runner: macos-13, arch: x86_64-darwin }
- { runner: macos-14, arch: aarch64-darwin }
runs-on: ${{ matrix.config.runner }}
steps:
- name: System Information
@ -80,24 +80,23 @@ jobs:
- name: Install Dependencies
run: scripts/install-dependencies.sh
- name: Build
run: scripts/build.sh --addons --debug --forcefallback --${{ matrix.config.type }} -b build
- name: Package Mac (Bundle)
if: ${{ matrix.config.type == 'bundle' }}
run: cd build && tar -czvf ../lite-xl-${{ needs.version.outputs.ref }}-${{ matrix.config.arch }}}-${{ matrix.config.type }}.tar.gz lite-xl Info.plist
- name: Build & Package Mac (Bundle)
run: |
scripts/build.sh --addons --debug --forcefallback --reconfigure --bundle -b build
tar -C build -czvf lite-xl-${{ needs.version.outputs.ref }}-${{ matrix.config.arch }}-bundle.tar.gz lite-xl Info.plist
- name: Package Mac (Portable)
if: ${{ matrix.config.type == 'portable' }}
run: cd build && tar -czvf ../lite-xl-${{ needs.version.outputs.ref }}-${{ matrix.config.arch }}}-${{ matrix.config.type }}.tar.gz lite-xl
- name: Build & Package Mac (Portable)
run: |
scripts/build.sh --addons --debug --forcefallback --reconfigure --portable -b build
tar -C build -czvf lite-xl-${{ needs.version.outputs.ref }}-${{ matrix.config.arch }}-portable.tar.gz lite-xl
- name: Upload (Intermediate)
uses: actions/upload-artifact@v4
with:
name: lite-xl-${{ needs.version.outputs.ref }}-${{ matrix.config.arch }}-${{ matrix.config.type }}
name: lite-xl-${{ needs.version.outputs.ref }}-${{ matrix.config.arch }}
path: |
*.tar.gz
build_darwin_universal:
name: Darwin (Universal)
@ -117,12 +116,14 @@ jobs:
uses: actions/download-artifact@v4
with:
pattern: '*darwin*'
merge-multiple: true
- name: Create Universal Binaries
run: |
for TYPE in bundle portable; do
mkdir -p lite-xl-${{ needs.version.outputs.ref }}-universal-darwin-$TYPE/lite-xl
cd lite-xl-${{ needs.version.outputs.ref }}-x86_64-darwin-$TYPE && tar -zxvf *.tar.gz && cd .. && cd lite-xl-${{ needs.version.outputs.ref }}-aarch64-darwin-$TYPE && tar -zxvf *.tar.gz && cd ..
mkdir -p lite-xl-${{ needs.version.outputs.ref }}-{x86_64,aarch64,universal}-darwin-$TYPE/lite-xl
tar -C lite-xl-${{ needs.version.outputs.ref }}-x86_64-darwin-$TYPE -zxvf lite-xl-${{ needs.version.outputs.ref }}-x86_64-darwin-$TYPE.tar.gz
tar -C lite-xl-${{ needs.version.outputs.ref }}-aarch64-darwin-$TYPE -zxvf lite-xl-${{ needs.version.outputs.ref }}-aarch64-darwin-$TYPE.tar.gz
cp -r lite-xl-${{ needs.version.outputs.ref }}-*-$TYPE/lite-xl/data lite-xl-${{ needs.version.outputs.ref }}-universal-darwin-$TYPE/lite-xl
lipo -create -output lite-xl-${{ needs.version.outputs.ref }}-universal-darwin-$TYPE/lite-xl/lite-xl lite-xl-${{ needs.version.outputs.ref }}-*-darwin-$TYPE/lite-xl/lite-xl
done
@ -139,8 +140,8 @@ jobs:
with:
name: lite-xl-${{ needs.version.outputs.ref }}-universal-darwin-release
path: |
*.dmg
*.tar.gz
lite-xl-${{ needs.version.outputs.ref }}-universal-darwin.dmg
lite-xl-${{ needs.version.outputs.ref }}-universal-darwin-portable.tar.gz
build_linux:
@ -187,7 +188,7 @@ jobs:
run: bash scripts/install-dependencies.sh
- name: Build
run: bash scripts/build.sh -U --addons --debug --forcefallback --portable -b build
run: bash scripts/build.sh --addons --debug --forcefallback --portable -b build
- name: Package Windows (Portable)
run: cd build && zip -r ../lite-xl-${{ needs.version.outputs.ref }}-x86_64-windows-portable.zip lite-xl && cd ..
@ -203,6 +204,7 @@ jobs:
*.zip
*.exe
build_windows_msvc:
name: Windows (x86_64) (MSVC)
needs: [version]
@ -222,25 +224,15 @@ jobs:
- name: Install meson and ninja
run: pip install meson ninja
- name: Set up environment variables
run: |
"LUA_SUBPROJECT_PATH=subprojects/$(awk -F ' *= *' '/directory/ { printf $2 }' subprojects/lua.wrap)" >> $env:GITHUB_ENV
- name: Download subprojects
shell: bash
run: |
meson subprojects download
- name: Configure
run: meson setup --wrap-mode=forcefallback build
- name: Build
run: meson install -C build --destdir="../lite-xl"
run: meson install -C build --skip-subprojects --destdir="../lite-xl"
- name: Package
run: |
Remove-Item -Recurse -Force -Path "lite-xl/lib","lite-xl/include"
Compress-Archive -Path lite-xl -DestinationPath "lite-xl-${{ needs.version.outputs.ref }}-x86_64-windows.zip"
shell: powershell {0}
run: Compress-Archive -Path lite-xl -DestinationPath "lite-xl-${{ needs.version.outputs.ref }}-x86_64-windows.zip"
- name: Upload Artifacts (Intermediate)
uses: actions/upload-artifact@v4
@ -255,28 +247,31 @@ jobs:
name: Create Release
needs: [version, build_linux, build_windows, build_darwin_universal]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
pattern: lite-xl-*-release
path: .
merge-multiple: true
path: releases
- name: Generate Release Notes
if: needs.version.outputs.release
env:
GH_TOKEN: ${{ github.token }}
run: bash scripts/generate-release-notes.sh --version ${{ needs.version.outputs.release }}
- name: Versioned Release
uses: softprops/action-gh-release@v2
uses: ncipollo/release-action@v1
if: ${{ needs.version.outputs.release }}
with:
tag_name: ${{ needs.version.outputs.release }}
tag: ${{ needs.version.outputs.release }}
name: Lite XL ${{ needs.version.outputs.release }}
draft: true
body_path: changelog.md
generate_release_notes: true
files: |
*/*.tar.gz
*/*.zip
*/*.exe
*/*.dmg
*/*.AppImage
allowUpdates: true
bodyFile: release-notes.md
artifacts: "releases/*.*"
- name: Update Tag
uses: richardsimko/update-tag@v1
if: github.ref == 'refs/heads/master'
@ -285,15 +280,13 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Continuous Release
uses: softprops/action-gh-release@v2
uses: ncipollo/release-action@v1
if: github.ref == 'refs/heads/master'
with:
name: Lite XL Continuous Release
tag_name: continuous
tag: continuous
prerelease: true
files: |
*/*.tar.gz
*/*.zip
*/*.exe
*/*.dmg
*/*.AppImage
allowUpdates: true
removeArtifacts: true
generateReleaseNotes: true
artifacts: "releases/*.*"

View File

@ -23,8 +23,9 @@ show_help() {
echo "-B --bundle Create an App bundle (macOS only)"
echo "-A --addons Add in addons"
echo "-P --portable Create a portable binary package."
echo "-r --reconfigure Tries to reuse the meson build directory, if possible."
echo " Default: Deletes the build directory and recreates it."
echo "-O --pgo Use profile guided optimizations (pgo)."
echo "-U --windows-lua-utf Use the UTF8 patch for Lua."
echo " macOS: disabled when used with --bundle,"
echo " Windows: Implicit being the only option."
echo " --cross-platform PLATFORM Cross compile for this platform."
@ -49,13 +50,12 @@ main() {
local bundle
local portable
local pgo
local patch_lua
local cross
local cross_platform
local cross_arch
local cross_file
local lua_subproject_path
local reconfigure
local should_reconfigure
for i in "$@"; do
case $i in
@ -72,6 +72,10 @@ main() {
build_type="debug"
shift
;;
-r|--reconfigure)
should_reconfigure=true
shift
;;
--debug)
set -x
shift
@ -105,10 +109,6 @@ main() {
pgo="-Db_pgo=generate"
shift
;;
-U|--windows-lua-utf)
patch_lua="true"
shift
;;
--cross-arch)
cross="true"
cross_arch="$2"
@ -186,12 +186,10 @@ main() {
export LDFLAGS="-mmacosx-version-min=$macos_version_min"
fi
rm -rf "${build_dir}"
if [[ $patch_lua == "true" ]] && [[ ! -z $force_fallback ]]; then
# download the subprojects so we can start patching before configure.
# this will prevent reconfiguring the project.
meson subprojects download
if [[ $should_reconfigure == true ]] && [[ -d "${build_dir}" ]]; then
reconfigure="--reconfigure"
elif [[ -d "${build_dir}" ]]; then
rm -rf "${build_dir}"
fi
CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS meson setup \
@ -203,6 +201,7 @@ main() {
$bundle \
$portable \
$pgo \
$reconfigure
meson compile -C "${build_dir}"