parent
9899ce98f7
commit
20d284c6ee
5 changed files with 125 additions and 0 deletions
35
.forgejo/workflows/build-fedora-42.yml
Normal file
35
.forgejo/workflows/build-fedora-42.yml
Normal file
|
@ -0,0 +1,35 @@
|
|||
on:
|
||||
push:
|
||||
branches: ['master']
|
||||
paths:
|
||||
- "fedora-42/**"
|
||||
- "fedora-42-minimal/**"
|
||||
- "shared/**"
|
||||
- ".forgejo/workflows/build-fedora-42.yml"
|
||||
schedule:
|
||||
- cron: "0 0 * * 3" # Every Thursday 00:00
|
||||
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: fedora-41
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Setup Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version-file: 'package.json'
|
||||
- name: Fulfill Package Manager Cache
|
||||
run: dnf makecache -y --releasever 42
|
||||
- name: Sign in to Image Index
|
||||
run: buildah login code.lightstands.xyz --username ${{ env.GITHUB_ACTOR }} --password ${{ secrets.PUBLICATION_TOKEN }}
|
||||
- name: Build Minimal Images
|
||||
run: DNF_CACHE_PATH=/var/cache/dnf bun shared/build-image.ts code.lightstands.xyz/standcoded/fedora-minimal:42 fedora-42-minimal arm64
|
||||
- name: Push Minimal Images
|
||||
run: buildah manifest push code.lightstands.xyz/standcoded/fedora-minimal:42 --all
|
||||
- name: Build Complete Images
|
||||
run: DNF_CACHE_PATH=/var/cache/dnf bun shared/build-image.ts code.lightstands.xyz/standcoded/fedora:42 fedora-42 arm64
|
||||
- name: Push Complete Images
|
||||
run: buildah manifest push code.lightstands.xyz/standcoded/fedora:42 --all
|
||||
|
19
fedora-42-minimal/Containerfile
Normal file
19
fedora-42-minimal/Containerfile
Normal file
|
@ -0,0 +1,19 @@
|
|||
FROM fedora:42
|
||||
|
||||
RUN sh /imgbuild/fedora/instpkgs-minimal.sh
|
||||
|
||||
# We don't clean up dnf cache since user may want to install packages for their use
|
||||
|
||||
ADD containers.conf /etc/containers/
|
||||
|
||||
RUN sh /imgbuild/configure-nested-container.sh
|
||||
|
||||
VOLUME /var/lib/containers
|
||||
VOLUME /home/action/.local/share/containers
|
||||
|
||||
# Set up environment variables to note that this is
|
||||
# not starting with usernamespace and default to
|
||||
# isolate the filesystem with chroot.
|
||||
ENV _BUILDAH_STARTED_IN_USERNS="" BUILDAH_ISOLATION=chroot
|
||||
|
||||
ENTRYPOINT [ "/bin/bash" ]
|
2
fedora-42-minimal/containers.conf
Normal file
2
fedora-42-minimal/containers.conf
Normal file
|
@ -0,0 +1,2 @@
|
|||
[engine]
|
||||
cgroup_manager = "cgroupfs"
|
7
fedora-42/Containerfile
Normal file
7
fedora-42/Containerfile
Normal file
|
@ -0,0 +1,7 @@
|
|||
FROM oven/bun:1-distroless as bun
|
||||
|
||||
FROM localhost/runner-images/fedora-minimal:42
|
||||
|
||||
COPY --from=bun /usr/local/bin/bun /usr/local/bin/bun
|
||||
|
||||
RUN ["/usr/local/bin/bun", "/imgbuild/fedora/pkgs.ts", "install"]
|
62
shared/fedora/pkgs.ts
Normal file
62
shared/fedora/pkgs.ts
Normal file
|
@ -0,0 +1,62 @@
|
|||
#!/usr/bin/env bun
|
||||
|
||||
type SoftwareGroup = {
|
||||
name: string
|
||||
packages: string[]
|
||||
}
|
||||
|
||||
async function install(groups: SoftwareGroup[]) {
|
||||
const packageNames = groups.flatMap(x => x.packages)
|
||||
await Bun.$`dnf install -y --setopt install_weak_deps=False ${packageNames}`
|
||||
}
|
||||
|
||||
const EXT_SOFTWARES: SoftwareGroup[] = [
|
||||
{
|
||||
name: "Python", packages: [
|
||||
"python",
|
||||
"python-devel",
|
||||
"poetry"
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "NodeJS", packages: [
|
||||
"nodejs", "nodejs-devel"
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Perl", packages: [
|
||||
"perl", "perl-devel"
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Ruby", packages: [
|
||||
"ruby", "ruby-devel"
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "PHP", packages: [
|
||||
"php", "php-devel", "composer"
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Java", packages: [
|
||||
"java-21-openjdk", "java-21-openjdk-devel",
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "QEMU", packages: [
|
||||
"qemu-user-static", "qemu-user-binfmt"
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "C", packages: [
|
||||
"bison", "flex", "vcpkg", "@c-development"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
const command = process.argv[2]
|
||||
|
||||
if (command === "install") {
|
||||
await install(EXT_SOFTWARES)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue