Skip to content

Commit b46ce15

Browse files
committed
feat: setup github actions
1 parent 41f2180 commit b46ce15

File tree

4 files changed

+142
-15
lines changed

4 files changed

+142
-15
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
name: Build & Test
2+
3+
on: [push]
4+
5+
env:
6+
SMTP_HOST: localhost
7+
SMTP_PORT: 1025
8+
MEMCACHED_HOST: localhost
9+
REDIS_HOST: localhost
10+
11+
jobs:
12+
comply:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- uses: actions/checkout@v4
17+
- uses: ConorMacBride/install-package@v1
18+
with:
19+
apt: libmemcached-dev
20+
- name: Set up Python
21+
uses: actions/setup-python@v5
22+
with:
23+
python-version: "3.x"
24+
architecture: "x64"
25+
- name: Setup PDM
26+
uses: pdm-project/setup-pdm@v4
27+
- name: Install dependencies
28+
run: pdm install
29+
- name: Make Comply
30+
run: make comply
31+
32+
test:
33+
needs: comply
34+
runs-on: ubuntu-latest
35+
36+
steps:
37+
- uses: actions/checkout@v4
38+
- uses: ConorMacBride/install-package@v1
39+
with:
40+
apt: libmemcached-dev
41+
- name: Set up Python
42+
uses: actions/setup-python@v5
43+
with:
44+
python-version: "3.x"
45+
architecture: "x64"
46+
- uses: hoverkraft-tech/compose-action@v2.0.1
47+
with:
48+
compose-file: "./docker/compose-services-only.yml"
49+
- name: Setup PDM
50+
uses: pdm-project/setup-pdm@v4
51+
- name: Install dependencies
52+
run: pdm install
53+
- name: Make Test
54+
run: make test
55+
56+
test-all:
57+
needs: test
58+
runs-on: ${{ matrix.os }}
59+
strategy:
60+
matrix:
61+
# FIXME ?
62+
# os: [ubuntu-latest, macos-latest, windows-latest]
63+
os: [ubuntu-latest]
64+
python-version: ["3.8", "3.9", "3.11", "3.12", "3.13", "pypy3.10"]
65+
66+
steps:
67+
- uses: actions/checkout@v4
68+
- uses: ConorMacBride/install-package@v1
69+
with:
70+
apt: libmemcached-dev
71+
- uses: hoverkraft-tech/compose-action@v2.0.1
72+
with:
73+
compose-file: "./docker/compose-services-only.yml"
74+
- name: Setup PDM
75+
uses: pdm-project/setup-pdm@v4
76+
- name: Install dependencies
77+
run: pdm install
78+
- name: Make Test
79+
run: make test
80+
81+
cli-smoke-test:
82+
needs: test-all
83+
runs-on: ubuntu-latest
84+
85+
steps:
86+
- uses: actions/checkout@v4
87+
- uses: hoverkraft-tech/compose-action@v2.0.1
88+
with:
89+
compose-file: "./docker-compose.yml"
90+
- name: CLI Smoke Tests
91+
run: ./scripts/cli-smoke-test.sh
92+
- if: always()
93+
name: Review Output
94+
run: cat ./tmp/cli-smoke-test.out

docker/compose-services-only.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
volumes:
2+
mailpit-data:
3+
4+
services:
5+
redis:
6+
image: redis:latest
7+
hostname: redis
8+
ports:
9+
- 6379:6379
10+
11+
memcached:
12+
image: memcached:latest
13+
hostname: memcached
14+
ports:
15+
- 11211:11211
16+
17+
mailpit:
18+
image: axllent/mailpit
19+
hostname: mailpit
20+
restart: always
21+
volumes:
22+
- mailpit-data:/data
23+
- ../docker/mailpit:/certificates
24+
ports:
25+
- 8025:8025
26+
- 1025:1025
27+
environment:
28+
MP_MAX_MESSAGES: 5000
29+
MP_DATA_FILE: /data/mailpit.db
30+
MP_SMTP_AUTH_ACCEPT_ANY: 1
31+
MP_SMTP_AUTH_ALLOW_INSECURE: 1
32+
MP_SMTP_TLS_CERT: /certificates/dev-cert.pem
33+
MP_SMTP_TLS_KEY: /certificates/dev-key.pem

