diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index 26a04551..a135c874 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -44,18 +44,18 @@ jobs: runs-on: ubuntu-16.04 strategy: matrix: - arch: [i686, x86_64, arm, armhf, aarch64, mips, mipsel, mips64, mips64el] + target: [i686, x86_64, arm, armhf, aarch64, mips, mipsel, mips64, mips64el] steps: - uses: actions/checkout@v2 - name: Install packages run: | sudo apt-get update sudo apt-get install -y autoconf automake build-essential cmake curl file libtool - - name: Cross build (${{ matrix.arch }}) + - name: Cross build (${{ matrix.target }}) env: - ARCH: ${{ matrix.arch }} - run: ./scripts/cross-build.sh $ARCH + BUILD_TARGET: ${{ matrix.target }} + run: ./scripts/cross-build.sh - uses: actions/upload-artifact@v1 with: - name: ttyd.${{ matrix.arch }} + name: ttyd.${{ matrix.target }} path: build/ttyd diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2d8f817c..1905121d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,23 +6,45 @@ on: - "*" jobs: + release: + runs-on: ubuntu-16.04 + outputs: + upload_url: ${{ steps.create_release.outputs.upload_url }} + steps: + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + draft: true + prerelease: false + build: runs-on: ubuntu-16.04 + needs: release + strategy: + matrix: + target: [i686, x86_64, arm, armhf, aarch64, mips, mipsel, mips64, mips64el] steps: - uses: actions/checkout@v2 - name: Install packages run: | sudo apt-get update sudo apt-get install -y autoconf automake build-essential cmake curl file libtool - - name: Build Release - run: | - mkdir -p bin - for arch in i686 x86_64 arm armhf aarch64 mips mipsel mips64 mips64el; do - ./scripts/cross-build.sh $arch - cp build/ttyd bin/ttyd_linux.$arch - sha256sum bin/ttyd_linux.$arch >> bin/SHA256SUMS - done - - uses: ncipollo/release-action@v1 + - name: Cross build (${{ matrix.target }}) + env: + BUILD_TARGET: ${{ matrix.target }} + run: ./scripts/cross-build.sh + - name: Upload assets + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - artifact: "bin/*" - token: ${{ secrets.GITHUB_TOKEN }} + upload_url: ${{ needs.release.outputs.upload_url }} + asset_path: build/ttyd + asset_name: ttyd.${{ matrix.target }} + asset_content_type: application/octet-stream \ No newline at end of file diff --git a/scripts/cross-build.sh b/scripts/cross-build.sh index 9d72a8c8..ff80c6cd 100755 --- a/scripts/cross-build.sh +++ b/scripts/cross-build.sh @@ -1,12 +1,15 @@ #!/bin/bash - +# +# Example: +# env BUILD_TARGET=mips WITH_SSL=true ./scripts/cross-build.sh +# set -eo pipefail CROSS_ROOT="${CROSS_ROOT:-/opt/cross}" STAGE_ROOT="${STAGE_ROOT:-/opt/stage}" BUILD_ROOT="${BUILD_ROOT:-/opt/build}" -WITH_SSL="${WITH_SSL:-}" -BUILD_TARGET="$1" +BUILD_TARGET="${BUILD_TARGET:-x86_64}" +WITH_SSL=${WITH_SSL:-false} ZLIB_VERSION="${ZLIB_VERSION:-1.2.11}" JSON_C_VERSION="${JSON_C_VERSION:-0.14}" @@ -45,7 +48,7 @@ map_openssl_target() { aarch64) echo linux-aarch64 ;; mips|mipsel) echo linux-mips32 ;; mips64|mips64el) echo linux64-mips64 ;; - *) echo "unsupported target: $1" && exit 1 + *) echo "unknown openssl target: $1" && exit 1 esac } @@ -93,7 +96,7 @@ build_libwebsockets() { sed -i 's/ websockets_shared//g' cmake/LibwebsocketsConfig.cmake.in sed -i '/PC_OPENSSL/d' CMakeLists.txt mkdir build && cd build - [ -z "${WITH_SSL}" ] && CMAKE_OPTIONS="-DLWS_WITH_SSL=OFF" + [ "${WITH_SSL}" = true ] || CMAKE_OPTIONS="-DLWS_WITH_SSL=OFF" cmake -DCMAKE_TOOLCHAIN_FILE="${BUILD_DIR}/cross-${TARGET}.cmake" "${CMAKE_OPTIONS}" \ -DCMAKE_INSTALL_PREFIX="${STAGE_DIR}" \ -DCMAKE_FIND_LIBRARY_SUFFIXES=".a" \ @@ -154,21 +157,21 @@ build() { build_zlib build_json-c build_libuv - [ -n "${WITH_SSL}" ] && build_openssl + [ "${WITH_SSL}" = true ] && build_openssl build_libwebsockets build_ttyd } -case $1 in +case ${BUILD_TARGET} in i686|x86_64|aarch64|mips|mipsel|mips64|mips64el) - build "$1-linux-musl" "$1" + build "${BUILD_TARGET}-linux-musl" "${BUILD_TARGET}" ;; arm) - build arm-linux-musleabi "$1" + build arm-linux-musleabi "${BUILD_TARGET}" ;; armhf) - build arm-linux-musleabihf "$1" + build arm-linux-musleabihf "${BUILD_TARGET}" ;; *) - echo "usage: $0 i686|x86_64|arm|armhf|aarch64|mips|mipsel|mips64|mips64el" && exit 1 + echo "unknown cross target: ${BUILD_TARGET}" && exit 1 esac