Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
amezin committed Sep 4, 2024
0 parents commit cba01d4
Show file tree
Hide file tree
Showing 18 changed files with 537 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!data/
103 changes: 103 additions & 0 deletions .github/workflows/common.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
concurrency: ${{ github.workflow }}/${{ github.ref }}

on:
workflow_dispatch:
inputs:
push:
description: "Push built image"
default: true
required: false
type: boolean

workflow_call:
inputs:
push:
description: "Push built image"
default: true
required: false
type: boolean

jobs:
build-test:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
include:
- image: fedora-39
dockerfile: fedora.dockerfile

- image: fedora-40
dockerfile: fedora.dockerfile

- image: debian-12
dockerfile: debian.dockerfile

- image: debian-13
dockerfile: debian.dockerfile

- image: ubuntu-24.04
dockerfile: debian.dockerfile

- image: archlinux
dockerfile: archlinux.dockerfile

- image: opensuse-tumbleweed
dockerfile: suse.dockerfile

- image: opensuse-leap-15.6
dockerfile: suse.dockerfile

timeout-minutes: 15
env:
IMAGE: ghcr.io/${{ github.repository }}/${{ matrix.image }}

steps:
- uses: actions/checkout@v4

- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- id: docker_meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE }}

- id: docker_build
uses: docker/build-push-action@v6
with:
context: .
file: ${{ matrix.dockerfile }}
build-args: |
base_image=${{ matrix.image }}
pull: true
push: ${{ inputs.push }}
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
annotations: ${{ steps.docker_meta.outputs.annotations }}
cache-from: |
${{ steps.docker_meta.outputs.tags }}
${{ env.IMAGE }}:master
cache-to: type=inline

- run: podman pull docker-daemon:${{ steps.docker_build.outputs.imageid }} | tee .podman-image-id

- run: DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --no-install-recommends x11-utils imagemagick

- id: gnome-session-x11
name: Test gnome-session-x11
run: test/test-x11.sh $(cat .podman-image-id)

- id: gnome-session-wayland
name: Test gnome-session-wayland
run: test/test-wayland.sh $(cat .podman-image-id)

