From 7894699033c507747824152386b08caabfc81361 Mon Sep 17 00:00:00 2001
From: Joel Winarske <joel.winarske@gmail.com>
Date: Sun, 19 Jan 2025 06:34:42 -0800
Subject: [PATCH] User containers

Signed-off-by: Joel Winarske <joel.winarske@gmail.com>
---
 .github/workflows/ubuntu20-user.yml | 42 +++++++++++++++++++++++++++++
 .github/workflows/ubuntu22-user.yml | 42 +++++++++++++++++++++++++++++
 .github/workflows/ubuntu24-user.yml | 42 +++++++++++++++++++++++++++++
 ubuntu-20-user/Dockerfile           | 36 +++++++++++++++++++++++++
 ubuntu-22-user/Dockerfile           | 36 +++++++++++++++++++++++++
 ubuntu-24-user/Dockerfile           | 36 +++++++++++++++++++++++++
 6 files changed, 234 insertions(+)
 create mode 100644 .github/workflows/ubuntu20-user.yml
 create mode 100644 .github/workflows/ubuntu22-user.yml
 create mode 100644 .github/workflows/ubuntu24-user.yml
 create mode 100644 ubuntu-20-user/Dockerfile
 create mode 100644 ubuntu-22-user/Dockerfile
 create mode 100644 ubuntu-24-user/Dockerfile

