第六章 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)

results matching ""

    No results matching ""