From e25cd9b5f6cca3aefbac87a42c32a8de2ced7df3 Mon Sep 17 00:00:00 2001 From: houseme Date: Sat, 1 Mar 2025 23:14:30 +0800 Subject: [PATCH] feat: add remote file download, extraction, and packaging process in build.yml (#245) * fix * update README.md --- .github/workflows/build.yml | 68 ++++++++++++++++++++++++++++++++++--- README.md | 27 +++++++-------- 2 files changed, 77 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b85c3f80..3543e702 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,9 +15,9 @@ jobs: strategy: matrix: variant: - - { profile: dev, target: x86_64-unknown-linux-gnu, glibc: "default" } - - { profile: release, target: x86_64-unknown-linux-gnu, glibc: "default" } - - { profile: release, target: x86_64-unknown-linux-gnu, glibc: "2.31" } + - { profile: dev, target: x86_64-unknown-linux-gnu, glibc: "default" } + - { profile: release, target: x86_64-unknown-linux-gnu, glibc: "default" } + - { profile: release, target: x86_64-unknown-linux-gnu, glibc: "2.31" } steps: - uses: actions/checkout@v4 @@ -32,10 +32,70 @@ jobs: --target ${{ matrix.variant.target }} \ --glibc ${{ matrix.variant.glibc }} + # Download the zip file(Linux/macOS used bash) + - name: Download Static Assets (Linux/macOS) + run: | + url="https://dl.rustfs.com/console/rustfs-console-latest.zip" + file=$(basename "$url") + curl -L -o "$file" "$url" + if [ ! -f "$file" ]; then + echo "Error: Failed to download $file" + exit 1 + fi + echo "Downloaded $file successfully" + ls -l "$file" + ls -la + + # Unzip the zip file(Linux/macOS used bash) + - name: Extract Static Assets (Linux/macOS) + run: | + ls -la + # Find the first .zip or .tar.gz file + file="" + for f in *.zip *.tar.gz; do + if [ -f "$f" ]; then + file="$f" + break + fi + done + if [ -z "$file" ]; then + echo "Error: No .zip or .tar.gz file found in the current directory" + ls -la # Displays the contents of the current directory for debugging + exit 1 + fi + # Outputs the name of the file found + echo "Found file: $file" + mkdir -p static + if [[ "$file" == *.zip ]]; then + echo "Unzipping $file to static/" + unzip "$file" -d static || { echo "Error: Failed to unzip $file"; exit 1; } + elif [[ "$file" == *.tar.gz ]]; then + echo "Extracting $file to static/" + tar -xzf "$file" -C static || { echo "Error: Failed to extract $file"; exit 1; } + else + echo "Error: Unsupported file format: $file" + exit 1 + fi + # Check whether the decompression is successful + if [ $? -ne 0 ]; then + echo "Error: Failed to extract $file" + exit 2 + fi + rm "$file" + ls -la static + # Packing binaries and static directory(Linux/macOS used bash) + - name: Package Binary and Static Assets (Linux/macOS) + run: | + mkdir -p release-package + cp target/artifacts/rustfs.${{ matrix.variant.profile }}.${{ matrix.variant.target }}.${{ matrix.variant.glibc }} release-package/ + cp -r static release-package/ + zip -r rustfs${{ matrix.variant.profile }}-${{ matrix.variant.target }}-${{ matrix.variant.glibc }}.zip release-package/* + ls -la + - uses: actions/upload-artifact@v4 with: name: rustfs.${{ matrix.variant.profile }}.${{ matrix.variant.target }}.${{ matrix.variant.glibc }} - path: ./target/artifacts/* + path: ./release-package/rustfs.${{ matrix.variant.profile }}.${{ matrix.variant.target }}.${{ matrix.variant.glibc }}.zip merge: runs-on: ubuntu-latest diff --git a/README.md b/README.md index d1351cfe..1e4f16b5 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,26 @@ # How to compile RustFS -| Must package | Version | -| - | - | -| Rust | 1.8.5 | -| protoc | 27.0 | -| flatc | 24.0+ | +| Must package | Version | +|--------------|---------| +| Rust | 1.8.5 | +| protoc | 27.0 | +| flatc | 24.0+ | +Download Links: -Download Links: https://github.com/google/flatbuffers/releases/download/v24.3.25/Linux.flatc.binary.g++-13.zip + https://github.com/protocolbuffers/protobuf/releases/download/v27.0/protoc-27.0-linux-x86_64.zip Or use Docker: - uses: arduino/setup-protoc@v3 - with: - version: "27.0" - - - uses: Nugine/setup-flatc@v1 - with: - version: "24.3.25" - + with: + version: "27.0" +- uses: Nugine/setup-flatc@v1 + with: + version: "24.3.25" # How to add Console web @@ -31,7 +30,6 @@ Or use Docker: 3. Compile RustFS - # Star RustFS Add Env infomation: @@ -46,6 +44,7 @@ export RUSTFS_SERVER_ENDPOINT="http://127.0.0.1:9000" ``` You need replace your real data folder: + ``` ./rustfs /data/rustfs ```