From 23f75ea1d32dc74cca0bf54d5e3a26f9dde48d81 Mon Sep 17 00:00:00 2001 From: vicanso Date: Wed, 20 Mar 2024 20:14:45 +0800 Subject: [PATCH] chore: add github workflows --- .github/workflows/publish.yml | 111 ++++++++++++++++++++++++++++++++++ .github/workflows/test.yml | 22 +++++++ TODO.md | 2 +- conf/pingap.toml | 11 ++-- 4 files changed, 139 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 00000000..258a27c7 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,111 @@ +name: "publish" +on: + push: + tags: ["v[0-9]+.[0-9]+.[0-9]+*"] + # branches: [ main ] + +env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + CARGO_TERM_COLOR: always + +jobs: + linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: setup node + uses: actions/setup-node@v3 + - name: build-web + run: make build-web + - name: release + uses: addnab/docker-run-action@v3 + with: + image: messense/rust-musl-cross:x86_64-musl + options: -v ${{ github.workspace }}:/home/rust/src + run: | + make release + mv target/x86_64-unknown-linux-musl/release/pingap ./pingap-linux-x86 + - name: Upload Assets + run: | + ./.github/workflows/upload_asset.sh ./pingap-linux-x86 $GITHUB_TOKEN + + linux-aarch64: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: setup node + uses: actions/setup-node@v3 + - name: build-web + run: make build-web + - name: release + uses: addnab/docker-run-action@v3 + with: + image: messense/rust-musl-cross:aarch64-musl + options: -v ${{ github.workspace }}:/home/rust/src + run: | + make release + mv target/aarch64-unknown-linux-musl/release/pingap ./pingap-linux-aarch64 + - name: Upload Assets + run: | + ./.github/workflows/upload_asset.sh ./pingap-linux-aarch64 $GITHUB_TOKEN + docker: + runs-on: ubuntu-latest + timeout-minutes: 3600 + steps: + - name: Change Swap Space + run: | + swapon --show=NAME | tail -n 1 + df -lh + du -sh /usr/share/dotnet + sudo rm -rf /usr/share/dotnet + du -sh /usr/local/lib/android + sudo rm -rf /usr/local/lib/android + export SWAP_FILE=$(swapon --show=NAME | tail -n 1) + sudo swapoff $SWAP_FILE + sudo rm $SWAP_FILE + export SWAP_FILE=/swapfile + sudo fallocate -l 16G $SWAP_FILE + sudo chmod 600 $SWAP_FILE + sudo mkswap $SWAP_FILE + sudo swapon $SWAP_FILE + - name: Swap space report after modification + shell: bash + run: | + echo "Memory and swap:" + free -h + echo + swapon --show + df -lh + echo + - name: Checkout + uses: actions/checkout@v3 + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: | + vicanso/pingap + tags: | + type=semver,pattern={{version}} + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + - name: Build and push + id: docker_build + uses: docker/build-push-action@v4 + with: + platforms: linux/amd64, linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + - name: Image digest + run: | + echo ${{ steps.docker_build.outputs.digest }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..be35f6ea --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,22 @@ +name: "publish" +on: + push: + # tags: ["v[0-9]+.[0-9]+.[0-9]+*"] + branches: [main] + +env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + CARGO_TERM_COLOR: always + +jobs: + linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: release + uses: addnab/docker-run-action@v3 + with: + image: messense/rust-musl-cross:x86_64-musl + options: -v ${{ github.workspace }}:/home/rust/src + run: | + make release diff --git a/TODO.md b/TODO.md index b32f7fa4..98f97996 100644 --- a/TODO.md +++ b/TODO.md @@ -7,4 +7,4 @@ - [x] access log - [ ] support format for env logger(or tokio tracing) - [ ] better error handler -- [ ] config validate +- [x] config validate diff --git a/conf/pingap.toml b/conf/pingap.toml index b64caf18..9e6cb358 100644 --- a/conf/pingap.toml +++ b/conf/pingap.toml @@ -2,11 +2,10 @@ error_template = "" # The pid file of this server. Default `/tmp/pingap.pid` -# pid_file = "" +pid_file = "/tmp/pingap.pid" # The path to the upgrade socket. Default `/tmp/pingap.sock` -# upgrade_sock = "" - +upgrade_sock = "/tmp/pingap.sock" # If configured, after daemonization, this process will switch to # the given user before starting to serve traffic. Default `None` @@ -16,12 +15,12 @@ error_template = "" # group = "" # How many threads **each** service should get. -# The threads are not shared across services. If the value is <= 0, +# The threads are not shared across services. If the value is 0, # it will use cpus of system. Default `1`. -# threads = 2 +threads = 1 # Allow work stealing between threads of the same service. Default `true`. -# work_stealing = true +work_stealing = true # Upsteam config list, it will defined as [upstreams.name]