diff --git a/.github/workflows/ubuntu20-user.yml b/.github/workflows/ubuntu20-user.yml
new file mode 100644
index 0000000..452d576
--- /dev/null
+++ b/.github/workflows/ubuntu20-user.yml
@@ -0,0 +1,42 @@
+name: ubuntu20-user-docker-build
+
+on:
+  push:
+    branches:
+      - 'main'
+    tags:
+      - 'v*'
+  pull_request:
+    branches:
+      - 'main'
+
+env:
+  REGISTRY_USER: ${{ github.actor }}
+  REGISTRY_PASSWORD: ${{ github.token }}
+  IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
+
+jobs:
+
+  ubuntu-20-user:
+    runs-on: ubuntu-latest
+    steps:
+
+      - name: Log in to ghcr.io
+        uses: redhat-actions/podman-login@v1.6
+        with:
+          username: ${{ env.REGISTRY_USER }}
+          password: ${{ env.REGISTRY_PASSWORD }}
+          registry: ${{ env.IMAGE_REGISTRY }}
+
+      - name: Checkout
+        uses: actions/checkout@v3
+      
+      - uses: mr-smithers-excellent/docker-build-push@v5
+        name: Build & push Docker image
+        with:
+          image: meta-flutter/ubuntu-20
+          tags: main
+          registry: ghcr.io
+          dockerfile: ubuntu-20-user/Dockerfile
+          username: ${{ github.actor }}
+          password: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/ubuntu22-user.yml b/.github/workflows/ubuntu22-user.yml
new file mode 100644
index 0000000..15e6745
--- /dev/null
+++ b/.github/workflows/ubuntu22-user.yml
@@ -0,0 +1,42 @@
+name: ubuntu22-user-docker-build
+
+on:
+  push:
+    branches:
+      - 'main'
+    tags:
+      - 'v*'
+  pull_request:
+    branches:
+      - 'main'
+
+env:
+  REGISTRY_USER: ${{ github.actor }}
+  REGISTRY_PASSWORD: ${{ github.token }}
+  IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
+
+jobs:
+
+  ubuntu-22-user:
+    runs-on: ubuntu-latest
+    steps:
+
+      - name: Log in to ghcr.io
+        uses: redhat-actions/podman-login@v1.6
+        with:
+          username: ${{ env.REGISTRY_USER }}
+          password: ${{ env.REGISTRY_PASSWORD }}
+          registry: ${{ env.IMAGE_REGISTRY }}
+
+      - name: Checkout
+        uses: actions/checkout@v3
+      
+      - uses: mr-smithers-excellent/docker-build-push@v5
+        name: Build & push Docker image
+        with:
+          image: meta-flutter/ubuntu-22-user
+          tags: main
+          registry: ghcr.io
+          dockerfile: ubuntu-22-user/Dockerfile
+          username: ${{ github.actor }}
+          password: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/ubuntu24-user.yml b/.github/workflows/ubuntu24-user.yml
new file mode 100644
index 0000000..5659c12
--- /dev/null
+++ b/.github/workflows/ubuntu24-user.yml
@@ -0,0 +1,42 @@
+name: ubuntu24-user-docker-build
+
+on:
+  push:
+    branches:
+      - 'main'
+    tags:
+      - 'v*'
+  pull_request:
+    branches:
+      - 'main'
+
+env:
+  REGISTRY_USER: ${{ github.actor }}
+  REGISTRY_PASSWORD: ${{ github.token }}
+  IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
+
+jobs:
+
+  ubuntu-24-user:
+    runs-on: ubuntu-latest
+    steps:
+
+      - name: Log in to ghcr.io
+        uses: redhat-actions/podman-login@v1.6
+        with:
+          username: ${{ env.REGISTRY_USER }}
+          password: ${{ env.REGISTRY_PASSWORD }}
+          registry: ${{ env.IMAGE_REGISTRY }}
+
+      - name: Checkout
+        uses: actions/checkout@v3
+      
+      - uses: mr-smithers-excellent/docker-build-push@v5
+        name: Build & push Docker image
+        with:
+          image: meta-flutter/ubuntu-24-user
+          tags: main
+          registry: ghcr.io
+          dockerfile: ubuntu-24-user/Dockerfile
+          username: ${{ github.actor }}
+          password: ${{ secrets.GITHUB_TOKEN }}
diff --git a/ubuntu-20-user/Dockerfile b/ubuntu-20-user/Dockerfile
new file mode 100644
index 0000000..25ac7be
--- /dev/null
+++ b/ubuntu-20-user/Dockerfile
@@ -0,0 +1,36 @@
+FROM ubuntu:20.04
+
+ARG TZ=America/Los_Angeles
+ENV DEBIAN_FRONTEND=noninteractive
+ARG USER_NAME="Joel Winarske"
+ARG USER_EMAIL="joel.winarske@gmail.com"
+ARG RUNNER_USER_UID=1001
+ARG DOCKER_GROUP_GID=121
+
+USER root
+
+RUN apt-get update
+RUN apt-get install -y locales openssh-client git git-core
+RUN apt-get install -y sudo python3 python3-pip python3-git
+RUN pip3 install virtualenv
+
+# Runner user
+RUN adduser --disabled-password --gecos '' -u $RUNNER_USER_UID dev \
+    && groupadd docker --gid $DOCKER_GROUP_GID \
+    && usermod -aG sudo dev \
+    && usermod -aG docker dev \
+    && echo "%sudo   ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers \
+    && echo "Defaults env_keep += \"DEBIAN_FRONTEND\"" >> /etc/sudoers
+
+RUN chown -R dev:dev /home/dev
+
+RUN locale-gen en_US.UTF-8
+ENV LANG=en_US.UTF-8
+
+USER dev
+
+WORKDIR /home/dev
+
+RUN echo '/home/dev/.ssh/id_rsa' | ssh-keygen -t rsa -b 2048 -C "${USER_EMAIL}"
+RUN git config --global user.email ${USER_EMAIL}
+RUN git config --global user.name "${USER_NAME}"
diff --git a/ubuntu-22-user/Dockerfile b/ubuntu-22-user/Dockerfile
new file mode 100644
index 0000000..2e7bd3d
--- /dev/null
+++ b/ubuntu-22-user/Dockerfile
@@ -0,0 +1,36 @@
+FROM ubuntu:22.04
+
+ARG TZ=America/Los_Angeles
+ENV DEBIAN_FRONTEND=noninteractive
+ARG USER_NAME="Joel Winarske"
+ARG USER_EMAIL="joel.winarske@gmail.com"
+ARG RUNNER_USER_UID=1001
+ARG DOCKER_GROUP_GID=121
+
+USER root
+
+RUN apt-get update
+RUN apt-get install -y locales openssh-client git git-core
+RUN apt-get install -y sudo python3 python3-pip python3-git
+RUN pip3 install virtualenv
+
+# Runner user
+RUN adduser --disabled-password --gecos '' -u $RUNNER_USER_UID dev \
+    && groupadd docker --gid $DOCKER_GROUP_GID \
+    && usermod -aG sudo dev \
+    && usermod -aG docker dev \
+    && echo "%sudo   ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers \
+    && echo "Defaults env_keep += \"DEBIAN_FRONTEND\"" >> /etc/sudoers
+
+RUN chown -R dev:dev /home/dev
+
+RUN locale-gen en_US.UTF-8
+ENV LANG=en_US.UTF-8
+
+USER dev
+
+WORKDIR /home/dev
+
+RUN echo '/home/dev/.ssh/id_rsa' | ssh-keygen -t rsa -b 2048 -C "${USER_EMAIL}"
+RUN git config --global user.email ${USER_EMAIL}
+RUN git config --global user.name "${USER_NAME}"
diff --git a/ubuntu-24-user/Dockerfile b/ubuntu-24-user/Dockerfile
new file mode 100644
index 0000000..d63c9c1
--- /dev/null
+++ b/ubuntu-24-user/Dockerfile
@@ -0,0 +1,36 @@
+FROM ubuntu:24.04
+
+ARG TZ=America/Los_Angeles
+ENV DEBIAN_FRONTEND=noninteractive
+ARG USER_NAME="Joel Winarske"
+ARG USER_EMAIL="joel.winarske@gmail.com"
+ARG RUNNER_USER_UID=1001
+ARG DOCKER_GROUP_GID=121
+
+USER root
+
+RUN apt-get update
+RUN apt-get install -y locales openssh-client git git-core
+RUN apt-get install -y sudo python3 python3-pip python3-git python3-virtualenv
+
+
+# Runner user
+RUN adduser --disabled-password --gecos '' -u $RUNNER_USER_UID dev \
+    && groupadd docker --gid $DOCKER_GROUP_GID \
+    && usermod -aG sudo dev \
+    && usermod -aG docker dev \
+    && echo "%sudo   ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers \
+    && echo "Defaults env_keep += \"DEBIAN_FRONTEND\"" >> /etc/sudoers
+
+RUN chown -R dev:dev /home/dev
+
+RUN locale-gen en_US.UTF-8
+ENV LANG=en_US.UTF-8
+
+USER dev
+
+WORKDIR /home/dev
+
+RUN echo '/home/dev/.ssh/id_rsa' | ssh-keygen -t rsa -b 2048 -C "${USER_EMAIL}"
+RUN git config --global user.email ${USER_EMAIL}
+RUN git config --global user.name "${USER_NAME}"