File: testing.yml

package info (click to toggle)
python-bonsai 1.5.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,108 kB
  • sloc: python: 6,660; ansic: 5,534; makefile: 169; sh: 90
file content (155 lines) | stat: -rw-r--r-- 5,691 bytes parent folder | download
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
name: Build

on: [push]

jobs:
  ubuntu:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ['3.7', '3.8', '3.9', '3.10']
    env:
      PYTHON: ${{ matrix.python-version }}
      OS: ubuntu

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install OS dependencies
      run: |
        sudo apt-get update
        sudo apt-get install -y libldap2-dev libsasl2-dev ldap-utils sasl2-bin
        sudo apt-get install -y krb5-user libsasl2-modules-gssapi-mit libkrb5-dev
        apt list --installed
    - name: Install Python dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install poetry wheel
        poetry config virtualenvs.create false
        poetry install --no-root -E gevent -E tornado -E trio
        python -m pip list
    - name: Build Docker image
      run: docker build -t bonsai -f ./.ci/docker/Dockerfile .
    - name: Configure Docker container
      run: |
        mkdir /tmp/bonsai
        sudo chown 2001:2000 /tmp/bonsai
        docker run --cap-add=NET_ADMIN -v /tmp/bonsai/:/home/ldap/run/:z -d -h bonsai.test --name server bonsai
        export BONSAI_DOCKER_IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' server`
        sudo bash -c 'echo -e "\n'$BONSAI_DOCKER_IP'        bonsai.test" >> /etc/hosts'
        cat /etc/hosts
        ping -c 2 bonsai.test
        sleep 4
    - name: Check container and LDAP tools
      run: |
        docker exec server ps aux
        ldapwhoami -Y DIGEST-MD5 -h bonsai.test -U admin -w p@ssword
        ldapsearch -h bonsai.test -b "" -s base 'objectclass=*' -x -LLL +
        ldapsearch -VV
        saslpluginviewer
    - name: Install package
      run: |
        printf "\n\n[options]\nzip_safe = False" >> setup.cfg
        export CFLAGS="-coverage"
        python setup.py install
    - name: Run tests
      run: |
        export BONSAI_DOCKER_IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' server`
        sed -i.bak "s/127.0.0.1/$BONSAI_DOCKER_IP/g" ./tests/test.ini
        export KRB5_CONFIG="`pwd`/.ci/krb5/krb5.conf"
        export BONSAI_INSTALL_PATH=`python -c "import bonsai; print(bonsai.__file__[:-12])"`
        echo $BONSAI_INSTALL_PATH
        python -m pytest -v --cov-config .coveragerc --cov-report= --cov=$BONSAI_INSTALL_PATH
    - name: Upload coverage
      uses: codecov/codecov-action@v1
      with:
        directory: "."
        env_vars: OS,PYTHON
        fail_ci_if_error: true

  macos:
    runs-on: macos-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ['3.7', '3.8', '3.9', '3.10']
    env:
      PYTHON: ${{ matrix.python-version }}
      OS: macos

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install Python dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install poetry wheel
        poetry config virtualenvs.create false
        poetry install --no-root -E gevent -E tornado -E trio
        python -m pip install --force-reinstall --no-binary gevent delocate
        python -m pip list
    - name: Install Docker
      run: bash ./.github/workflows/scripts/install_docker_mac.sh
    - name: Wait on Docker
      run: |
        bash ./.github/workflows/scripts/wait_docker_mac.sh
        sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.Kerberos.kdc.plist
    - name: Build Docker image
      run: |
        docker build -t bonsai -f ./.ci/docker/Dockerfile .
    - name: Configure Docker container
      run: |
        mkdir /tmp/bonsai
        sudo chown 2001:2000 /tmp/bonsai
        docker run --cap-add=NET_ADMIN -p 389:389 -p 636:636 -p 88:88/udp -p 749:749 -p 8000:8000 -d -h bonsai.test --name server bonsai
        sudo bash -c 'echo -e "\n127.0.0.1        bonsai.test" >> /etc/hosts'
        sudo scutil --set HostName bonsai.test
        cat /etc/hosts
        ping -c 2 bonsai.test
        sleep 5
    - name: Check container and LDAP tools
      run: |
        docker exec server ps aux
        ldapwhoami -Y DIGEST-MD5 -h bonsai.test -U admin -w p@ssword
        ldapsearch -x -h bonsai.test -b "" -s base 'objectclass=*' -LLL +
        ldapsearch -VV
    - name: Install package
      run: |
        printf "[build_ext]\ninclude_dirs=/usr/local/opt/openldap/include\nlibrary_dirs=/usr/local/opt/openldap/lib" > ./setup.cfg
        printf "\n\n[options]\nzip_safe = False" >> setup.cfg
        export CFLAGS="-coverage"
        python setup.py install
    - name: Check linking
      run: |
        otool -L ./build/*/bonsai/*.so
    - name: Run tests
      run: |
        export KRB5_CONFIG="`pwd`/.ci/krb5/krb5.conf"
        export BONSAI_INSTALL_PATH=`python -c "import bonsai; print(bonsai.__file__[:-12])"`
        echo $BONSAI_INSTALL_PATH
        py.test -v --cov-config .coveragerc --cov-report= --cov=$BONSAI_INSTALL_PATH
    - name: Upload coverage
      uses: codecov/codecov-action@v1
      with:
        directory: "."
        env_vars: OS,PYTHON
        fail_ci_if_error: true
    - name: Create wheel
      run: |
        python setup.py clean
        python setup.py build -f
        python setup.py bdist_wheel
        delocate-wheel -v ./dist/bonsai-*.whl
    - name: Upload wheel
      uses: actions/upload-artifact@v2
      with:
        name: wheel
        path: ./dist/bonsai-*.whl
        retention-days: 5