-
Notifications
You must be signed in to change notification settings - Fork 0
135 lines (127 loc) · 5.11 KB
/
Copy pathbuild-docker-and-publish.yml
File metadata and controls
135 lines (127 loc) · 5.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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