Update developer notes: All SDKs ready for public release - 2025-07-0… #7
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [ main, develop, testing ] | |
| pull_request: | |
| branches: [ main, develop, testing ] | |
| jobs: | |
| build-test: | |
| runs-on: ubuntu-latest | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.10' | |
| - name: Check required secrets | |
| env: | |
| NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
| PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} | |
| DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} | |
| MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} | |
| MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} | |
| NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} | |
| CRATES_TOKEN: ${{ secrets.CRATES_TOKEN }} | |
| run: | | |
| for secret in NPM_TOKEN PYPI_TOKEN DOCKERHUB_TOKEN MAVEN_USERNAME MAVEN_PASSWORD NUGET_API_KEY CRATES_TOKEN; do | |
| if [ -z "${!secret}" ]; then | |
| echo "❌ Secret $secret is not set. Please add it to your repository/organization secrets." | |
| exit 1 | |
| fi | |
| done | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Set up Go | |
| uses: actions/setup-go@v4 | |
| with: | |
| go-version: '1.21' | |
| - name: Set up Rust | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| override: true | |
| - name: Set up Java | |
| uses: actions/setup-java@v3 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - name: Set up .NET | |
| uses: actions/setup-dotnet@v3 | |
| with: | |
| dotnet-version: '6.0.x' | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| cmake \ | |
| make \ | |
| gcc \ | |
| g++ \ | |
| libssl-dev \ | |
| libboost-all-dev \ | |
| libspdlog-dev \ | |
| libgtest-dev \ | |
| nlohmann-json3-dev \ | |
| libfmt-dev \ | |
| libgflags-dev \ | |
| doxygen \ | |
| graphviz \ | |
| curl \ | |
| wget \ | |
| git \ | |
| lua5.4 \ | |
| liblua5.4-dev \ | |
| maven \ | |
| librocksdb-dev \ | |
| libsnappy-dev \ | |
| libzstd-dev \ | |
| liblz4-dev \ | |
| libbz2-dev \ | |
| libgmp-dev \ | |
| libmpfr-dev \ | |
| libmpc-dev | |
| - name: Install Python dependencies | |
| run: | | |
| pip install --upgrade pip | |
| if [ -f "projects/satox-sdk/requirements.txt" ]; then | |
| pip install -r projects/satox-sdk/requirements.txt | |
| else | |
| echo "requirements.txt not found, installing basic dependencies" | |
| pip install pytest cmake setuptools wheel | |
| fi | |
| if [ -f "projects/satox-sdk/requirements-dev.txt" ]; then | |
| pip install -r projects/satox-sdk/requirements-dev.txt | |
| else | |
| echo "requirements-dev.txt not found, skipping dev dependencies" | |
| fi | |
| - name: Check project structure | |
| run: | | |
| echo "Checking project structure..." | |
| ls -la projects/satox-sdk/ | |
| if [ -f "projects/satox-sdk/CMakeLists.txt" ]; then | |
| echo "✅ CMakeLists.txt found" | |
| else | |
| echo "❌ CMakeLists.txt not found" | |
| exit 1 | |
| fi | |
| echo "Checking bindings structure..." | |
| ls -la projects/satox-sdk/bindings/ | |
| if [ -d "projects/satox-sdk/bindings" ]; then | |
| echo "✅ Bindings directory found" | |
| ls -la projects/satox-sdk/bindings/ | |
| else | |
| echo "❌ Bindings directory not found" | |
| exit 1 | |
| fi | |
| echo "Checking additional components..." | |
| for component in satox-quantum satox-transactions satox-assets satox-api; do | |
| if [ -d "projects/satox-sdk/$component" ]; then | |
| echo "✅ $component found" | |
| else | |
| echo "⚠️ $component not found" | |
| fi | |
| done | |
| - name: Build project | |
| run: | | |
| cd projects/satox-sdk | |
| mkdir -p build && cd build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DENABLE_INTEGRATION_TESTS=ON \ | |
| -DENABLE_QUANTUM_SECURITY=ON \ | |
| -DENABLE_LOGGING=ON \ | |
| -DENABLE_MONITORING=ON \ | |
| -DBUILD_PYTHON_BINDINGS=ON \ | |
| -DBUILD_NODEJS_BINDINGS=ON \ | |
| -DBUILD_GO_BINDINGS=ON \ | |
| -DBUILD_RUST_BINDINGS=ON \ | |
| -DBUILD_JAVA_BINDINGS=ON \ | |
| -DBUILD_CSHARP_BINDINGS=ON \ | |
| -DBUILD_LUA_BINDINGS=ON \ | |
| -DBUILD_WASM_BINDINGS=ON | |
| make -j$(nproc) | |
| - name: Run tests | |
| run: | | |
| cd projects/satox-sdk/build | |
| if [ -f "CTestTestfile.cmake" ]; then | |
| ctest --output-on-failure | |
| else | |
| echo "No tests found, skipping test execution" | |
| fi | |
| - name: Test Python bindings | |
| run: | | |
| cd projects/satox-sdk/bindings/python | |
| if [ -f "setup.py" ]; then | |
| python3 setup.py build_ext --inplace | |
| python3 -m pytest tests/ -v || echo "Python binding tests completed" | |
| else | |
| echo "Python bindings setup.py not found" | |
| fi | |
| - name: Test TypeScript bindings | |
| run: | | |
| cd projects/satox-sdk/bindings/typescript | |
| if [ -f "package.json" ]; then | |
| npm install | |
| npm run build || echo "TypeScript build completed" | |
| npm test || echo "TypeScript tests completed" | |
| else | |
| echo "TypeScript package.json not found" | |
| fi | |
| - name: Test Go bindings | |
| run: | | |
| cd projects/satox-sdk/bindings/go | |
| if [ -f "go.mod" ]; then | |
| go mod tidy | |
| go test ./... -v || echo "Go binding tests completed" | |
| else | |
| echo "Go go.mod not found" | |
| fi | |
| - name: Test Rust bindings | |
| run: | | |
| cd projects/satox-sdk/bindings/rust | |
| if [ -f "Cargo.toml" ]; then | |
| cargo test --verbose || echo "Rust binding tests completed" | |
| else | |
| echo "Rust Cargo.toml not found" | |
| fi | |
| - name: Test Java bindings | |
| run: | | |
| cd projects/satox-sdk/bindings/java | |
| if [ -f "pom.xml" ]; then | |
| mvn clean test || echo "Java binding tests completed" | |
| else | |
| echo "Java pom.xml not found" | |
| fi | |
| - name: Test C# bindings | |
| run: | | |
| cd projects/satox-sdk/bindings/csharp | |
| if [ -f "*.csproj" ]; then | |
| dotnet test || echo "C# binding tests completed" | |
| else | |
| echo "C# .csproj not found" | |
| fi | |
| - name: Test additional components | |
| run: | | |
| echo "Testing additional SDK components..." | |
| # Test quantum security component | |
| if [ -d "projects/satox-sdk/satox-quantum" ]; then | |
| echo "✅ Testing quantum security component" | |
| cd projects/satox-sdk/satox-quantum | |
| if [ -f "CMakeLists.txt" ]; then | |
| mkdir -p build && cd build | |
| cmake .. && make -j$(nproc) || echo "Quantum component build completed" | |
| fi | |
| cd ../.. | |
| fi | |
| # Test transactions component | |
| if [ -d "projects/satox-sdk/satox-transactions" ]; then | |
| echo "✅ Testing transactions component" | |
| cd projects/satox-sdk/satox-transactions | |
| if [ -f "CMakeLists.txt" ]; then | |
| mkdir -p build && cd build | |
| cmake .. && make -j$(nproc) || echo "Transactions component build completed" | |
| fi | |
| cd ../.. | |
| fi | |
| # Test assets component | |
| if [ -d "projects/satox-sdk/satox-assets" ]; then | |
| echo "✅ Testing assets component" | |
| cd projects/satox-sdk/satox-assets | |
| if [ -f "CMakeLists.txt" ]; then | |
| mkdir -p build && cd build | |
| cmake .. && make -j$(nproc) || echo "Assets component build completed" | |
| fi | |
| cd ../.. | |
| fi | |
| # Test API component | |
| if [ -d "projects/satox-sdk/satox-api" ]; then | |
| echo "✅ Testing API component" | |
| cd projects/satox-sdk/satox-api | |
| if [ -f "CMakeLists.txt" ]; then | |
| mkdir -p build && cd build | |
| cmake .. && make -j$(nproc) || echo "API component build completed" | |
| fi | |
| cd ../.. | |
| fi | |
| - name: Generate documentation | |
| run: | | |
| cd projects/satox-sdk | |
| if [ -f "Doxyfile" ]; then | |
| doxygen Doxyfile | |
| echo "✅ Documentation generated" | |
| else | |
| echo "⚠️ Doxyfile not found, skipping documentation generation" | |
| fi | |
| - name: Check for clean script | |
| run: | | |
| if [ -f "scripts/clean_release.sh" ]; then | |
| echo "✅ Clean script found" | |
| chmod +x scripts/clean_release.sh | |
| else | |
| echo "❌ Clean script not found at scripts/clean_release.sh" | |
| exit 1 | |
| fi | |
| - name: Run cleanup script (dry run) | |
| run: | | |
| echo "Running cleanup script in dry-run mode..." | |
| ./scripts/clean_release.sh --dry-run || echo "Clean script completed (dry run)" | |
| - name: Verify build artifacts | |
| run: | | |
| cd projects/satox-sdk/build | |
| echo "Checking build artifacts..." | |
| find . -name "*.so" -o -name "*.a" -o -name "*-tests" -o -name "*-example" | head -10 | |
| echo "Build verification completed" | |
| - name: Verify bindings artifacts | |
| run: | | |
| echo "Checking bindings artifacts..." | |
| cd projects/satox-sdk/bindings | |
| for binding in python typescript javascript go rust java csharp lua wasm; do | |
| if [ -d "$binding" ]; then | |
| echo "✅ $binding bindings found" | |
| ls -la "$binding/" | |
| else | |
| echo "⚠️ $binding bindings not found" | |
| fi | |
| done | |
| echo "Bindings verification completed" | |
| - name: Verify component artifacts | |
| run: | | |
| echo "Checking component artifacts..." | |
| cd projects/satox-sdk | |
| for component in satox-quantum satox-transactions satox-assets satox-api; do | |
| if [ -d "$component" ]; then | |
| echo "✅ $component component found" | |
| ls -la "$component/" | |
| else | |
| echo "⚠️ $component component not found" | |
| fi | |
| done | |
| echo "Component verification completed" | |
| - name: Cache node_modules | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| node_modules | |
| **/node_modules | |
| key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock', '**/package-lock.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-node- | |
| - name: Cache pip | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pip- | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cargo/registry | |
| key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-registry- | |
| - name: Cache cargo build | |
| uses: actions/cache@v4 | |
| with: | |
| path: target | |
| key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-build- | |
| - name: Cache Go modules | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/go/pkg/mod | |
| key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
| restore-keys: | | |
| ${{ runner.os }}-go- | |
| - name: Cache Maven packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/repository | |
| key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-maven- |