Merge branch 'dev' of https://github.com/INTI-CMNB/KiBot into dev
This commit is contained in:
commit
6693d29309
|
|
@ -263,6 +263,54 @@ jobs:
|
||||||
ghcr.io/inti-cmnb/kicad6_auto_full:dev
|
ghcr.io/inti-cmnb/kicad6_auto_full:dev
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
|
||||||
|
push_to_registry_ng:
|
||||||
|
name: Push Docker image to Docker Hub (KiCad 7)
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: test
|
||||||
|
permissions:
|
||||||
|
packages: write
|
||||||
|
contents: read
|
||||||
|
# Don't create `dev` images using the `master`
|
||||||
|
if: github.ref == 'refs/heads/dev'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out the repo
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Log in to the Container registry
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Extract metadata (tags, labels) for Docker
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v4
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
setsoft/kicad_auto_test
|
||||||
|
ghcr.io/inti-cmnb/kicad_auto_test
|
||||||
|
ghcr.io/inti-cmnb/kicad7_auto_full
|
||||||
|
tags: |
|
||||||
|
type=raw,dev_k7
|
||||||
|
|
||||||
|
- name: Build and push Docker image
|
||||||
|
uses: docker/build-push-action@v3
|
||||||
|
with:
|
||||||
|
context: tools/dev_image_k7
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
setsoft/kicad_auto_test:dev_k7
|
||||||
|
ghcr.io/inti-cmnb/kicad_auto_test:dev_k7
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
|
||||||
coveralls:
|
coveralls:
|
||||||
name: Finish Coveralls
|
name: Finish Coveralls
|
||||||
needs: test
|
needs: test
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ if os.environ.get('KIAUS_USE_NIGHTLY'): # pragma: no cover (nightly)
|
||||||
sys_path.insert(0, pcbnew_path)
|
sys_path.insert(0, pcbnew_path)
|
||||||
# This helps other tools like iBoM to pick-up the right pcbnew module
|
# This helps other tools like iBoM to pick-up the right pcbnew module
|
||||||
if 'PYTHONPATH' in os.environ:
|
if 'PYTHONPATH' in os.environ:
|
||||||
os.environ['PYTHONPATH'] += ':'+pcbnew_path
|
os.environ['PYTHONPATH'] += os.pathsep+pcbnew_path
|
||||||
else:
|
else:
|
||||||
os.environ['PYTHONPATH'] = pcbnew_path
|
os.environ['PYTHONPATH'] = pcbnew_path
|
||||||
nightly = True
|
nightly = True
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ from .macros import macros, pre_class # noqa: F401
|
||||||
from .error import KiPlotConfigurationError
|
from .error import KiPlotConfigurationError
|
||||||
from .gs import GS
|
from .gs import GS
|
||||||
from .optionable import Optionable
|
from .optionable import Optionable
|
||||||
|
from .kicad.config import KiConf
|
||||||
from .kiplot import load_board
|
from .kiplot import load_board
|
||||||
from .misc import DRC_ERROR
|
from .misc import DRC_ERROR
|
||||||
from .log import get_logger
|
from .log import get_logger
|
||||||
|
|
@ -51,6 +52,9 @@ class Run_DRC(BasePreFlight): # noqa: F821
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
command = self.ensure_tool('KiAuto')
|
command = self.ensure_tool('KiAuto')
|
||||||
|
if GS.ki7:
|
||||||
|
# KiCad 7 can do some library parity checks, but we need to be sure that the KICAD7* vars are defined
|
||||||
|
KiConf.init(GS.pcb_file)
|
||||||
output = self.get_targets()[0]
|
output = self.get_targets()[0]
|
||||||
os.makedirs(os.path.dirname(output), exist_ok=True)
|
os.makedirs(os.path.dirname(output), exist_ok=True)
|
||||||
logger.debug('DRC report: '+output)
|
logger.debug('DRC report: '+output)
|
||||||
|
|
|
||||||
|
|
@ -855,7 +855,8 @@ def test_import_7(test_dir):
|
||||||
if context.ki7():
|
if context.ki7():
|
||||||
ctx.board_file.replace('kicad_pcb', 'kicad_pro')
|
ctx.board_file.replace('kicad_pcb', 'kicad_pro')
|
||||||
with open(ctx.board_file.replace('kicad_pcb', 'kicad_pro'), 'wt') as f:
|
with open(ctx.board_file.replace('kicad_pcb', 'kicad_pro'), 'wt') as f:
|
||||||
f.write(json.dumps({"board": {"design_settings": {"rule_severities": {"lib_footprint_issues": "ignore"}}}}))
|
f.write(json.dumps({"board": {"design_settings": {"rule_severities": {"lib_footprint_issues": "ignore",
|
||||||
|
"lib_footprint_mismatch": "ignore"}}}}))
|
||||||
ctx.run(extra=[])
|
ctx.run(extra=[])
|
||||||
ctx.expect_out_file('3Rs-drc.txt')
|
ctx.expect_out_file('3Rs-drc.txt')
|
||||||
ctx.clean_up()
|
ctx.clean_up()
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,39 @@ def test_print_sch_svg_ok(test_dir):
|
||||||
ctx.clean_up()
|
ctx.clean_up()
|
||||||
|
|
||||||
|
|
||||||
|
# @pytest.mark.slow
|
||||||
|
# @pytest.mark.eeschema
|
||||||
|
# def test_print_sch_ps_ok(test_dir):
|
||||||
|
# prj = 'test_v5'
|
||||||
|
# ctx = context.TestContext(test_dir, prj, 'print_sch_ps')
|
||||||
|
# ctx.run()
|
||||||
|
# # Check all outputs are there
|
||||||
|
# ctx.expect_out_file(SVG_FILE.replace('svg', 'ps'))
|
||||||
|
# ctx.clean_up()
|
||||||
|
|
||||||
|
|
||||||
|
# @pytest.mark.slow
|
||||||
|
# @pytest.mark.eeschema
|
||||||
|
# def test_print_sch_dxf_ok(test_dir):
|
||||||
|
# prj = 'test_v5'
|
||||||
|
# ctx = context.TestContext(test_dir, prj, 'print_sch_dxf')
|
||||||
|
# ctx.run()
|
||||||
|
# # Check all outputs are there
|
||||||
|
# ctx.expect_out_file(SVG_FILE.replace('svg', 'dxf'))
|
||||||
|
# ctx.clean_up()
|
||||||
|
|
||||||
|
|
||||||
|
# @pytest.mark.slow
|
||||||
|
# @pytest.mark.eeschema
|
||||||
|
# def test_print_sch_hpgl_ok(test_dir):
|
||||||
|
# prj = 'test_v5'
|
||||||
|
# ctx = context.TestContext(test_dir, prj, 'print_sch_hpgl')
|
||||||
|
# ctx.run()
|
||||||
|
# # Check all outputs are there
|
||||||
|
# ctx.expect_out_file(SVG_FILE.replace('svg', 'hpgl'))
|
||||||
|
# ctx.clean_up()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.slow
|
@pytest.mark.slow
|
||||||
@pytest.mark.eeschema
|
@pytest.mark.eeschema
|
||||||
def test_print_sch_svg_fail(test_dir):
|
def test_print_sch_svg_fail(test_dir):
|
||||||
|
|
|
||||||
|
|
@ -521,7 +521,12 @@ class TestContext(object):
|
||||||
# m = re.match(r'([\d\.e-]+) \(([\d\.e-]+)\)', res.decode())
|
# m = re.match(r'([\d\.e-]+) \(([\d\.e-]+)\)', res.decode())
|
||||||
# assert m
|
# assert m
|
||||||
# logging.debug('MSE={} ({})'.format(m.group(1), m.group(2)))
|
# logging.debug('MSE={} ({})'.format(m.group(1), m.group(2)))
|
||||||
ae = int(res.decode())
|
s = res.decode()
|
||||||
|
# Remove error messages generated by KiCad 7 plotted PDFs
|
||||||
|
s = re.sub(r'^\s+\*+.*', '', s, 0, re.M)
|
||||||
|
s = re.sub(r'^\s+Output may be incorrect.*', '', s, 0, re.M)
|
||||||
|
s = s.strip()
|
||||||
|
ae = int(s)
|
||||||
logging.debug('AE=%d' % ae)
|
logging.debug('AE=%d' % ae)
|
||||||
if png_ref:
|
if png_ref:
|
||||||
os.remove(png_ref)
|
os.remove(png_ref)
|
||||||
|
|
|
||||||
|
|
@ -34,3 +34,6 @@ preflight:
|
||||||
- filter_msg: 'Ignore library issues'
|
- filter_msg: 'Ignore library issues'
|
||||||
error: lib_footprint_issues
|
error: lib_footprint_issues
|
||||||
regexp: '.*'
|
regexp: '.*'
|
||||||
|
- filter_msg: 'Ignore library missmatches'
|
||||||
|
error: lib_footprint_mismatch
|
||||||
|
regexp: '.*'
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
ibom_all_ops6.kibot.yaml
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Example KiBot config file
|
||||||
|
kibot:
|
||||||
|
version: 1
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
- name: 'print_dxf_svg'
|
||||||
|
comment: "Plot schematic (DXF)"
|
||||||
|
type: dxf_sch_print
|
||||||
|
dir: .
|
||||||
|
options:
|
||||||
|
output: Schematic.dxf
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Example KiBot config file
|
||||||
|
kibot:
|
||||||
|
version: 1
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
- name: 'print_hpgl_svg'
|
||||||
|
comment: "Plot schematic (HPGL)"
|
||||||
|
type: hpgl_sch_print
|
||||||
|
dir: .
|
||||||
|
options:
|
||||||
|
output: Schematic.plt
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Example KiBot config file
|
||||||
|
kibot:
|
||||||
|
version: 1
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
- name: 'print_ps_svg'
|
||||||
|
comment: "Plot schematic (PS)"
|
||||||
|
type: ps_sch_print
|
||||||
|
dir: .
|
||||||
|
options:
|
||||||
|
output: Schematic.ps
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
FROM setsoft/kicad_auto_test:nightly
|
||||||
|
MAINTAINER Salvador E. Tropea <stropea@inti.gob.ar>
|
||||||
|
LABEL Description="KiCad 6 with KiBot and other automation scripts"
|
||||||
|
|
||||||
|
RUN dpkg --remove kicost kibot && \
|
||||||
|
apt-get update && \
|
||||||
|
curl https://codeload.github.com/INTI-CMNB/KiBot/zip/refs/heads/dev --output pp.zip && \
|
||||||
|
unzip pp.zip && \
|
||||||
|
pip3 install --no-compile KiBot-dev/ && \
|
||||||
|
rm -rf KiBot-dev pp.zip && \
|
||||||
|
curl https://codeload.github.com/hildogjr/KiCost/zip/refs/heads/master --output pp.zip && \
|
||||||
|
unzip pp.zip && \
|
||||||
|
pip3 install KiCost-master/ && \
|
||||||
|
rm -rf KiCost-master pp.zip && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# kidiff depends on KiAuto
|
||||||
|
# dpkg --remove kiauto && \
|
||||||
|
# curl https://codeload.github.com/INTI-CMNB/KiAuto/zip/refs/heads/master --output pp.zip && \
|
||||||
|
# unzip pp.zip && \
|
||||||
|
# pip3 install KiAuto-master/ && \
|
||||||
|
# rm -rf KiAuto-master/ pp.zip && \
|
||||||
Loading…
Reference in New Issue