-
Notifications
You must be signed in to change notification settings - Fork 129
139 lines (120 loc) · 4.74 KB
/
main.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
name: Integration Tests (latest)
# Cancel duplicate jobs
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
on:
push:
branches: [ master ]
pull_request:
jobs:
build-and-test:
name: Test PY=${{ matrix.python-version }}, BCD=${{ matrix.bitcoind-version }}, EXP=${{ matrix.experimental }}, DEP=${{ matrix.deprecated }}
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
bitcoind-version: ["26.0"]
experimental: [1]
deprecated: [0]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Download Bitcoin ${{ matrix.bitcoind-version }} & install binaries
run: |
export BITCOIND_VERSION=${{ matrix.bitcoind-version }}
wget https://bitcoincore.org/bin/bitcoin-core-${BITCOIND_VERSION}/bitcoin-${BITCOIND_VERSION}-x86_64-linux-gnu.tar.gz
tar -xzf bitcoin-${BITCOIND_VERSION}-x86_64-linux-gnu.tar.gz
sudo mv bitcoin-${BITCOIND_VERSION}/bin/* /usr/local/bin
rm -rf bitcoin-${BITCOIND_VERSION}-x86_64-linux-gnu.tar.gz bitcoin-${BITCOIND_VERSION}
- name: Download Core Lightning latest & install binaries
id: cln-latest-install
run: |
url=$(curl -s https://api.github.com/repos/ElementsProject/lightning/releases/latest \
| jq '.assets[] | select(.name | contains("22.04")) | .browser_download_url' \
| tr -d '\"')
wget $url
sudo tar -xvf ${url##*/} -C /usr/local --strip-components=2
echo "CLN_VERSION=$(lightningd --version)" >> "$GITHUB_OUTPUT"
- name: Checkout Core Lightning latest
uses: actions/checkout@v4
with:
repository: 'ElementsProject/lightning'
path: 'lightning'
ref: ${{ steps.cln-latest-install.outputs.CLN_VERSION }}
fetch-depth: 0 # Fetch all history for all branches and tags
submodules: 'recursive'
- name: Install Core Lightning Python package dependencies
run: |
sudo apt-get install -y \
python3 \
python3-pip \
cd lightning
pip3 install --user -U \
pip \
poetry \
wheel \
blinker \
pytest-custom-exit-code==0.3.0 \
pytest-json-report
poetry install
poetry update
poetry export --without-hashes -f requirements.txt --output requirements.txt
pip install --user -U -r requirements.txt
pip install --user contrib/pyln-client contrib/pyln-testing flaky
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Run pytest tests
run: |
export CLN_PATH=${{ github.workspace }}/lightning
export COMPAT=${{ matrix.deprecated }}
export EXPERIMENTAL_FEATURES=${{ matrix.experimental }}
export SLOW_MACHINE=1
export TEST_DEBUG=1
export TRAVIS=1
export VALGRIND=0
pip3 install --upgrade pip
pip3 install --user -U virtualenv pip > /dev/null
plugin_dirs=''
if [[ '${{ github.event_name }}' == 'pull_request' ]]
then
# Fetch and checkout branches to permit the 'git diff' below.
git fetch && git checkout ${{ github.base_ref }}
head_ref='${{ github.head_ref }}'
source_repo="${{ github.event.pull_request.head.repo.full_name }}"
# Fetch and update local head ref if the source repository is not ours.
if [[ "$source_repo" != "${{ github.repository }}" ]]
then
git remote add other-remote https://github.com/$source_repo
git fetch other-remote
head_ref="other-remote/${{ github.head_ref }}"
else
git checkout ${{ github.head_ref }}
fi
# Collect the plugins that have changed.
plugin_dirs=$(git diff --name-only ${{ github.base_ref }} $head_ref \
| cut -d '/' -f1 \
| grep -v '^\.' \
| grep -v 'archived' \
| xargs -I {} find {} -maxdepth 0 -type d)
fi
# Run the tests: In the case of a 'pull_request' event only the plugins in `plugin_dirs`
# are going to be tested; otherwise ('push' event) we test all plugins.
python3 .ci/test.py $(echo "$plugin_dirs")
gather:
# A dummy task that depends on the full matrix of tests, and
# signals successful completion. Used for the PR status to pass
# before merging.
name: CI completion
runs-on: ubuntu-22.04
needs:
- build-and-test
steps:
- name: Complete
run: |
echo CI completed successfully