1+ name : 🐬 Build Ubuntu Base Images DockerHub 🐬
2+ # REF: https://docs.docker.com/build/ci/github-actions/multi-platform/
3+ # SECRETS: DOCKERHUB_USERNAME || DOCKERHUB_TOKEN
4+ # URL: https://hub.docker.com/u/pkgforge
5+
6+ # ------------------------------------------------------------------------------------#
7+ on :
8+ # push:
9+ workflow_dispatch :
10+ schedule :
11+ - cron : " 30 08 * * 3" # 08:30 PM UTC Thu (02:15 AM NPT Thu Midnight)
12+ # - cron: "*/30 * * * *" # Every 30 Mins
13+ defaults :
14+ run :
15+ shell : bash
16+ working-directory : /tmp
17+ permissions :
18+ contents : read
19+ packages : write
20+ jobs :
21+ # ------------------------------------------------------------------------------------#
22+ build-push-ubuntu :
23+ name : Push (Ubuntu ${{ matrix.arch }}) --> Docker Hub
24+ runs-on : ${{ matrix.runner }}
25+ strategy :
26+ matrix :
27+ include :
28+ - arch : aarch64
29+ platform : arm64
30+ runner : ubuntu-24.04-arm
31+ # - arch: loongarch64
32+ # platform: loong64
33+ # runner: ubuntu-latest
34+ - arch : riscv64
35+ platform : riscv64
36+ runner : ubuntu-latest
37+ - arch : x86_64
38+ platform : amd64
39+ runner : ubuntu-latest
40+
41+ steps :
42+ - name : Checkout repository
43+ uses : actions/checkout@v4
44+ with :
45+ path : main
46+ filter : " blob:none"
47+
48+ # - name: Debloat Runner
49+ # run: |
50+ # #Presets
51+ # set +x ; set +e
52+ # #--------------#
53+ # bash <(curl -qfsSL "https://raw.githubusercontent.com/pkgforge/devscripts/main/Github/Runners/debloat_ubuntu.sh") --force
54+ # continue-on-error: true
55+
56+ - name : Install Addons
57+ run : |
58+ ##Presets
59+ set +x ; set +e
60+ #-------------#
61+ ##Debug?
62+ if [[ "${DEBUG}" = "1" ]] || [[ "${DEBUG}" = "ON" ]]; then
63+ set -x
64+ fi
65+ #-------------#
66+ #export PARALLEL=1
67+ #bash <(curl -qfsSL "https://raw.githubusercontent.com/pkgforge/devscripts/refs/heads/main/Linux/install_bins_curl.sh")
68+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/7z" -o "/usr/bin/7z" &
69+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/7z" -o "/usr/local/bin/7z" &
70+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/ansi2txt" -o "/usr/local/bin/ansi2txt" &
71+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/aria2" -o "/usr/local/bin/aria2" &
72+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/aria2" -o "/usr/local/bin/aria2c" &
73+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/askalono" -o "/usr/local/bin/askalono" &
74+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/bsdtar" -o "/usr/local/bin/bsdtar" &
75+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/b3sum" -o "/usr/local/bin/b3sum" &
76+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/dasel" -o "/usr/local/bin/dasel" &
77+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/eget" -o "/usr/local/bin/eget" &
78+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/huggingface-cli" -o "/usr/local/bin/huggingface-cli" &
79+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/jq" -o "/usr/local/bin/jq" &
80+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/oras" -o "/usr/local/bin/oras" &
81+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/ouch" -o "/usr/local/bin/ouch" &
82+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/rsync" -o "/usr/local/bin/rsync" &
83+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/trufflehog" -o "/usr/local/bin/trufflehog" &
84+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/xq" -o "/usr/local/bin/xq" &
85+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/xz" -o "/usr/local/bin/xz" &
86+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/yq" -o "/usr/local/bin/yq" &
87+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/zstd" -o "/usr/bin/zstd" &
88+ sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/zstd" -o "/usr/local/bin/zstd" &
89+ wait ; echo
90+ sudo chmod -v 'a+x' \
91+ "/usr/bin/7z" \
92+ "/usr/local/bin/7z" \
93+ "/usr/local/bin/ansi2txt" \
94+ "/usr/local/bin/aria2" \
95+ "/usr/local/bin/aria2c" \
96+ "/usr/local/bin/askalono" \
97+ "/usr/local/bin/bsdtar" \
98+ "/usr/local/bin/b3sum" \
99+ "/usr/local/bin/dasel" \
100+ "/usr/local/bin/eget" \
101+ "/usr/local/bin/huggingface-cli" \
102+ "/usr/local/bin/jq" \
103+ "/usr/local/bin/oras" \
104+ "/usr/local/bin/ouch" \
105+ "/usr/local/bin/rsync" \
106+ "/usr/local/bin/trufflehog" \
107+ "/usr/local/bin/xq" \
108+ "/usr/local/bin/xz" \
109+ "/usr/local/bin/yq" \
110+ "/usr/bin/zstd" \
111+ "/usr/local/bin/zstd"
112+ continue-on-error : true
113+
114+ - name : Setup Env
115+ run : |
116+ #Presets
117+ set +x ; set +e
118+ #--------------#
119+ #Docker Tags
120+ DOCKER_TAG="v$(date +'%Y.%m.%d')" && export DOCKER_TAG="${DOCKER_TAG}"
121+ echo "DOCKER_TAG=${DOCKER_TAG}" >> "${GITHUB_ENV}"
122+ #Copy dockerfiles
123+ mkdir -p "/tmp/DOCKERFILES" && cd "/tmp/DOCKERFILES"
124+ cp "${GITHUB_WORKSPACE}/main/Github/Runners/ubuntu.dockerfile" "/tmp/DOCKERFILES/ubuntu.dockerfile"
125+ continue-on-error : false
126+
127+ - name : Set up QEMU
128+ uses : docker/setup-qemu-action@v3
129+ continue-on-error : true
130+
131+ - name : Set up Docker Buildx
132+ uses : docker/setup-buildx-action@v3
133+ continue-on-error : true
134+
135+ - name : Login to Docker Hub
136+ uses : docker/login-action@v3
137+ with :
138+ username : " ${{ secrets.DOCKERHUB_USERNAME }}"
139+ password : " ${{ secrets.DOCKERHUB_TOKEN }}"
140+ continue-on-error : true
141+
142+ - name : Login to GHCR
143+ uses : docker/login-action@v3
144+ with :
145+ registry : ghcr.io
146+ username : " ${{ github.actor }}"
147+ password : " ${{ secrets.GITHUB_TOKEN }}"
148+ continue-on-error : true
149+
150+ # https://hub.docker.com/r/pkgforge/ubuntu
151+ - name : Docker Build and Push (Ubuntu)
152+ uses : docker/build-push-action@v6
153+ with :
154+ context : /tmp/DOCKERFILES/
155+ file : " /tmp/DOCKERFILES/ubuntu.dockerfile"
156+ platforms : " linux/${{ matrix.platform }}"
157+ tags : |
158+ pkgforge/ubuntu:${{ matrix.arch }}
159+ pkgforge/ubuntu:${{ matrix.arch }}-${{ env.DOCKER_TAG }}
160+ ghcr.io/pkgforge/devscripts/ubuntu:${{ matrix.arch }}
161+ ghcr.io/pkgforge/devscripts/ubuntu:${{ matrix.arch }}-${{ env.DOCKER_TAG }}
162+ push : true
163+ continue-on-error : true
164+
165+ - name : Print Manifest (docker.io/pkgforge/ubuntu:${{ matrix.arch }})
166+ run : |
167+ #Presets
168+ set +x ; set +e
169+ #--------------#
170+ docker manifest inspect "docker.io/pkgforge/ubuntu:${{ matrix.arch }}" 2>/dev/null | jq .
171+ continue-on-error : true
172+
173+ - name : Print Manifest (ghcr.io/pkgforge/devscripts/ubuntu:${{ matrix.arch }})
174+ run : |
175+ #Presets
176+ set +x ; set +e
177+ #--------------#
178+ docker manifest inspect "ghcr.io/pkgforge/devscripts/ubuntu:${{ matrix.arch }}" 2>/dev/null | jq .
179+ continue-on-error : true
180+ # #------------------------------------------------------------------------------------#
181+ # build-push-ubuntu-loongarch64:
182+ # name: Push (Ubuntu loongarch64) --> Docker Hub
183+ # runs-on: "ubuntu-latest"
184+ #
185+ # steps:
186+ # - name: Checkout repository
187+ # uses: actions/checkout@v4
188+ # with:
189+ # path: main
190+ # filter: "blob:none"
191+ #
192+ # #- name: Debloat Runner
193+ # # run: |
194+ # # #Presets
195+ # # set +x ; set +e
196+ # # #--------------#
197+ # # bash <(curl -qfsSL "https://raw.githubusercontent.com/pkgforge/devscripts/main/Github/Runners/debloat_ubuntu.sh") --force
198+ # # continue-on-error: true
199+ #
200+ # - name: Install Addons
201+ # run: |
202+ # ##Presets
203+ # set +x ; set +e
204+ # #-------------#
205+ # ##Debug?
206+ # if [[ "${DEBUG}" = "1" ]] || [[ "${DEBUG}" = "ON" ]]; then
207+ # set -x
208+ # fi
209+ # #-------------#
210+ # #export PARALLEL=1
211+ # #bash <(curl -qfsSL "https://raw.githubusercontent.com/pkgforge/devscripts/refs/heads/main/Linux/install_bins_curl.sh")
212+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/7z" -o "/usr/bin/7z" &
213+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/7z" -o "/usr/local/bin/7z" &
214+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/ansi2txt" -o "/usr/local/bin/ansi2txt" &
215+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/aria2" -o "/usr/local/bin/aria2" &
216+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/aria2" -o "/usr/local/bin/aria2c" &
217+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/askalono" -o "/usr/local/bin/askalono" &
218+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/bsdtar" -o "/usr/local/bin/bsdtar" &
219+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/b3sum" -o "/usr/local/bin/b3sum" &
220+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/dasel" -o "/usr/local/bin/dasel" &
221+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/eget" -o "/usr/local/bin/eget" &
222+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/huggingface-cli" -o "/usr/local/bin/huggingface-cli" &
223+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/jq" -o "/usr/local/bin/jq" &
224+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/oras" -o "/usr/local/bin/oras" &
225+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/ouch" -o "/usr/local/bin/ouch" &
226+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/rsync" -o "/usr/local/bin/rsync" &
227+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/trufflehog" -o "/usr/local/bin/trufflehog" &
228+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/xq" -o "/usr/local/bin/xq" &
229+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/xz" -o "/usr/local/bin/xz" &
230+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/yq" -o "/usr/local/bin/yq" &
231+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/zstd" -o "/usr/bin/zstd" &
232+ # sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s)/zstd" -o "/usr/local/bin/zstd" &
233+ # wait ; echo
234+ # sudo chmod -v 'a+x' \
235+ # "/usr/bin/7z" \
236+ # "/usr/local/bin/7z" \
237+ # "/usr/local/bin/ansi2txt" \
238+ # "/usr/local/bin/aria2" \
239+ # "/usr/local/bin/aria2c" \
240+ # "/usr/local/bin/askalono" \
241+ # "/usr/local/bin/bsdtar" \
242+ # "/usr/local/bin/b3sum" \
243+ # "/usr/local/bin/dasel" \
244+ # "/usr/local/bin/eget" \
245+ # "/usr/local/bin/huggingface-cli" \
246+ # "/usr/local/bin/jq" \
247+ # "/usr/local/bin/oras" \
248+ # "/usr/local/bin/ouch" \
249+ # "/usr/local/bin/rsync" \
250+ # "/usr/local/bin/trufflehog" \
251+ # "/usr/local/bin/xq" \
252+ # "/usr/local/bin/xz" \
253+ # "/usr/local/bin/yq" \
254+ # "/usr/bin/zstd" \
255+ # "/usr/local/bin/zstd"
256+ # continue-on-error: true
257+ #
258+ # - name: Setup Env
259+ # run: |
260+ # #Presets
261+ # set +x ; set +e
262+ # #--------------#
263+ # #Docker Tags
264+ # DOCKER_TAG="v$(date +'%Y.%m.%d')" && export DOCKER_TAG="${DOCKER_TAG}"
265+ # echo "DOCKER_TAG=${DOCKER_TAG}" >> "${GITHUB_ENV}"
266+ # #Copy dockerfiles
267+ # mkdir -p "/tmp/DOCKERFILES" && cd "/tmp/DOCKERFILES"
268+ # cp "${GITHUB_WORKSPACE}/main/Github/Runners/ubuntu_loongarch64.dockerfile" "/tmp/DOCKERFILES/ubuntu.dockerfile"
269+ # continue-on-error: false
270+ #
271+ # - name: Set up QEMU
272+ # uses: docker/setup-qemu-action@v3
273+ # continue-on-error: true
274+ #
275+ # - name: Set up Docker Buildx
276+ # uses: docker/setup-buildx-action@v3
277+ # continue-on-error: true
278+ #
279+ # - name: Login to Docker Hub
280+ # uses: docker/login-action@v3
281+ # with:
282+ # username: "${{ secrets.DOCKERHUB_USERNAME }}"
283+ # password: "${{ secrets.DOCKERHUB_TOKEN }}"
284+ # continue-on-error: true
285+ #
286+ # - name: Login to GHCR
287+ # uses: docker/login-action@v3
288+ # with:
289+ # registry: ghcr.io
290+ # username: "${{ github.actor }}"
291+ # password: "${{ secrets.GITHUB_TOKEN }}"
292+ # continue-on-error: true
293+ #
294+ # #https://hub.docker.com/r/pkgforge/ubuntu
295+ # - name: Docker Build and Push (Ubuntu - loongarch64)
296+ # uses: docker/build-push-action@v6
297+ # with:
298+ # context: /tmp/DOCKERFILES/
299+ # file: "/tmp/DOCKERFILES/ubuntu.dockerfile"
300+ # platforms: "linux/loong64"
301+ # tags: |
302+ # pkgforge/ubuntu:loongarch64
303+ # pkgforge/ubuntu:loongarch64-${{ env.DOCKER_TAG }}
304+ # ghcr.io/pkgforge/devscripts/ubuntu:loongarch64
305+ # ghcr.io/pkgforge/devscripts/ubuntu:loongarch64-${{ env.DOCKER_TAG }}
306+ # outputs: type=registry,compression=zstd,compression-level=22
307+ # continue-on-error: true
308+ #
309+ # - name: Print Manifest (docker.io/pkgforge/ubuntu:loongarch64)
310+ # run: |
311+ # #Presets
312+ # set +x ; set +e
313+ # #--------------#
314+ # docker manifest inspect "docker.io/pkgforge/ubuntu:loongarch64" 2>/dev/null | jq .
315+ # continue-on-error: true
316+ #
317+ # - name: Print Manifest (ghcr.io/pkgforge/devscripts/ubuntu:loongarch64)
318+ # run: |
319+ # #Presets
320+ # set +x ; set +e
321+ # #--------------#
322+ # docker manifest inspect "ghcr.io/pkgforge/devscripts/ubuntu:loongarch64" 2>/dev/null | jq .
323+ # continue-on-error: true
324+ # #------------------------------------------------------------------------------------#
0 commit comments