-
-
Notifications
You must be signed in to change notification settings - Fork 334
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
173 additions
and
105 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 }} |