name: CI run-name: ${{ github.actor }} is running myRPC CI on: push: branches: - main - master pull_request: branches: - main - master jobs: build: name: Build and Test runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y gcc make libconfig-dev dpkg-dev ruby ruby-dev build-essential sudo gem install --no-document fpm - name: Build project run: make all - name: Verify binaries exist run: | test -x build/myRPC-client test -x build/myRPC-server echo "Binaries built successfully" - name: Test server startup run: | sudo mkdir -p /etc/myRPC printf "port = 9090;\nsocket_type = \"stream\";\n" | sudo tee /etc/myRPC/myRPC.conf printf "${{ github.actor }}\n" | sudo tee /etc/myRPC/users.conf build/myRPC-server & pid=$! sleep 2 ps -p $pid kill $pid echo "Server started successfully" - name: Test client-server interaction run: | build/myRPC-server & pid=$! sleep 2 build/myRPC-client -h 127.0.0.1 -p 9090 -s -c "echo OK" > response.txt grep -q "OK" response.txt kill $pid echo "Client received OK from server" lint: name: Makefile Lint runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Check Makefile syntax run: make -n all clean: name: Clean target test runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Test clean run: | make all make clean test ! -d build deb: name: Build deb packages runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install packaging tools run: | sudo apt-get update sudo apt-get install -y ruby ruby-dev build-essential sudo gem install --no-document fpm - name: Build deb packages run: make deb - name: Verify deb files run: ls *.deb | tee deb-list.txt