From 497ba98763f4801b6dc9bd85e8a063b53dc619d5 Mon Sep 17 00:00:00 2001 From: Stephen D <stephen@scd31.com> Date: Mon, 25 Dec 2023 01:56:46 +0000 Subject: [PATCH] add ci --- .gitlab-ci.yml | 23 +++++++ KiCad/output.kibot.yaml | 149 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 KiCad/output.kibot.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..484b1b1 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,23 @@ +stages: + - testing + - gen_fab + +variables: + GIT_SUBMODULE_STRATEGY: recursive + +#tests: +# image: ghcr.io/inti-cmnb/kicad7_auto:1.6.2 +# stage: testing +# script: +# - "[ -f *.kicad_pcb ] && kibot -c test.kibot.yaml" + +pcb_outputs: + image: ghcr.io/inti-cmnb/kicad7_auto:1.6.2 + stage: gen_fab + script: + - cd KiCad + - "[ -f *.kicad_pcb ] && kibot -c output.kibot.yaml" + artifacts: + when: always + paths: + - KiCad/Fabrication/ diff --git a/KiCad/output.kibot.yaml b/KiCad/output.kibot.yaml new file mode 100644 index 0000000..a6c8876 --- /dev/null +++ b/KiCad/output.kibot.yaml @@ -0,0 +1,149 @@ +# Gerber and drill files for JLCPCB, without stencil +# URL: https://jlcpcb.com/ +kibot: + version: 1 + +globals: + resources_dir: ci + +filters: + - name: only_jlc_parts + comment: "Only parts with JLC (LCSC) code" + type: generic + include_only: + - column: "LCSC" + regex: '^C\d+' + +variants: + - name: rotated + comment: "Just a place holder for the rotation filter" + type: kibom + variant: rotated + pre_transform: _rot_footprint + +# JLCPCB Gerber Output +outputs: + - 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 + layers: + # Note: a more generic approach is to use 'copper' but then the filenames + # are slightly different. + - F.Cu + - B.Cu + - F.Paste + - B.Paste + - F.SilkS + - B.SilkS + - F.Mask + - B.Mask + - Edge.Cuts + + # JLCPCB drill files + - 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: false + output: "%f%i.%x" + + # zip all JLCPCB gerber and drill files together + - name: JLCPCB + comment: ZIP file for JLCPCB + type: compress + dir: Fabrication/JLCPCB + options: + files: + - from_output: JLCPCB_gerbers + dest: / + - from_output: JLCPCB_drill + dest: / + + # html ibom + - name: ibom + comment: Interactive BOM + type: ibom + dir: Fabrication/ibom + options: + dark_mode: true + name_format: "index" + + # JLCPCB assembly positions of components + - name: "JLCPCB_position" + comment: "Pick and place file, JLCPCB style" + type: position + dir: Fabrication/JLCPCB-BOM + options: + variant: rotated + output: "%f_cpl_jlc.%x" + format: CSV + units: millimeters + separate_files_for_front_and_back: false + only_smd: false + columns: + - id: Ref + name: Designator + - Val + - Package + - id: PosX + name: "Mid X" + - id: PosY + name: "Mid Y" + - id: Rot + name: Rotation + - id: Side + name: Layer + + # JLCPCB Bom for assembly or for LCSC order + - name: "JLCPCB_bom" + comment: "BoM for JLCPCB" + type: bom + dir: Fabrication/JLCPCB-BOM + options: + output: "%f_%i_jlc.%x" + exclude_filter: "only_jlc_parts" + ref_separator: "," + columns: + - field: Value + name: Comment + - field: References + name: Designator + - Footprint + - field: "LCSC" + name: "LCSC part number" + - field: "Quantity Per PCB" + name: "QTY" + csv: + hide_pcb_info: true + hide_stats_info: true + quote_all: true + + # PDF of Schematic with dracula theme + - name: "SchPrint" + comment: "Print schematic PDF" + type: pdf_sch_print + dir: Fabrication/PDFs + options: + color_theme: dracula + background_color: true -- GitLab