From 5b02ce560a0254d2594e44b2e92f5a7a94f14ce9 Mon Sep 17 00:00:00 2001 From: "erique.rocha" Date: Mon, 13 Oct 2025 14:50:58 -0300 Subject: [PATCH] build package rpm --- .github/workflows/build-deb-develop.yml | 4 +- .github/workflows/build-rpm-develop.yml | 108 ++++++++++++++++++++++++ .gitignore | 1 + Cargo.toml | 13 ++- 4 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/build-rpm-develop.yml diff --git a/.github/workflows/build-deb-develop.yml b/.github/workflows/build-deb-develop.yml index b77753b..fe18e52 100644 --- a/.github/workflows/build-deb-develop.yml +++ b/.github/workflows/build-deb-develop.yml @@ -78,13 +78,13 @@ jobs: target/debian/*.deb target/debian/*.sha256 - # elease para PUSH na main (sem tag) + #release para PUSH na main (sem tag) - name: Create/Update Main Release (branch push) if: github.ref == 'refs/heads/main' uses: softprops/action-gh-release@v2 with: tag_name: Ubuntu-linux - name: Stable + name: Ubuntu linux-Stable draft: false prerelease: false make_latest: true diff --git a/.github/workflows/build-rpm-develop.yml b/.github/workflows/build-rpm-develop.yml new file mode 100644 index 0000000..9b97254 --- /dev/null +++ b/.github/workflows/build-rpm-develop.yml @@ -0,0 +1,108 @@ +name: Build and Release .rpm + +on: + push: + branches: + - develop + - main + tags: + - "v[0-9]+.[0-9]+.[0-9]+" + - "v[0-9]+.[0-9]+.[0-9]+-*" + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: write + env: + CARGO_TERM_COLOR: always + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Rust (stable) + uses: dtolnay/rust-toolchain@stable + + - name: Cache Rust build + uses: Swatinem/rust-cache@v2 + + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y build-essential pkg-config libssl-dev rpm + + - name: Install cargo-rpm + run: cargo install cargo-rpm + + - name: Generate Cargo.lock if missing + run: | + if [ ! -f Cargo.lock ]; then + cargo generate-lockfile + fi + + - name: Ensure rpm config exists + run: | + if [ ! -d rpm ]; then + cargo rpm init + fi + + - name: Build release + run: cargo build --release + + - name: Build .rpm + run: cargo rpm build + + - name: Upload .rpm artifact (sempre) + uses: actions/upload-artifact@v4 + with: + name: rpm-package + path: target/release/rpmbuild/RPMS/**/*.rpm + + #Detecta tipo quando for TAG + - name: Detect prerelease or stable (from tag) + if: startsWith(github.ref, 'refs/tags/') + id: relmeta + run: | + TAG="${GITHUB_REF_NAME}" + if [[ "$TAG" =~ -(alpha|beta|rc) ]]; then + echo "PRERELEASE=true" >> $GITHUB_OUTPUT + echo "RELEASE_NAME=Beta - ${TAG}" >> $GITHUB_OUTPUT + else + echo "PRERELEASE=false" >> $GITHUB_OUTPUT + echo "RELEASE_NAME=Stable - ${TAG}" >> $GITHUB_OUTPUT + fi + + - name: Generate SHA256 checksums + if: startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' + run: | + cd target/release/rpmbuild/RPMS + find . -name "*.rpm" -exec sh -c 'sha256sum "$1" > "$1.sha256"' _ {} \; + + #Release para TAGS semânticas + - name: Create GitHub Release (tags only) + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.ref_name }} + name: ${{ steps.relmeta.outputs.RELEASE_NAME }} + draft: false + prerelease: ${{ steps.relmeta.outputs.PRERELEASE }} + files: | + target/release/rpmbuild/RPMS/**/*.rpm + target/release/rpmbuild/RPMS/**/*.sha256 + + #release para PUSH na main (sem tag) + - name: Create/Update Main Release (branch push) + if: github.ref == 'refs/heads/main' + uses: softprops/action-gh-release@v2 + with: + tag_name: Fedora-linux + name: Fedora linux-Stable + draft: false + prerelease: false + make_latest: true + files: | + target/release/rpmbuild/RPMS/**/*.rpm + target/release/rpmbuild/RPMS/**/*.sha256 \ No newline at end of file diff --git a/.gitignore b/.gitignore index d81f12e..3100704 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /target /.idea +/.rpm diff --git a/Cargo.toml b/Cargo.toml index 05140f1..c7b3515 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "developerStartSpringboot" -authors = ["Erique Rocha "] +authors = ["erique.dev "] version = "0.1.0" edition = "2024" license = "GPL-3.0" @@ -22,6 +22,15 @@ clap = { version = "4.5.48", features = ["derive"] } rust-embed = "8" [package.metadata.deb] -maintainer = "Erique Rocha " +maintainer = "erique.dev " section = "utils" priority = "optional" + +[package.metadata.rpm] +package = "developerStartSpringboot" + +[package.metadata.rpm.cargo] +buildflags = ["--release"] + +[package.metadata.rpm.targets] +dss = { path = "/usr/bin/dss" }