- name: Upload screenshot
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.image }}-screenshots
path: test/*.png
if: ${{ always() }}
23 changes: 23 additions & 0 deletions .github/workflows/master.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: master

on:
push:
branches:
- master
paths-ignore:
- renovate.json
- README.md
- LICENSE

permissions:
packages: write

jobs:
ci:
uses: ./.github/workflows/common.yml
tag:
needs: ci
uses: ./.github/workflows/tag.yml
permissions:
contents: write
actions: write
15 changes: 15 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: pr

on:
pull_request:
paths-ignore:
- renovate.json
- README.md
- LICENSE

jobs:
ci:
if: ${{ github.event.pull_request.base.repo.node_id != github.event.pull_request.head.repo.node_id }}
uses: ./.github/workflows/common.yml
with:
push: false
20 changes: 20 additions & 0 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: push

on:
workflow_dispatch:
push:
branches-ignore:
- master
tags:
- "*"
paths-ignore:
- renovate.json
- README.md
- LICENSE

permissions:
packages: write

jobs:
ci:
uses: ./.github/workflows/common.yml
20 changes: 20 additions & 0 deletions .github/workflows/tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
on:
workflow_call:
workflow_dispatch:

jobs:
tag:
runs-on: ubuntu-latest
steps:
- id: tag
uses: ddterm/[email protected]

- uses: actions/github-script@v7
with:
script: |
github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'push.yml',
ref: '${{ steps.tag.outputs.ref }}',
})
20 changes: 20 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Copyright (c) 2021 Aleksandr Mezin
Copyright (c) 2021 Simon Schneegans

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
25 changes: 25 additions & 0 deletions archlinux.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
FROM docker.io/library/archlinux:latest@sha256:649f22ffe44950a2fbdd7b4f3ad7eaf1ae017d60360f857ba1b07902121824d4

RUN pacman -Rdd --noconfirm dbus-broker-units \
&& pacman -Syu --noconfirm \
dbus-daemon-units \
gnome-shell \
vte3 \
vte4 \
xorg-server-xvfb \
xorg-xinit \
mesa \
packagekit \
gdm \
wl-clipboard \
libhandy \
&& pacman -Scc --noconfirm

COPY data /

RUN systemctl mask systemd-oomd low-memory-monitor rtkit-daemon udisks2 display-manager && \
useradd -m -U -G users,adm gnomeshell && \
truncate --size 0 /etc/machine-id && \
dconf update

CMD [ "/sbin/init" ]
31 changes: 31 additions & 0 deletions data/etc/systemd/journald.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
[Journal]
Storage=volatile
Compress=no
Seal=no
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
ForwardToSyslog=no
ForwardToKMsg=no
ForwardToConsole=yes
ForwardToWall=no
TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
MaxLevelConsole=debug
#MaxLevelWall=emerg
#LineMax=48K
ReadKMsg=no
Audit=no
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Required to make systemd-logind work
[Service]
ProtectHostname=no
2 changes: 2 additions & 0 deletions data/etc/systemd/system/upower.service.d/override.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Service]
PrivateUsers=no
30 changes: 30 additions & 0 deletions debian.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
ARG base_image=ubuntu-24.04

FROM docker.io/library/debian:12@sha256:aadf411dc9ed5199bc7dab48b3e6ce18f8bbee4f170127f5ff1b75cd8035eb36 AS debian-12
FROM docker.io/library/debian:trixie@sha256:0c75aed52e3a564e27c3aaba51b0a7e59ac21dd09abcb25f2fe0b9b37c8f7e01 AS debian-13
FROM docker.io/library/ubuntu:24.04@sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee AS ubuntu-24.04

FROM ${base_image}

RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
gnome-session \
gjs \
dbus-user-session \
gdm3 \
gir1.2-vte-2.91 \
gir1.2-vte-3.91 \
xvfb \
packagekit \
gir1.2-packagekitglib-1.0 \
wl-clipboard \
gir1.2-handy-1

COPY data /

RUN systemctl mask systemd-oomd low-memory-monitor rtkit-daemon udisks2 display-manager && \
useradd -m -U -G users,adm gnomeshell && \
truncate --size 0 /etc/machine-id && \
dconf update

CMD [ "/sbin/init" ]
31 changes: 31 additions & 0 deletions fedora.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
ARG base_image=fedora-40

FROM docker.io/library/fedora:39@sha256:2922a1237abbb7f8517018e4f5d7a82a618f6ec09f386799e8595f9e1c39f021 AS fedora-39
FROM docker.io/library/fedora:40@sha256:5ce8497aeea599bf6b54ab3979133923d82aaa4f6ca5ced1812611b197c79eb0 AS fedora-40

FROM ${base_image}

RUN dnf install -y --nodocs --setopt install_weak_deps=False \
gnome-session-xsession \
gnome-extensions-app \
gjs \
gdm \
vte291 \
vte291-gtk4 \
xorg-x11-server-Xvfb \
mesa-dri-drivers \
wl-clipboard \
PackageKit \
PackageKit-glib \
libhandy \
&& dnf clean all -y

COPY data /

RUN systemctl mask systemd-oomd low-memory-monitor rtkit-daemon udisks2 display-manager && \
adduser -m -U -G users,adm gnomeshell && \
chmod u+rw /etc/shadow && \
truncate --size 0 /etc/machine-id && \
dconf update

CMD [ "/sbin/init" ]
59 changes: 59 additions & 0 deletions renovate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended",
":maintainLockFilesWeekly",
"npm:unpublishSafe"
],
"packageRules": [
{
"matchCategories": [
"docker"
],
"pinDigests": true
},
{
"matchPackagePatterns": [
"opensuse/tumbleweed$"
],
"extends": [
"schedule:automergeWeekly"
]
},
{
"excludePackagePatterns": [
"opensuse/tumbleweed$"
],
"extends": [
"schedule:automergeDaily"
]
}
],
"dockerfile": {
"fileMatch": [
"(^|/|\\.)dockerfile$"
],
"major": {
"enabled": false
},
"minor": {
"enabled": false
},
"patch": {
"enabled": false
},
"groupName": "Base images"
},
"automerge": true,
"customManagers": [
{
"customType": "regex",
"fileMatch": [
"^\\.github/workflows/.+\\.ya?ml"
],
"matchStrings": [
"#\\s*renovate:\\s+datasource=(?<datasource>[^\\s]+)\\s+depName=(?<depName>[^\\s]+)(\\s+(lookupName|packageName)=(?<packageName>[^\\s]+))?(\\s+versioning=(?<versioning>[^\\s]+))?\\n\\s*\\w+\\s*:\\s*[\"']?(?<currentValue>[^\\s\"']+)[\"']?(\\s|$)"
]
}
]
}
Loading

0 comments on commit cba01d4

Please sign in to comment.