@@ -13,18 +13,62 @@ jobs:
1313 - name : Checkout repository
1414 uses : actions/checkout@v4
1515
16- - name : Install dependencies
17- run : |
18- sudo apt-get update -y
19- sudo apt-get install -y socat
16+ - name : Create temporary directory for CLN data
17+ run : echo "CLN_DATA_DIR=$(mktemp -d)" >> $GITHUB_ENV
2018
2119 - name : Start bitcoind, electrs, and lightningd
2220 run : docker compose -p ldk-node -f tests/docker/docker-compose-cln.yml up -d
2321
24- - name : Forward lightningd RPC socket
22+ - name : Wait for bitcoind to be healthy
23+ run : |
24+ for i in $(seq 1 30); do
25+ if docker compose -p ldk-node -f tests/docker/docker-compose-cln.yml exec bitcoin bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass getblockchaininfo > /dev/null 2>&1; then
26+ echo "bitcoind is ready"
27+ exit 0
28+ fi
29+ echo "Waiting for bitcoind... ($i/30)"
30+ sleep 2
31+ done
32+ echo "ERROR: bitcoind not ready"
33+ exit 1
34+
35+ - name : Mine initial block for CLN
36+ run : |
37+ docker compose -p ldk-node -f tests/docker/docker-compose-cln.yml exec bitcoin bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass createwallet miner
38+ ADDR=$(docker compose -p ldk-node -f tests/docker/docker-compose-cln.yml exec bitcoin bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass -rpcwallet=miner getnewaddress)
39+ docker compose -p ldk-node -f tests/docker/docker-compose-cln.yml exec bitcoin bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass generatetoaddress 1 "$ADDR"
40+ docker compose -p ldk-node -f tests/docker/docker-compose-cln.yml exec bitcoin bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass unloadwallet miner
41+
42+ - name : Start lightningd
43+ run : docker compose -p ldk-node -f tests/docker/docker-compose-cln.yml up -d cln
44+ env :
45+ CLN_DATA_DIR : ${{ env.CLN_DATA_DIR }}
46+
47+ - name : Wait for CLN to be ready
48+ run : |
49+ for i in $(seq 1 30); do
50+ if docker compose -p ldk-node -f tests/docker/docker-compose-cln.yml exec cln test -S /root/.lightning/regtest/lightning-rpc 2>/dev/null; then
51+ echo "CLN RPC socket found"
52+ break
53+ fi
54+ echo "Waiting for CLN RPC socket... ($i/30)"
55+ sleep 2
56+ done
57+ docker compose -p ldk-node -f tests/docker/docker-compose-cln.yml exec cln test -S /root/.lightning/regtest/lightning-rpc || {
58+ echo "ERROR: CLN RPC socket not found after 60 seconds"
59+ docker compose -p ldk-node -f tests/docker/docker-compose-cln.yml logs cln
60+ exit 1
61+ }
62+
63+ - name : Set permissions for CLN data directory
2564 run : |
26- docker exec ldk-node-cln-1 sh -c "socat -d -d TCP-LISTEN:9937,fork,reuseaddr UNIX-CONNECT:/root/.lightning/regtest/lightning-rpc&"
27- socat -d -d UNIX-LISTEN:/tmp/lightning-rpc,reuseaddr,fork TCP:127.0.0.1:9937&
65+ sudo chown -R $(id -u):$(id -g) $CLN_DATA_DIR
66+ sudo chmod -R 755 $CLN_DATA_DIR
67+ env :
68+ CLN_DATA_DIR : ${{ env.CLN_DATA_DIR }}
2869
2970 - name : Run CLN integration tests
30- run : RUSTFLAGS="--cfg cln_test" cargo test --test integration_tests_cln
71+ run : CLN_SOCKET_PATH=$CLN_DATA_DIR/regtest/lightning-rpc
72+ RUSTFLAGS="--cfg cln_test" cargo test --test integration_tests_cln -- --show-output --test-threads=1
73+ env :
74+ CLN_DATA_DIR : ${{ env.CLN_DATA_DIR }}
0 commit comments