summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2024-02-19 17:53:08 +0800
committer最萌小汐 <sumneko@hotmail.com>2024-02-19 17:53:08 +0800
commitecd43b35f98275b0bdf144df43e529d805a98a17 (patch)
treebeceec9298558dad9706d034774316cc0a8d5798
parentb6e452ccac0cbf150c8ffc4a9738e7e9202fc07c (diff)
downloadlua-language-server-ecd43b35f98275b0bdf144df43e529d805a98a17.zip
split build and release
-rw-r--r--.github/workflows/build.yml110
-rw-r--r--.github/workflows/release.yml168
2 files changed, 173 insertions, 105 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 66640e50..b4e736c4 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -7,8 +7,6 @@ on:
push:
branches:
- master
- tags:
- - "*"
pull_request:
branches:
- master
@@ -23,71 +21,30 @@ jobs:
fail-fast: false
matrix:
include:
- - { os: ubuntu-22.04, target: linux, platform: linux-x64, container: 'alpine:latest', libc: musl }
- - { os: ubuntu-20.04, target: linux, platform: linux-x64, container: 'ubuntu:18.04' }
- - { os: ubuntu-20.04, target: linux, platform: linux-arm64, container: 'ubuntu:18.04' }
+ - { os: ubuntu-20.04, target: linux, platform: linux-x64 }
+ - { os: ubuntu-20.04, target: linux, platform: linux-arm64 }
- { os: macos-11, target: darwin, platform: darwin-x64 }
- { os: macos-11, target: darwin, platform: darwin-arm64 }
- { os: windows-latest, target: windows, platform: win32-ia32 }
- { os: windows-latest, target: windows, platform: win32-x64 }
runs-on: ${{ matrix.os }}
- container:
- image: ${{ matrix.container }}
steps:
- - name: Prepare container
- if: ${{ matrix.target == 'linux' && matrix.libc != 'musl' }}
- run: |
- apt-get update
- apt-get install -y software-properties-common
- add-apt-repository -y ppa:ubuntu-toolchain-r/test # For gcc-9 and g++-9
- add-apt-repository -y ppa:git-core/ppa # For git>=2.18.
- apt-get update
- apt-get install -y sudo git gcc-9 g++-9
-
- - name: Install aarch64-linux-gnu
- if: ${{ matrix.platform == 'linux-arm64' && matrix.libc != 'musl' }}
- run: |
- apt-get update
- apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
-
- - name: Prepare container env
- if: ${{ matrix.target == 'linux' && matrix.libc != 'musl' }}
- run: |
- update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
- update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100
-
- - name: Prepare container for musl
- if: ${{ matrix.target == 'linux' && matrix.libc == 'musl' }}
- run: |
- apk update
- apk add git ninja bash build-base nodejs linux-headers
-
- uses: actions/checkout@v3
with:
submodules: recursive
- - name: Build for others step-1
- if: ${{ matrix.libc != 'musl' }}
+ - name: Install Luamake
uses: actboy168/setup-luamake@master
- - name: Build for others step-2
- if: ${{ matrix.libc != 'musl' }}
+ - name: Luamake
run: luamake -platform ${{ matrix.platform }}
- - name: Build for musl
- if: ${{ matrix.target == 'linux' && matrix.libc == 'musl' }}
- run: ./make.sh
-
- name: Setting up workflow variables
id: vars
shell: bash
run: |
# Package version
- if [[ $GITHUB_REF = refs/tags/* ]]; then
- PKG_VERSION=${GITHUB_REF##*/}
- else
- PKG_VERSION=${GITHUB_SHA:0:7}
- fi
+ PKG_VERSION=${GITHUB_SHA:0:7}
# Package suffix relative to the platform
if [[ "${{ matrix.target }}" = windows ]]; then
@@ -98,21 +55,8 @@ jobs:
# Package name w/ version
PKG_BASENAME="${{ env.PROJECT }}-${PKG_VERSION}-${{ matrix.platform }}"
- if [[ "${{ matrix.libc }}" = musl ]]; then
- PKG_BASENAME="${PKG_BASENAME}-${{matrix.libc}}"
- fi
- # Full name of the tarball asset
- PKG_NAME="${PKG_BASENAME}.${PKG_SUFFIX}"
-
- # Staging area for tarballs
- PKG_STAGING="ci_staging/$PKG_BASENAME"
-
- echo PKG_VERSION=${PKG_VERSION} >> $GITHUB_OUTPUT
echo PKG_BASENAME=${PKG_BASENAME} >> $GITHUB_OUTPUT
- echo PKG_NAME=${PKG_NAME} >> $GITHUB_OUTPUT
- echo PKG_PATH="${PKG_STAGING}/${PKG_NAME}" >> $GITHUB_OUTPUT
- echo PKG_STAGING=${PKG_STAGING} >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v3
with:
@@ -127,47 +71,3 @@ jobs:
doc
meta
script
-
- - name: Package tarballs
- if: startsWith(github.ref, 'refs/tags/')
- shell: bash
- run: |
- STAGING=${{ steps.vars.outputs.PKG_STAGING }}
- NAME=${{ steps.vars.outputs.PKG_NAME }}
-
- # Making the staging area
- mkdir -p ${STAGING}
-
- # Copying binary and runtime files to staging area
- cp -r main.lua debugger.lua LICENSE changelog.md locale meta script ${{ env.BIN_DIR }} ${STAGING}
-
- # Creating release assets
- pushd "${STAGING}/" >/dev/null
- if [[ "${{ matrix.target }}" = windows ]]; then
- 7z -y a ${NAME} * | tail -2
- else
- tar czf ${NAME} *
- fi
- popd >/dev/null
-
- # Packaging submodules for homebrew distribution
- - name: Package submodules
- id: submodules
- if: ${{ startsWith(github.ref, 'refs/tags/') && matrix.platform == 'darwin-x64' }}
- run: |
- STAGING=${{ steps.vars.outputs.PKG_STAGING }}
- PKG_SUBMOD_NAME="${{ env.PROJECT }}-${{ steps.vars.outputs.PKG_VERSION }}-submodules.zip"
- PKG_SUBMOD_PATH="${STAGING}/$PKG_SUBMOD_NAME"
-
- zip -r $PKG_SUBMOD_PATH ./ -x "*.git*" -x "*.vscode*" -x "build*" -x "${{ env.BIN_DIR }}*" -x "${STAGING}*" -x "3rd/json.lua*" -x "log*" -x "ci_staging*"
-
- echo PKG_SUBMOD_PATH=${PKG_SUBMOD_PATH} >> $GITHUB_OUTPUT
-
- - name: Publish release assets
- uses: softprops/action-gh-release@v1
- if: startsWith(github.ref, 'refs/tags/')
- with:
- generate_release_notes: true
- files: |
- ${{ steps.vars.outputs.PKG_PATH }}
- ${{ steps.submodules.outputs.PKG_SUBMOD_PATH }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..081832ec
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,168 @@
+name: build_full
+
+permissions:
+ contents: write
+
+on:
+ push:
+ tags:
+ - "*"
+
+env:
+ PROJECT: lua-language-server
+ BIN_DIR: bin
+
+jobs:
+ compile:
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - { os: ubuntu-22.04, target: linux, platform: linux-x64, container: 'alpine:latest', libc: musl }
+ - { os: ubuntu-20.04, target: linux, platform: linux-x64, container: 'ubuntu:18.04' }
+ - { os: ubuntu-20.04, target: linux, platform: linux-arm64, container: 'ubuntu:18.04' }
+ - { os: macos-11, target: darwin, platform: darwin-x64 }
+ - { os: macos-11, target: darwin, platform: darwin-arm64 }
+ - { os: windows-latest, target: windows, platform: win32-ia32 }
+ - { os: windows-latest, target: windows, platform: win32-x64 }
+ runs-on: ${{ matrix.os }}
+ container:
+ image: ${{ matrix.container }}
+ steps:
+ - name: Prepare container
+ if: ${{ matrix.target == 'linux' && matrix.libc != 'musl' }}
+ run: |
+ apt-get update
+ apt-get install -y software-properties-common
+ add-apt-repository -y ppa:ubuntu-toolchain-r/test # For gcc-9 and g++-9
+ add-apt-repository -y ppa:git-core/ppa # For git>=2.18.
+ apt-get update
+ apt-get install -y sudo git gcc-9 g++-9
+
+ - name: Install aarch64-linux-gnu
+ if: ${{ matrix.platform == 'linux-arm64' && matrix.libc != 'musl' }}
+ run: |
+ apt-get update
+ apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
+
+ - name: Prepare container env
+ if: ${{ matrix.target == 'linux' && matrix.libc != 'musl' }}
+ run: |
+ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
+ update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100
+
+ - name: Prepare container for musl
+ if: ${{ matrix.target == 'linux' && matrix.libc == 'musl' }}
+ run: |
+ apk update
+ apk add git ninja bash build-base nodejs linux-headers
+
+ - uses: actions/checkout@v3
+ with:
+ submodules: recursive
+
+ - name: Build for others step-1
+ if: ${{ matrix.libc != 'musl' }}
+ uses: actboy168/setup-luamake@master
+
+ - name: Build for others step-2
+ if: ${{ matrix.libc != 'musl' }}
+ run: luamake -platform ${{ matrix.platform }}
+
+ - name: Build for musl
+ if: ${{ matrix.target == 'linux' && matrix.libc == 'musl' }}
+ run: ./make.sh
+
+ - name: Setting up workflow variables
+ id: vars
+ shell: bash
+ run: |
+ # Package version
+ if [[ $GITHUB_REF = refs/tags/* ]]; then
+ PKG_VERSION=${GITHUB_REF##*/}
+ else
+ PKG_VERSION=${GITHUB_SHA:0:7}
+ fi
+
+ # Package suffix relative to the platform
+ if [[ "${{ matrix.target }}" = windows ]]; then
+ PKG_SUFFIX="zip"
+ else
+ PKG_SUFFIX="tar.gz"
+ fi
+
+ # Package name w/ version
+ PKG_BASENAME="${{ env.PROJECT }}-${PKG_VERSION}-${{ matrix.platform }}"
+ if [[ "${{ matrix.libc }}" = musl ]]; then
+ PKG_BASENAME="${PKG_BASENAME}-${{matrix.libc}}"
+ fi
+
+ # Full name of the tarball asset
+ PKG_NAME="${PKG_BASENAME}.${PKG_SUFFIX}"
+
+ # Staging area for tarballs
+ PKG_STAGING="ci_staging/$PKG_BASENAME"
+
+ echo PKG_VERSION=${PKG_VERSION} >> $GITHUB_OUTPUT
+ echo PKG_BASENAME=${PKG_BASENAME} >> $GITHUB_OUTPUT
+ echo PKG_NAME=${PKG_NAME} >> $GITHUB_OUTPUT
+ echo PKG_PATH="${PKG_STAGING}/${PKG_NAME}" >> $GITHUB_OUTPUT
+ echo PKG_STAGING=${PKG_STAGING} >> $GITHUB_OUTPUT
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: ${{ steps.vars.outputs.PKG_BASENAME }}
+ path: |
+ ${{ env.BIN_DIR }}
+ main.lua
+ debugger.lua
+ LICENSE
+ changelog.md
+ locale
+ doc
+ meta
+ script
+
+ - name: Package tarballs
+ if: startsWith(github.ref, 'refs/tags/')
+ shell: bash
+ run: |
+ STAGING=${{ steps.vars.outputs.PKG_STAGING }}
+ NAME=${{ steps.vars.outputs.PKG_NAME }}
+
+ # Making the staging area
+ mkdir -p ${STAGING}
+
+ # Copying binary and runtime files to staging area
+ cp -r main.lua debugger.lua LICENSE changelog.md locale meta script ${{ env.BIN_DIR }} ${STAGING}
+
+ # Creating release assets
+ pushd "${STAGING}/" >/dev/null
+ if [[ "${{ matrix.target }}" = windows ]]; then
+ 7z -y a ${NAME} * | tail -2
+ else
+ tar czf ${NAME} *
+ fi
+ popd >/dev/null
+
+ # Packaging submodules for homebrew distribution
+ - name: Package submodules
+ id: submodules
+ if: ${{ startsWith(github.ref, 'refs/tags/') && matrix.platform == 'darwin-x64' }}
+ run: |
+ STAGING=${{ steps.vars.outputs.PKG_STAGING }}
+ PKG_SUBMOD_NAME="${{ env.PROJECT }}-${{ steps.vars.outputs.PKG_VERSION }}-submodules.zip"
+ PKG_SUBMOD_PATH="${STAGING}/$PKG_SUBMOD_NAME"
+
+ zip -r $PKG_SUBMOD_PATH ./ -x "*.git*" -x "*.vscode*" -x "build*" -x "${{ env.BIN_DIR }}*" -x "${STAGING}*" -x "3rd/json.lua*" -x "log*" -x "ci_staging*"
+
+ echo PKG_SUBMOD_PATH=${PKG_SUBMOD_PATH} >> $GITHUB_OUTPUT
+
+ - name: Publish release assets
+ uses: softprops/action-gh-release@v1
+ if: startsWith(github.ref, 'refs/tags/')
+ with:
+ generate_release_notes: true
+ files: |
+ ${{ steps.vars.outputs.PKG_PATH }}
+ ${{ steps.submodules.outputs.PKG_SUBMOD_PATH }}