This commit is contained in:
2025-05-16 01:13:09 +03:00
parent 19d3f2f14a
commit 70abf4d70e

View File

@@ -1,16 +1,19 @@
name: myRPC-CI name: CI
run-name: \${{ github.actor }} is running myRPC CI
on: on:
push: push:
branches: branches:
\- main \- main
\- master
pull\_request: pull\_request:
branches: branches:
\- main \- main
\- master
jobs: jobs:
build: build:
name: Build and Unit Tests name: Build and Test
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
\- name: Checkout repository \- name: Checkout repository
@@ -19,7 +22,8 @@ uses: actions/checkout\@v3
- name: Install dependencies - name: Install dependencies
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install -y gcc make libconfig-dev dpkg-dev 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 - name: Build project
run: make all run: make all
@@ -30,61 +34,66 @@ uses: actions/checkout\@v3
test -x build/myRPC-server test -x build/myRPC-server
echo "Binaries built successfully" echo "Binaries built successfully"
- name: Test myRPC-server starts with config - name: Test server startup
run: | run: |
sudo mkdir -p /etc/myRPC sudo mkdir -p /etc/myRPC
printf "port = 9090;\nsocket_type = \"stream\";\n" | sudo tee /etc/myRPC/myRPC.conf printf "port = 9090;\nsocket_type = \"stream\";\n" | sudo tee /etc/myRPC/myRPC.conf
printf "$(whoami)\n" | sudo tee /etc/myRPC/users.conf printf "${{ github.actor }}\n" | sudo tee /etc/myRPC/users.conf
build/myRPC-server & build/myRPC-server &
SERVER_PID=$! pid=$!
sleep 2 sleep 2
ps -p $SERVER_PID ps -p $pid
kill $SERVER_PID kill $pid
echo "Server started and responded to ps" echo "Server started successfully"
- name: Test myRPC-client can connect - name: Test client-server interaction
run: | run: |
build/myRPC-server & build/myRPC-server &
SERVER_PID=$! pid=$!
sleep 2 sleep 2
build/myRPC-client -h 127.0.0.1 -p 9090 -s -c "echo OK" > output.log build/myRPC-client -h 127.0.0.1 -p 9090 -s -c "echo OK" > response.txt
grep -q 'OK' output.log grep -q "OK" response.txt
kill $SERVER_PID kill $pid
echo "Client connected and received OK" echo "Client received OK from server"
makefile-lint: lint:
name: Makefile lint name: Makefile Lint
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
\- name: Checkout repository \- name: Checkout repository
uses: actions/checkout\@v3 uses: actions/checkout\@v3
\- name: Check Makefile syntax
run: make -n all
clean-target: - name: Check Makefile syntax
name: Test clean target run: make -n all
clean:
name: Clean target test
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
\- name: Checkout repository \- name: Checkout repository
uses: actions/checkout\@v3 uses: actions/checkout\@v3
\- name: Build then clean
run: |
make all
make clean
test ! -d build || echo "build directory exists"
deb-package: - name: Test clean
run: |
make all
make clean
test ! -d build
deb:
name: Build deb packages name: Build deb packages
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
\- name: Checkout repository \- name: Checkout repository
uses: actions/checkout\@v3 uses: actions/checkout\@v3
\- name: Install fpm and dpkg tools
run: | - name: Install packaging tools
sudo apt-get update run: |
sudo apt-get install -y ruby ruby-dev build-essential sudo apt-get update
sudo gem install --no-document fpm sudo apt-get install -y ruby ruby-dev build-essential
\- name: Build packages sudo gem install --no-document fpm
run: make deb
\- name: Verify .deb files exist - name: Build deb packages
run: ls \*.deb | tee deb-list.txt run: make deb
- name: Verify deb files
run: ls *.deb | tee deb-list.txt