Go Build and Test / build-and-test (pull_request) Successful in 37s
This major update introduces a robust, multi-faceted networking capability, allowing backups to be managed through a central server or via direct peer-to-peer connections. - **Add `serve` command**: Implemented a new `serve` command that runs a persistent HTTP server. This allows for a centralized backup management workflow where multiple clients can upload and download archives. - **HTTP Client Mode**: The `create` and `restore` commands can now function as HTTP clients, targeting a `serve` instance using the `ip:port/filename` address format. - **Restore P2P Mode**: The original peer-to-peer streaming functionality (where `restore` acts as a TCP server and `create` as a client) has been fully restored and integrated into the new, more robust command architecture. - **Accurate Network Progress**: Fixed a critical bug where network progress bars would not display correctly. The `serve` command now sends a `Content-Length` header, and `restore` is refactored to handle asynchronous state updates correctly. - **Smart Address Parsing**: The application now automatically distinguishes between HTTP mode (`ip:port/filename`) and P2P mode (`ip:port`), providing a seamless user experience. - **Update `README.md`**: The project's README has been completely rewritten to document all three operating modes (Local, HTTP Server, P2P) with clear usage examples. - **Add Gitea Actions Workflow**: A new CI pipeline (`.gitea/workflows/build-and-test.yml`) has been added to automatically build and test the application on every push and pull request.
42 lines
1.1 KiB
YAML
42 lines
1.1 KiB
YAML
name: Go Build and Test
|
|
|
|
# This workflow runs on pushes and pull requests to the main branches.
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- master
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
- master
|
|
|
|
jobs:
|
|
build-and-test:
|
|
# You might need to change 'ubuntu-latest' to a tag that matches your self-hosted Gitea runner, e.g., 'linux', 'go', etc.
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
# Step 1: Check out the repository code
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
# Step 2: Set up the Go environment
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
# Use a Go version that matches your project's go.mod file
|
|
go-version: '1.22'
|
|
|
|
# Step 3: Download Go module dependencies
|
|
- name: Tidy and Vendor
|
|
run: go mod tidy && go mod vendor
|
|
|
|
# Step 4: Build the application to ensure it compiles
|
|
- name: Build
|
|
run: go build -v ./...
|
|
|
|
# Step 5: Run tests to check for regressions
|
|
# This step will pass if no tests are found, which is fine for now.
|
|
- name: Test
|
|
run: go test -v ./...
|