--- name: Blue Build CLI CI/CD on: push: branches: [main, develop] pull_request: branches: [main] workflow_dispatch: env: CARGO_TERM_COLOR: always RUST_BACKTRACE: 1 DEBIAN_FRONTEND: noninteractive jobs: build-and-package: name: Build and Package Rust CLI runs-on: ubuntu-latest container: image: rust:1.75-bullseye steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Rust environment run: | rustc --version cargo --version - name: Install build dependencies run: | apt-get update apt-get install -y \ build-essential \ devscripts \ debhelper \ git \ ca-certificates \ pkg-config - name: Download Rust dependencies run: cargo fetch - name: Build CLI run: | cargo build --release chmod +x target/release/blue-build-cli - name: Create debian directory run: | mkdir -p debian cat > debian/control << EOF Source: blue-build-cli Section: utils Priority: optional Maintainer: Blue Build Team Build-Depends: debhelper (>= 13), build-essential, pkg-config, git, ca-certificates Standards-Version: 4.6.2 Package: blue-build-cli Architecture: any Depends: \${shlibs:Depends}, \${misc:Depends} Description: Blue Build Command Line Interface Blue Build CLI provides command-line tools for managing blue-build recipes and building container images. EOF cat > debian/rules << EOF #!/usr/bin/make -f %: dh \$@ override_dh_auto_install: dh_auto_install mkdir -p debian/blue-build-cli/usr/bin cp target/release/blue-build-cli debian/blue-build-cli/usr/bin/ EOF cat > debian/changelog << EOF blue-build-cli (1.0.0-1) unstable; urgency=medium * Initial release * Blue Build CLI implementation -- Blue Build Team $(date -R) EOF cat > debian/compat << EOF 13 EOF chmod +x debian/rules - name: Build Debian package run: | dpkg-buildpackage -us -uc -b ls -la ../*.deb - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: blue-build-cli-deb path: ../*.deb retention-days: 30 test: name: Test Rust CLI runs-on: ubuntu-latest container: image: rust:1.75-bullseye steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Rust environment run: | rustc --version cargo --version - name: Download Rust dependencies run: cargo fetch - name: Run tests run: cargo test - name: Test CLI help run: | cargo build --release ./target/release/blue-build-cli --help || echo "Help command not implemented yet"