scripts/cli-smoke-test.sh

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ function smoke-test {
1919
python:$pyver \
2020
/bin/bash
2121

22-
docker exec -it cement-cli-smoke-test /bin/bash -c "cd /src ; pip install `ls dist/cement-*.tar.gz`[cli]"
23-
tmp=$(docker exec cement-cli-smoke-test /bin/bash -c "mktemp -d")
22+
docker exec cement-cli-smoke-test /bin/bash -c "cd /src ; pip install `ls dist/cement-*.tar.gz`[cli]"
23+
tmp=$(docker exec -t cement-cli-smoke-test /bin/bash -c "mktemp -d")
24+
2425

25-
2626
### verify help output
2727

2828
res=$(docker exec cement-cli-smoke-test /bin/bash -c "cement --version")
29-
echo "$res" | grep "Cement Framework $CEMENT_VERSION.\d"
30-
echo "$res" | grep "Python $pyver.\d"
29+
echo "$res" | grep "Cement Framework $CEMENT_VERSION.[0-9]"
30+
echo "$res" | grep "Python $pyver.[0-9]"
3131
echo "$res" | grep "Platform Linux.*"
3232
res=$(docker exec cement-cli-smoke-test /bin/bash -c "cement --help")
3333
echo "$res" | grep "Cement Framework Developer Tools"
@@ -45,37 +45,37 @@ function smoke-test {
4545
echo "$res" | grep "destination directory path"
4646
echo "$res" | grep -- "-D, --defaults"
4747

48-
48+
4949
### generate a project
5050

5151
docker exec cement-cli-smoke-test /bin/bash -c "cement generate project -D $tmp/myapp"
5252
docker exec cement-cli-smoke-test /bin/bash -c "cd $tmp/myapp ; pip install -r requirements.txt"
5353
docker exec cement-cli-smoke-test /bin/bash -c "cd $tmp/myapp ; pip install setuptools"
5454
docker exec cement-cli-smoke-test /bin/bash -c "cd $tmp/myapp ; python setup.py install"
55-
res=$(docker exec cement-cli-smoke-test /bin/bash -c "myapp --version")
56-
echo "$res" | grep "Cement Framework $CEMENT_VERSION\.\d"
57-
echo "$res" | grep "Python $pyver.\d"
55+
res=$(docker exec -t cement-cli-smoke-test /bin/bash -c "myapp --version")
56+
echo "$res" | grep "Cement Framework $CEMENT_VERSION\.[0-9]"
57+
echo "$res" | grep "Python $pyver.[0-9]"
5858
echo "$res" | grep "Platform Linux.*"
5959

60-
60+
6161
### generate a script
6262

6363
docker exec cement-cli-smoke-test /bin/bash -c "cement generate script -D $tmp/myscript"
64-
res=$(docker exec cement-cli-smoke-test /bin/bash -c "python $tmp/myscript/myscript.py --version")
64+
res=$(docker exec -t cement-cli-smoke-test /bin/bash -c "python $tmp/myscript/myscript.py --version")
6565
echo "$res" | grep "myscript v0.0.1"
66-
66+
6767

6868
### generate an extension
6969

7070
docker exec cement-cli-smoke-test /bin/bash -c "cement generate extension -D $tmp/myapp/myapp/ext"
71-
res=$(docker exec cement-cli-smoke-test /bin/bash -c "cat $tmp/myapp/myapp/ext/ext_myextension.py")
71+
res=$(docker exec -t cement-cli-smoke-test /bin/bash -c "cat $tmp/myapp/myapp/ext/ext_myextension.py")
7272
echo "$res" | grep "myextension_pre_run_hook"
7373

7474

7575
### generate a plugin
7676

7777
docker exec cement-cli-smoke-test /bin/bash -c "cement generate plugin -D $tmp/myapp/myapp/plugins"
78-
res=$(docker exec cement-cli-smoke-test /bin/bash -c "cat $tmp/myapp/myapp/plugins/myplugin/controllers/myplugin.py")
78+
res=$(docker exec -t cement-cli-smoke-test /bin/bash -c "cat $tmp/myapp/myapp/plugins/myplugin/controllers/myplugin.py")
7979
echo "$res" | grep "class MyPlugin(Controller)"
8080

8181
### finish
@@ -93,4 +93,4 @@ for pyver in $PYTHON_VERSIONS; do
9393
echo -n "python $pyver . . . "
9494
smoke-test $pyver 2>> tmp/cli-smoke-test.out 1>> tmp/cli-smoke-test.out
9595
echo "ok"
96-
done
96+
done

tmp/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)