Files
kicad-ci/configs/default.kibot.yaml
2025-07-01 17:26:01 +10:00

298 lines
6.4 KiB
YAML

# Example KiPlot config file
kibot:
version: 1
import:
- file: 'user.kibot.yaml'
preflight:
# erc: true
# update_xml: true
# drc: true
set_text_variables:
- name: 'rev'
command: 'if [ $(git describe --tags | wc -w) -gt 0 ]; then git describe --tags | sed -e "s/\([r,R][0-9]\+\)*$//g"; else echo $CI_COMMIT_SHORT_SHA; fi'
- name: 'rev_pcb'
command: if [ $(git describe --tags | wc -w) -gt 0 ]; then git describe --tags | awk -F- 'BEGIN {ORS=""} {split($1,a,"."); print a[1]"."a[2]; if ($2) print "-"$2}' ; else echo $CI_COMMIT_SHORT_SHA; fi
- name: 'date'
expand_kibot_patterns: true
text: '%D'
- name: 'name'
expand_kibot_patterns: true
command: 'echo $KIBOT_PCB_NAME | rev | cut -d"/" -f1 | rev | cut -d"-" -f1'
- name: 'title'
expand_kibot_patterns: true
command: 'echo $KIBOT_PCB_NAME | rev | cut -d"/" -f1 | rev | cut -d"." -f1 '
- name: 'DWN'
command: 'echo $DWN'
- name: 'CHK'
command: 'echo $CHK'
- name: 'APP'
command: 'echo $APP'
check_zone_fills: true
global:
environment:
user_templates: "${CI_PROJECT_DIR}/.gitlab/templates"
restore_project: true
outputs:
- name: 'print_sch'
comment: "Print schematic (PDF)"
type: pdf_sch_print
dir: .
options:
output: "%f%v_%r_%i.%x"
- name: 'print_pcb'
comment: "Print Top and Bottom Copper+Silk"
type: pcb_print
dir: .
options:
output: "%f%v_%r_PCB.%x"
pages:
- layers:
- layer: F.Cu
- layer: F.SilkS
- layer: Edge.Cuts
- layers:
- layer: B.Cu
- layer: B.SilkS
- layer: Edge.Cuts
- name: '_bom'
type: bom
dir: /tmp
options:
columns:
- field: Value
name: value
- field: Quantity Per PCB
name: qty
- field: Footprint
name: footprint
- field: Datasheet
name: datasheet
- mpn
- manf
- rev
- conn_manf
- conn_mpn
- field: References
name: refs
exclude_filter: ""
output: "%f%v_%r_%i.%x"
expand_text_vars: true
- name: 'bom_csv'
type: bom
dir: .
extends: "_bom"
disable_run_by_default: _bom
options:
csv:
separator: ';'
hide_pcb_info: true
hide_stats_info: true
format: "CSV"
- name: 'bom_xlsx'
type: bom
dir: .
extends: '_bom'
disable_run_by_default: _bom
options:
xlsx:
hide_pcb_info: true
hide_stats_info: true
format: "XLSX"
# - name: 'drill'
# comment: "excellon drill files"
# type: excellon
# dir: Gerbers
# # options:
- name: 'step'
comment: "Step file of pcb"
type: step
dir: .
options:
output: '%f%v_%r.%x'
download: false
subst_models: true
- name: 'pcb_render'
comment: "ISO render of the blank PCB"
type: render_3d
dir: .
options:
view: 'top'
rotate_z: 4
rotate_x: 3
zoom: -1
download: false
download_lcsc: false
orthographic: true
output: 'PCB_%f%v_%r.%x'
show_components: 'none'
- name: 'pcba_render'
comment: "ISO render of the assembled PCB"
type: render_3d
dir: .
options:
view: 'top'
rotate_z: 4
rotate_x: 3
download: false
zoom: -1
download_lcsc: false
orthographic: true
output: 'PCBA_%f%v_%r.%x'
show_components: 'all'
- name: 'neo_position'
comment: "Pick and place"
type: position
options:
output: '%f%v_%r_cpl.%x'
format: CSV
units: millimeters
separate_files_for_front_and_back: false
only_smd: true
- name: 'stencil'
comment: '3D printable stencil for when you forgot to order it'
type: stencil_3d
dir: '3D_Stencil'
options:
output: '%f%v_%r_%i.%x'
- name: 'diff_pcb'
comment: "Diff for visual comparison"
type: diff
dir: .
options:
only_different: true
old: KIBOT_TAG-0
- name: 'diff_sch'
comment: "Diff for visual comparison"
type: diff
dir: .
options:
only_different: true
pcb: false
old: KIBOT_TAG-0
- name: 'interactive_bom'
comment: "Interactive html BOM"
type: ibom
dir: .
options:
output: '%f%v_%r_%i.%x'
dark_mode: true
- name: 'JLCPCB_gerbers'
comment: Gerbers compatible with JLCPCB
type: gerber
dir: JLCPCB
options: &gerber_options
exclude_edge_layer: true
exclude_pads_from_silkscreen: true
plot_sheet_reference: false
plot_footprint_refs: true
plot_footprint_values: false
force_plot_invisible_refs_vals: false
tent_vias: true
use_protel_extensions: true
create_gerber_job_file: false
disable_aperture_macros: true
gerber_precision: 4.6
use_gerber_x2_attributes: false
use_gerber_net_attributes: false
line_width: 0.1
subtract_mask_from_silk: true
inner_extension_pattern: '.g%n'
layers:
# Note: a more generic approach is to use 'copper' but then the filenames
# are slightly different.
- F.Cu
- B.Cu
- In1.Cu
- In2.Cu
- In3.Cu
- In4.Cu
- In5.Cu
- In6.Cu
- F.SilkS
- B.SilkS
- F.Mask
- B.Mask
- Edge.Cuts
- user
- name: 'JLCPCB_drill'
comment: Drill files compatible with JLCPCB
type: excellon
dir: JLCPCB
options:
pth_and_npth_single_file: false
pth_id: '-PTH'
npth_id: '-NPTH'
metric_units: true
map: gerber
route_mode_for_oval_holes: false
output: "%f%v_%r_%i.%x"
- name: 'JLCPCB_compress'
comment: ZIP file for JLCPCB
type: compress
options:
files:
- from_output: JLCPCB_gerbers
dest: /
- from_output: JLCPCB_drill
dest: /
output: '%f%v_%r_JLC.%x'
groups:
- name: mech
outputs:
- step
- name: pos
outputs:
- neo_position
- name: pcb_dev
outputs:
- print_pcb
- name: pcb_main
outputs:
- JLCPCB_compress
- neo_position
- print_pcb
- stencil
- interactive_bom
- name: panel
outputs:
- JLCPCB_compress
- neo_position
- print_pcb
- step
- interactive_bom
- name: sch
outputs:
- bom_csv
- bom_xlsx
- print_sch
...
definitions:
_KIBOT_POS_ENABLED: false
_KIBOT_BOM_ENABLED: false
_KIBOT_MANF_DIR_COMP: "."