第六章 GitHub Actions
添加self-hosted runner
首先到仓库-设置-Actions中添加Runner:
然后选则runner的宿主操作系统和架构:
然后根据提示一步一步完成安装。需要注意的一点是,不要以sudo或者root用户执行,否则github会告诉不允许操作。
完成安装以后,我们可以在github的self-hosted看到我们已经注册完成的就绪的runner:
启动self-hosted runner:
./run.sh
这是命令行下的运行方式,我们可以将runner设置为系统服务:
sudo ./svc.sh install
然后启动服务即可。
使用Docker 运行单元测试
下载odoo的docker官方镜像。
docker pull odoo
使用官方postgres10的镜像
sudo docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:10
编写docker使用的odoo的配置文件:
[options]
addons_path = /mnt/enterprise-13.0,/mnt/extra-addons
data_dir = /var/lib/odoo
; admin_passwd = admin
; csv_internal_sep = ,
; db_maxconn = 64
; db_name = False
; db_template = template1
; dbfilter = .*
; debug_mode = False
; email_from = False
; limit_memory_hard = 2684354560
; limit_memory_soft = 2147483648
; limit_request = 8192
; limit_time_cpu = 60
; limit_time_real = 120
; list_db = True
; log_db = False
; log_handler = [':INFO']
; log_level = info
; logfile = None
; longpolling_port = 8072
; max_cron_threads = 2
; osv_memory_age_limit = 1.0
; osv_memory_count_limit = False
; smtp_password = False
; smtp_port = 25
; smtp_server = localhost
; smtp_ssl = False
; smtp_user = False
; workers = 0
; xmlrpc = True
; xmlrpc_interface =
; xmlrpc_port = 8069
; xmlrpcs = True
; xmlrpcs_interface =
; xmlrpcs_port = 8071
编写docker-compose文件:
version: '3'
services:
web:
build: .
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- /home/ubuntu/odoo/docker_config:/etc/odoo
- /home/ubuntu/odoo/enterprise_13.0:/mnt/enterprise-13.0
- /home/ubuntu/odoo/customer_addons13:/mnt/customer_addons
- .:/mnt/extra-addons
db:
image: postgres:10
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
volumes:
odoo-web-data:
其中web服务中的volumes映射了我们的Runners中的文件夹到docker容器中。 这里我们没有使用既有的docker镜像,而是使用build命令重新构建了一个。下面是构建的Dockerfile:
FROM odoo:13.0
USER odoo
COPY requirements.txt requirements.txt
在我们安装依赖的过程中,出现了如下错误:
Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-b5tvb7ad/aliyun-sms/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-hr27do8h --python-tag cp37:
usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: -c --help [cmd1 cmd2 ...]
or: -c --help-commands
or: -c cmd --help
error: invalid command 'bdist_wheel'
导致我们的依赖虽然显示编译成功,但是在运行测试的时候仍然找不到依赖库。处理方法是,在Dockerfile中加入下面的依赖:
RUN apt-get install python-dev python-pip -y \
apt-get install python3-dev python3-pip python3-venv python3-wheel -y
RUN pip3 install --upgrade pip &&\
pip3 install wheel && \
pip3 install --upgrade setuptools
添加badge
我们可以在项目的README文件中添加标识此项目测试成功或失败的badge:
![example branch parameter](https://github.com/actions/hello-world/workflows/Greet%20Everyone/badge.svg?branch=feature-1)