Build #1
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
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/[email protected] | |
- 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/[email protected] | |
with: | |
name: Nijuni_pcb_gerbers | |
path: gerbers/pcb | |
- name: Persist case gerbers | |
uses: actions/[email protected] | |
with: | |
name: Nijuni_case_gerbers | |
path: gerbers/case | |
- name: Persist images | |
uses: actions/[email protected] | |
with: | |
name: Nijuni_images | |
path: images | |
- name: Persist laser case files | |
uses: actions/[email protected] | |
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 "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: Nijuni_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: Nijuni_pcb_gerbers | |
path: gerbers/pcb | |
- name: Gets latest created release info | |
id: latest_release_info | |
uses: jossef/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
- name: Upload gerbers | |
uses: shogo82148/[email protected] | |
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/[email protected] | |
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/[email protected] | |
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 gerber files | |
needs: generate | |
steps: | |
- uses: actions/download-artifact@master | |
with: | |
name: Nijuni_case_gerbers | |
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/[email protected] | |
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 |