Skip to content

Generate PCB images and production files via Actions #3

Generate PCB images and production files via Actions

Generate PCB images and production files via Actions #3

Workflow file for this run

on:
push:
branches:
- main
paths-ignore:
- '**/README.md'
- '**/LICENSE'
- '**/CHANGES.txt'
- '**/img/*'
pull_request:
branches:
- main
paths-ignore:
- '**/README.md'
- '**/LICENSE'
- '**/CHANGES.txt'
- '**/img/*'
workflow_dispatch:
paths-ignore:
- '**/README.md'
- '**/LICENSE'
- '**/CHANGES.txt'
- '**/img/*'
env:
DOCKER_USER_OPTION: '$UID:$GID'
name: Build
jobs:
generate:
runs-on: ubuntu-latest
name: Generate
steps:
- name: Checkout
uses: actions/checkout@v3.5.2
- 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@v3.1.2
with:
name: One_pcb_gerbers
path: gerbers/pcb
- name: Persist case gerbers
uses: actions/upload-artifact@v3.1.2
with:
name: One_case_gerbers
path: gerbers/case
- name: Persist images
uses: actions/upload-artifact@v3.1.2
with:
name: One_images
path: images
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: One_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 "matrix=$matrixStringifiedObject" >> $GITHUB_OUTPUT
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: One_pcb_gerbers
path: gerbers/pcb
- 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 "matrix=$matrixStringifiedObject" >> $GITHUB_OUTPUT
upload_pcb_gerbers:
runs-on: ubuntu-latest
name: Upload PCB gerbers
needs: [generate, gerber_matrix]
strategy:
matrix: ${{fromJson(needs.gerber_matrix.outputs.matrix)}}
steps:
- uses: actions/download-artifact@master
with:
name: One_pcb_gerbers
path: gerbers/pcb
- name: Gets latest created release info
id: latest_release_info
uses: jossef/action-latest-release-info@v1.2.1
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Upload gerbers
uses: shogo82148/actions-upload-release-asset@v1.6.4
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: One_images
path: images
- name: Gets latest created release info
id: latest_release_info
uses: jossef/action-latest-release-info@v1.2.1
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Upload images
uses: shogo82148/actions-upload-release-asset@v1.6.4
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_gerber_case_files:
runs-on: ubuntu-latest
name: Upload case gerber files
needs: generate
steps:
- uses: actions/download-artifact@master
with:
name: One_case_gerbers
path: gerbers/case
- name: Gets latest created release info
id: latest_release_info
uses: jossef/action-latest-release-info@v1.2.1
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Upload case files
uses: shogo82148/actions-upload-release-asset@v1.6.4
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