-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
266 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,204 @@ | ||
on: | ||
push: | ||
branches: | ||
- main | ||
paths-ignore: | ||
- '**/README.md' | ||
- '**/LICENSE' | ||
pull_request: | ||
branches: | ||
- main | ||
paths-ignore: | ||
- '**/README.md' | ||
- '**/LICENSE' | ||
workflow_dispatch: | ||
paths-ignore: | ||
- '**/README.md' | ||
- '**/LICENSE' | ||
|
||
env: | ||
DOCKER_USER_OPTION: '$UID:$GID' | ||
|
||
name: Build | ||
jobs: | ||
generate: | ||
runs-on: ubuntu-latest | ||
name: Generate | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
- uses: xanantis/docker-file-ownership-fix@v1 | ||
- name: Run build script | ||
run: | | ||
chmod +x build.sh | ||
./build.sh | ||
shell: bash | ||
- name: Persist PCB gerbers | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: Nijuni_pcb_gerbers | ||
path: gerbers/pcb | ||
- name: Persist case gerbers | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: Nijuni_case_gerbers | ||
path: gerbers/case | ||
- name: Persist images | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: Nijuni_images | ||
path: images | ||
- name: Persist laser case files | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: Nijuni_laser_case_files | ||
path: dxf | ||
|
||
|
||
image_matrix: | ||
runs-on: ubuntu-latest | ||
name: PCB image matrix | ||
needs: generate | ||
outputs: | ||
matrix: ${{ steps.setmatrix.outputs.matrix }} | ||
steps: | ||
- uses: actions/download-artifact@master | ||
with: | ||
name: Nijuni_images | ||
path: images | ||
- id: setmatrix | ||
run: | | ||
matrixArray=$(find ./images -name 'pcb*.png' | xargs -n 1 -i echo {} {} | sed 's# .*/# #') # Creates array of all PCB image files | ||
# Start Generate JSON String | ||
echo "$matrixArray" | \ | ||
jq --slurp --raw-input 'split("\n")[:-1] | map(split(" "))' | \ | ||
jq "map({\"filepath\": (.[0]), \"basename\": .[1] })" | \ | ||
jq -sc "{ \"include\": .[] }" > tmp | ||
cat ./tmp | ||
# End Generate JSON String | ||
matrixStringifiedObject=$(cat ./tmp) # Use this as jq @sh wasn't cooperating | ||
echo "::set-output name=matrix::$matrixStringifiedObject" | ||
gerber_matrix: | ||
runs-on: ubuntu-latest | ||
name: Gerber matrix | ||
needs: generate | ||
outputs: | ||
matrix: ${{ steps.setmatrix.outputs.matrix }} | ||
steps: | ||
- uses: actions/download-artifact@master | ||
with: | ||
name: Nijuni_gerbers | ||
path: gerbers | ||
- id: setmatrix | ||
run: | | ||
matrixArray=$(find ./gerbers/pcb -name '*.zip' | xargs -n 1 -i echo {} {} | sed 's# .*/# #') # Creates array of all PCB gerber files | ||
# Start Generate JSON String | ||
echo "$matrixArray" | \ | ||
jq --slurp --raw-input 'split("\n")[:-1] | map(split(" "))' | \ | ||
jq "map({\"filepath\": (.[0]), \"basename\": .[1] })" | \ | ||
jq -sc "{ \"include\": .[] }" > tmp | ||
cat ./tmp | ||
# End Generate JSON String | ||
matrixStringifiedObject=$(cat ./tmp) # Use this as jq @sh wasn't cooperating | ||
echo "::set-output name=matrix::$matrixStringifiedObject" | ||
upload_pcb_gerbers: | ||
runs-on: ubuntu-latest | ||
name: Upload gerbers | ||
needs: [generate, gerber_matrix] | ||
strategy: | ||
matrix: ${{fromJson(needs.gerber_matrix.outputs.matrix)}} | ||
steps: | ||
- uses: actions/download-artifact@master | ||
with: | ||
name: Nijuni_gerbers | ||
path: gerbers | ||
- name: Gets latest created release info | ||
id: latest_release_info | ||
uses: jossef/[email protected] | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
- name: Upload gerbers | ||
uses: shogo82148/actions-upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
overwrite: true | ||
upload_url: ${{ steps.latest_release_info.outputs.upload_url }} | ||
asset_path: ${{ matrix.filepath }} | ||
asset_name: ${{ matrix.basename }} | ||
|
||
upload_images: | ||
runs-on: ubuntu-latest | ||
name: Upload images | ||
needs: [generate, image_matrix] | ||
strategy: | ||
matrix: ${{fromJson(needs.image_matrix.outputs.matrix)}} | ||
steps: | ||
- uses: actions/download-artifact@master | ||
with: | ||
name: Nijuni_images | ||
path: images | ||
- name: Gets latest created release info | ||
id: latest_release_info | ||
uses: jossef/[email protected] | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
- name: Upload images | ||
uses: shogo82148/actions-upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
overwrite: true | ||
upload_url: ${{ steps.latest_release_info.outputs.upload_url }} | ||
asset_path: ${{ matrix.filepath }} | ||
asset_name: ${{ matrix.basename }} | ||
|
||
upload_laser_case_files: | ||
runs-on: ubuntu-latest | ||
name: Upload case DXF files | ||
needs: generate | ||
steps: | ||
- uses: actions/download-artifact@master | ||
with: | ||
name: Nijuni_laser_case_files | ||
path: dxf | ||
- name: Gets latest created release info | ||
id: latest_release_info | ||
uses: jossef/[email protected] | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
- name: Upload case files | ||
uses: shogo82148/actions-upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
overwrite: true | ||
upload_url: ${{ steps.latest_release_info.outputs.upload_url }} | ||
asset_path: ./dxf/laser_case_files.zip | ||
asset_name: laser_case_files.zip | ||
|
||
upload_gerber_case_files: | ||
runs-on: ubuntu-latest | ||
name: Upload case DXF files | ||
needs: generate | ||
steps: | ||
- uses: actions/download-artifact@master | ||
with: | ||
name: Nijuni_gerber_case_files | ||
path: gerbers/case | ||
- name: Gets latest created release info | ||
id: latest_release_info | ||
uses: jossef/[email protected] | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
- name: Upload case files | ||
uses: shogo82148/actions-upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
overwrite: true | ||
upload_url: ${{ steps.latest_release_info.outputs.upload_url }} | ||
asset_path: ./gerbers/case/gerber_case_files.zip | ||
asset_name: gerber_case_files.zip |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
#!/bin/bash | ||
|
||
container_cmd="docker run -v=$(pwd):/kikit -w=/kikit --rm" | ||
|
||
# Images | ||
echo "Drawing image files" | ||
mkdir -p images | ||
for name in "pcb" "plate" "bottom" | ||
do | ||
for option in "$name"/*/ | ||
do | ||
short_option="$(basename "$option")" | ||
file="$(find $option -type f -name '*.kicad_pcb')" | ||
${container_cmd} yaqwsx/kikit:nightly pcbdraw --style builtin:set-black-hasl.json "$file" images/"$name"_"$short_option".png >> /dev/null | ||
${container_cmd} yaqwsx/kikit:nightly pcbdraw --style builtin:set-black-hasl.json --back "$file" images/"$name"_"$short_option"_back.png >> /dev/null | ||
done | ||
done | ||
|
||
# Gerbers | ||
echo "Generating gerbers" | ||
mkdir -p gerbers | ||
for name in "pcb" "plate" "bottom" | ||
do | ||
prefix="case" | ||
if [[ "$name" == "pcb" ]]; then | ||
prefix="pcb" | ||
fi | ||
mkdir -p gerbers/"$prefix" | ||
for option in "$name"/*/ | ||
do | ||
if [[ "$name" == "plate" ]] && ! [[ "$option" =~ ^.*\/fr4.*$ ]]; then | ||
continue | ||
fi | ||
short_option="$(basename "$option")" | ||
file="$(find $option -type f -name '*.kicad_pcb')" | ||
${container_cmd} yaqwsx/kikit:nightly kikit fab jlcpcb --no-assembly "$file" gerbers/"$name"_"$short_option" --no-drc | ||
mv gerbers/"$name"_"$short_option"/gerbers.zip gerbers/"$prefix"/"$name"_"$short_option"_gerbers.zip | ||
rm -r gerbers/"$name"_"$short_option" | ||
done | ||
done | ||
|
||
# Plate/bottom dxf files | ||
echo "Generating case DXF files" | ||
mkdir -p dxf | ||
for name in "plate" "bottom" | ||
do | ||
for option in "$name"/*/ | ||
do | ||
if [[ "$name" == "plate" ]] && [[ ! "$option" =~ ^.*\/laser.*$ ]]; then | ||
continue | ||
fi | ||
short_option="$(basename "$option")" | ||
file="$(find $option -type f -name '*.kicad_pcb')" | ||
file_name=$(basename "$file" .kicad_pcb) | ||
${container_cmd} yaqwsx/kikit:nightly kikit export dxf "$file" dxf/"$name"_"$short_option" | ||
mv dxf/"$name"_"$short_option"/"$file_name"-EdgeCuts.dxf dxf/"$name"_"$short_option".dxf | ||
rm -r dxf/"$name"_"$short_option" | ||
done | ||
done | ||
|
||
zip -jr dxf/laser_case_files dxf/ | ||
|