diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..49bfdb4 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,114 @@ +version: '1' +name: Release Version + +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: '1.23.1' + + - name: Build Go binary for Linux + run: | + go mod tidy + go build -o s3-client-web_linux.x86_64 + + - name: Build Go binary for Linux (x86) + run: | + go mod tidy + GOARCH=386 go build -o s3-client-web_linux.x86 + + - name: Build Go binary for Linux (ARM64) + run: | + go mod tidy + GOARCH=arm64 go build -o s3-client-web_linux.arm64 + + - name: Build Go binary for Linux (RISC-V) + run: | + go mod tidy + GOARCH=riscv64 go build -o s3-client-web_linux.riscv64 + + - name: Pack up binaries + run: | + tar -czvf s3-client-web-linux.x86_64.tar.gz s3-client-web_linux.x86_64 web + tar -czvf s3-client-web-linux.x86.tar.gz s3-client-web_linux.x86 web + tar -czvf s3-client-web-linux.arm64.tar.gz s3-client-web_linux.arm64 web + tar -czvf s3-client-web-linux.riscv64.tar.gz s3-client-web_linux.riscv64 web + + - name: Get latest commit ID + id: get_commit + run: | + commit_id=$(git rev-parse HEAD) + echo "commit_id=$commit_id" >> $GITHUB_ENV + + - name: Get latest version and increment + id: create_version + run: | + if [ "${{ env.main_go_modified }}" = "false" ]; then + echo "No changes in main.go, skipping version increment and release creation." + exit 0 + fi + + git fetch --tags + + latest_version=$(git tag | sort -V | tail -n 1 || echo "v0.0.0") + new_version=$(echo $latest_version | awk -F. '{printf "v%d.%d.%d", $1, $2, $3+1}') + + while git rev-parse "$new_version" >/dev/null 2>&1; do + new_version=$(echo $new_version | awk -F. '{$3+=1; printf "v%d.%d.%d", $1, $2, $3}') + done + + echo "latest_version=$latest_version" >> $GITHUB_ENV + echo "new_version=$new_version" >> $GITHUB_ENV + + if git rev-parse "$new_version" >/dev/null 2>&1; then + echo "Tag $new_version already exists. Exiting." + exit 1 + fi + + git tag $new_version + git push origin $new_version + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + with: + tag_name: ${{ env.new_version }} + release_name: Release ${{ env.new_version }} + release_description: | + Automatic release by Gitea CI + Release version ${{ env.new_version }}. + Commit ID: ${{ env.commit_id }} + draft: false + prerelease: false + env: + GITEA_TOKEN: ${{ secrets.TOKEN }} + GITHUB_TOKEN: ${{ secrets.TOKEN }} + + - name: Upload Go binaries to release + uses: softprops/action-gh-release@v1 + with: + files: | + ./s3-client-web-linux.x86_64.tar.gz + ./s3-client-web-linux.x86.tar.gz + ./s3-client-web-linux.arm64.tar.gz + ./s3-client-web-linux.riscv64.tar.gz + + tag_name: ${{ env.new_version }} + name: Release ${{ env.new_version }} + body: | + Automatic release by Gitea CI + Release version ${{ env.new_version }}. + Commit ID: ${{ env.commit_id }} + env: + GITHUB_TOKEN: ${{ secrets.TOKEN }}