Skip to content

ci: merge upstream for some reason #17

ci: merge upstream for some reason

ci: merge upstream for some reason #17

Workflow file for this run

# A huge thanks to the helix-editor project for this
# If you're here for inspiration, please go to the original source
# https://github.com/helix-editor/helix/blob/master/.github/workflows/release.yml#L14-L18
name: Release
on:
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+"
branches:
- "ci-*"
pull_request:
paths:
- ".github/workflows/release.yml"
env:
preview: ${{ !startsWith(github.ref, 'refs/tags/') || github.repository != 'github-language-server/github-lsp' }}
jobs:
dist:
name: Dist
env:
CARGO: cargo
TARGET_DIR: ./target
RUST_BACKTRACE: 1
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false # don't fail other jobs if one fails
matrix:
build: [x86_64-linux, x86_64-macos, x86_64-windows] #, x86_64-win-gnu, win32-msvc
include:
- build: x86_64-linux
os: ubuntu-latest
rust: stable
target: x86_64-unknown-linux-gnu
cross: false
skip_tests: false
- build: aarch64-linux
os: ubuntu-latest
rust: stable
target: aarch64-unknown-linux-gnu
cross: true
skip_tests: false
- build: x86_64-macos
os: macos-latest
rust: stable
target: x86_64-apple-darwin
cross: false
skip_tests: false
- build: x86_64-windows
os: windows-latest
rust: stable
target: x86_64-pc-windows-msvc
cross: false
skip_tests: false
- build: aarch64-macos
os: macos-latest
rust: stable
target: aarch64-apple-darwin
cross: false
skip_tests: true
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install ${{ matrix.rust }} toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
- name: Install ssl
if: "matrix.build == 'aarch64-linux'"
run: |
sudo apt-get update
sudo apt-get -y install pkg-config libudev-dev libssl-dev
- name: Install Cross
if: "matrix.cross"
run: |
cargo install cross --git https://github.com/cross-rs/cross.git --rev 47df5c76e7cba682823a0b6aa6d95c17b31ba63a
echo "CARGO=cross" >> $GITHUB_ENV
- name: Run cargo test
if: "!matrix.skip_tests"
run: ${{ env.CARGO }} test --release --locked --target ${{ matrix.target }} --workspace
- name: Set profile.release.strip = true
shell: bash
run: |
cat >> .cargo/config.toml <<EOF
[profile.release]
strip = true
EOF
- name: Build release binary
run: ${{ env.CARGO }} build --release --locked --target ${{ matrix.target }}
- name: Build archive
shell: bash
run: |
mkdir -p dist
if [ "${{ matrix.os }}" = "windows-2019" ]; then
cp "target/${{ matrix.target }}/release/github-lsp.exe" "dist/"
else
cp "target/${{ matrix.target }}/release/github-lsp" "dist/"
fi
- uses: actions/upload-artifact@v4
with:
name: bins-${{ matrix.build }}
path: dist
publish:
name: Publish
needs: [dist]
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- uses: actions/download-artifact@v4
- name: Build archive
shell: bash
run: |
set -ex
source="$(pwd)"
cd "$(mktemp -d)"
mv $source/bins-* .
mkdir dist
for dir in bins-* ; do
platform=${dir#"bins-"}
if [[ $platform =~ "windows" ]]; then
exe=".exe"
fi
pkgname=github-lsp-$GITHUB_REF_NAME-$platform
mkdir -p $pkgname
cp $source/LICENSE $source/README.md $pkgname
mv bins-$platform/github-lsp$exe $pkgname
chmod +x $pkgname/github-lsp$exe
if [ "$exe" = "" ]; then
tar cJf dist/$pkgname.tar.xz $pkgname
else
7z a -r dist/$pkgname.zip $pkgname
fi
done
tar cJf dist/github-lsp-$GITHUB_REF_NAME-source.tar.xz -C $source .
mv dist $source/
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
if: env.preview == 'false'
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: dist/*
file_glob: true
tag: ${{ github.ref_name }}
overwrite: true
- name: Upload binaries as artifact
uses: actions/upload-artifact@v4
if: env.preview == 'true'
with:
name: release
path: dist/*