Skip to content

Update Dockerfile.ghdl #58

Update Dockerfile.ghdl

Update Dockerfile.ghdl #58

name: Build and Push Multiple Docker Images
on:
push:
branches:
- main
paths:
- '.github/workflows/build-docker-and-publish.yml'
- 'Dockerfile.testing_base_bookworm'
- 'Dockerfile.ghdl'
- 'Dockerfile.litex_env_bookworm'
- 'Dockerfile.xilinx_env_bookworm'
jobs:
# STEP 1: Detect which specific files changed
changes:
runs-on: ubuntu-latest
outputs:
testing: ${{ steps.filter.outputs.testing }}
ghdl: ${{ steps.filter.outputs.ghdl }}
litex: ${{ steps.filter.outputs.litex }}
xilinx: ${{ steps.filter.outputs.xilinx }}
steps:
- uses: actions/checkout@v3
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
testing: ['Dockerfile.testing_base_bookworm']
ghdl: ['Dockerfile.ghdl']
litex: ['Dockerfile.litex_env_bookworm']
xilinx: ['Dockerfile.xilinx_env_bookworm']
# STEP 2: Build jobs that only run IF their file changed
build_testing:
needs: changes
if: ${{ needs.changes.outputs.testing == 'true' }}
runs-on: ubuntu-latest
env:
REGISTRY: ghcr.io
DOCKERFILE: Dockerfile.testing_base_bookworm
steps:
- uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v2
- uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GHCR_PAT }}
- name: Set name and push
run: |
IMAGE_NAME=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')
docker build -t ${{ env.REGISTRY }}/$IMAGE_NAME:testing_base_bookworm -f ${{ env.DOCKERFILE }} .
docker tag ${{ env.REGISTRY }}/$IMAGE_NAME:testing_base_bookworm ${{ env.REGISTRY }}/$IMAGE_NAME:testing_latest
docker push ${{ env.REGISTRY }}/$IMAGE_NAME:testing_base_bookworm
docker push ${{ env.REGISTRY }}/$IMAGE_NAME:testing_latest
build_ghdl:
needs: changes
if: ${{ needs.changes.outputs.ghdl == 'true' }}
runs-on: ubuntu-latest
env:
REGISTRY: ghcr.io
DOCKERFILE: Dockerfile.ghdl
steps:
- uses: actions/checkout@v3
# 1. Download the pre-compiled libraries you created on eed-fpga
# You can host these in a 'vendor-libs' repo or a release asset
- name: Download Compiled Xilinx Libs
run: |
mkdir -p ghdl_vendors/xilinx-vivado
curl -L -H "Authorization: token ${{ secrets.GHCR_PAT }}" \
"https://github.com/slaclab/your-libs-repo/raw/main/unisim-obj08.cf" \
-o ghdl_vendors/xilinx-vivado/unisim-obj08.cf
- uses: docker/setup-buildx-action@v2
- uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GHCR_PAT }}
- name: Set name and push
run: |
IMAGE_NAME=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')
docker build -t ${{ env.REGISTRY }}/$IMAGE_NAME:ghdl -f ${{ env.DOCKERFILE }} .
docker tag ${{ env.REGISTRY }}/$IMAGE_NAME:ghdl ${{ env.REGISTRY }}/$IMAGE_NAME:ghdl_latest
docker push ${{ env.REGISTRY }}/$IMAGE_NAME:ghdl
docker push ${{ env.REGISTRY }}/$IMAGE_NAME:ghdl_latest
build_litex:
needs: changes
if: ${{ needs.changes.outputs.litex == 'true' }}
runs-on: ubuntu-latest
env:
REGISTRY: ghcr.io
DOCKERFILE: Dockerfile.litex_env_bookworm
steps:
- uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v2
- uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GHCR_PAT }}
- name: Set name and push
run: |
IMAGE_NAME=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')
docker build -t ${{ env.REGISTRY }}/$IMAGE_NAME:litex_env_bookworm -f ${{ env.DOCKERFILE }} .
docker tag ${{ env.REGISTRY }}/$IMAGE_NAME:litex_env_bookworm ${{ env.REGISTRY }}/$IMAGE_NAME:litex_latest
docker push ${{ env.REGISTRY }}/$IMAGE_NAME:litex_env_bookworm
docker push ${{ env.REGISTRY }}/$IMAGE_NAME:litex_latest
build_xilinx:
needs: changes
if: ${{ needs.changes.outputs.xilinx == 'true' }}
runs-on: ubuntu-latest
env:
REGISTRY: ghcr.io
DOCKERFILE: Dockerfile.xilinx_env_bookworm
steps:
- uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v2
- uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GHCR_PAT }}
- name: Set name and push
run: |
IMAGE_NAME=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')
docker build -t ${{ env.REGISTRY }}/$IMAGE_NAME:xilinx_env_bookworm -f ${{ env.DOCKERFILE }} .
docker tag ${{ env.REGISTRY }}/$IMAGE_NAME:xilinx_env_bookworm ${{ env.REGISTRY }}/$IMAGE_NAME:xilinx_latest
docker push ${{ env.REGISTRY }}/$IMAGE_NAME:xilinx_env_bookworm
docker push ${{ env.REGISTRY }}/$IMAGE_NAME:xilinx_latest