lsquic-static-alpine/.github/workflows/build.yml

134 lines
3.6 KiB
YAML

name: Build liblsquic.a
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
container: alpine:3.14
outputs:
LSQUIC_COMMIT: ${{ env.LSQUIC_COMMIT }}
LSQUIC_VERSION: ${{ env.LSQUIC_VERSION }}
steps:
- name: Install action dependencies
run: |
apk add \
binutils \
bsd-compat-headers \
build-base \
cmake \
git \
go \
libevent-dev \
linux-headers \
ninja \
perl \
tar \
zlib-dev \
zlib-static
- uses: actions/checkout@v2
- name: Load BORINGSSL_COMMIT and LSQUIC_COMMIT
run: ./env.sh
- name: Cache BoringSSL
id: cache-boringssl
uses: actions/cache@v2
with:
path: ./boringssl
key: boringssl-${{ env.BORINGSSL_COMMIT }}
- name: Build BoringSSL
if: steps.cache-boringssl.outputs.cache-hit != 'true'
run: |
git clone https://boringssl.googlesource.com/boringssl
cd boringssl
git checkout $BORINGSSL_COMMIT
cmake -DCMAKE_BUILD_TYPE=Release -GNinja .
ninja
- name: Build LSQUIC
if: steps.cache-lsquic.outputs.cache-hit != 'true'
run: |
git clone https://github.com/litespeedtech/lsquic.git
cd lsquic
git checkout $LSQUIC_COMMIT
git submodule init
git submodule update
cmake -DBORINGSSL_DIR=../boringssl .
make
- name: Test LSQUIC
if: steps.cache-lsquic.outputs.cache-hit != 'true'
run: |
cd lsquic
make test
- name: Set LSQUIC_VERSION
run: |
cd lsquic
LSQUIC_VERSION=$(git describe --contains $LSQUIC_COMMIT)
echo "LSQUIC_VERSION=$LSQUIC_VERSION" >> $GITHUB_ENV
echo "LSQUIC_VERSION=$LSQUIC_VERSION"
- name: Prepare artifact / release asset
run: |
mkdir dist
cd dist
ar -x ../boringssl/ssl/libssl.a
ar -x ../boringssl/crypto/libcrypto.a
ar -x ../lsquic/src/liblsquic/liblsquic.a
ar rc liblsquic.a *.o
rm *.o
strip --strip-unneeded liblsquic.a
ranlib liblsquic.a
echo "liblsquic.a $LSQUIC_VERSION (https://github.com/litespeedtech/lsquic/commit/$LSQUIC_COMMIT)" > version.txt
- uses: actions/upload-artifact@v2
with:
name: liblsquic.zip
path: dist/
release:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
needs: build
env:
LSQUIC_VERSION: ${{ needs.build.outputs.LSQUIC_VERSION }}
LSQUIC_COMMIT: ${{ needs.build.outputs.LSQUIC_COMMIT }}
steps:
- uses: actions/download-artifact@v2
with:
name: liblsquic.zip
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.LSQUIC_VERSION }}
release_name: ${{ env.LSQUIC_VERSION }}
body: liblsquic.a ${{ env.LSQUIC_VERSION }} (https://github.com/litespeedtech/lsquic/commit/${{ env.LSQUIC_COMMIT }})
- name: Upload release asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: liblsquic.a
asset_name: liblsquic.a
asset_content_type: application/x-archive