diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/backend.yml | 63 | ||||
-rw-r--r-- | .github/workflows/docker.yml | 59 | ||||
-rw-r--r-- | .github/workflows/frontend.yml | 28 | ||||
-rw-r--r-- | .github/workflows/release.yml | 46 |
4 files changed, 196 insertions, 0 deletions
diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml new file mode 100644 index 0000000..cfab7bd --- /dev/null +++ b/.github/workflows/backend.yml @@ -0,0 +1,63 @@ +name: backend + +on: + push: + paths: + - ".github/workflows/backend.yml" + - "CMakeLists.txt" + - "src/*" + - "scripts/*" + pull_request: + paths: + - ".github/workflows/backend.yml" + - "CMakeLists.txt" + - "src/*" + - "scripts/*" + +jobs: + build: + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + lws-version: [4.3.2, 3.2.3] + steps: + - name: Install packages + run: | + sudo apt-get update + sudo apt-get install build-essential cmake libjson-c-dev zlib1g-dev libssl-dev libuv1-dev + - name: Install libwebsockets-${{ matrix.lws-version }} + env: + LWS_VERSION: ${{ matrix.lws-version }} + run: | + cd $(mktemp -d) + curl -sLo- https://github.com/warmcat/libwebsockets/archive/v${LWS_VERSION}.tar.gz | tar xz + cd libwebsockets-${LWS_VERSION} + cmake -DLWS_WITH_LIBUV=ON -DLWS_UNIX_SOCK=ON -DLWS_IPV6=ON -DLWS_WITHOUT_TESTAPPS=ON -DCMAKE_BUILD_TYPE=RELEASE . + make && sudo make install && sudo ldconfig + - uses: actions/checkout@v3 + - name: Build ttyd + run: | + cmake -DCMAKE_BUILD_TYPE=RELEASE . + make && sudo make install + ttyd -v + cross: + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + target: [i686, x86_64, arm, armhf, aarch64, mips, mipsel, mips64, mips64el, s390x, win32] + steps: + - uses: actions/checkout@v3 + - 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.target }}) + env: + BUILD_TARGET: ${{ matrix.target }} + run: ./scripts/cross-build.sh + - uses: actions/upload-artifact@v3 + with: + name: ttyd.${{ matrix.target }} + path: build/ttyd* diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..4dbaf24 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,59 @@ +name: docker + +on: + push: + branches: main + tags: "*" + +jobs: + build: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: Install packages + run: | + sudo apt-get update + sudo apt-get install -y autoconf automake build-essential cmake curl file libtool + - name: Cross build multi-arch binary + run: | + mkdir dist + for arch in amd64 armv7 arm64 s390x; do + env BUILD_TARGET=$arch ./scripts/cross-build.sh + [ "$arch" = "armv7" ] && arch="arm" + mkdir -p dist/$arch && cp build/ttyd dist/$arch/ttyd + done + - uses: docker/setup-qemu-action@v2 + - uses: docker/setup-buildx-action@v2 + - uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + - name: Determine docker tags + id: docker_tag + run: | + case $GITHUB_REF in + refs/tags/*) + TAG_NAME=${GITHUB_REF#refs/tags/} + echo "DOCKER_TAG=tsl0922/ttyd:${TAG_NAME}" >> $GITHUB_ENV + echo "ALPINE_TAG=tsl0922/ttyd:${TAG_NAME}-alpine" >> $GITHUB_ENV + ;; + *) + echo "DOCKER_TAG=tsl0922/ttyd:latest" >> $GITHUB_ENV + echo "ALPINE_TAG=tsl0922/ttyd:alpine" >> $GITHUB_ENV + esac + - name: build/push docker image + uses: docker/build-push-action@v3 + with: + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/s390x + push: true + tags: ${{ env.DOCKER_TAG }} + - name: build/push docker image (alpine) + uses: docker/build-push-action@v3 + with: + context: . + file: ./Dockerfile.alpine + platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/s390x + push: true + tags: ${{ env.ALPINE_TAG }} diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml new file mode 100644 index 0000000..e134729 --- /dev/null +++ b/.github/workflows/frontend.yml @@ -0,0 +1,28 @@ +name: frontend + +on: + push: + paths: + - ".github/workflows/frontend.yml" + - "html/*" + pull_request: + paths: + - ".github/workflows/frontend.yml" + - "html/*" + +jobs: + build: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Run yarn install, check and build + run: | + corepack enable + corepack prepare yarn@stable --activate + yarn install + yarn run check + yarn run build + working-directory: html diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..9500cee --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,46 @@ +name: release + +on: + push: + tags: + - "*" + +jobs: + build: + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + target: [i686, x86_64, arm, armhf, aarch64, mips, mipsel, mips64, mips64el, s390x, win32] + steps: + - uses: actions/checkout@v3 + - 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.target }}) + env: + BUILD_TARGET: ${{ matrix.target }} + run: ./scripts/cross-build.sh + - uses: actions/upload-artifact@v3 + with: + name: ttyd.${{ matrix.target }} + path: build/ttyd* + publish: + needs: [build] + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - uses: actions/download-artifact@v3 + - run: | + mkdir build + for file in ttyd.*/*; do + target=$(echo $file | awk -F/ '{print $1}') + [[ $file == *.exe ]] && target="$target.exe" + mv $file build/$target + done + - uses: ncipollo/release-action@v1 + with: + artifacts: build/* + allowUpdates: true + draft: true |