Skip to content

Commit

Permalink
Merge branch 'main' into fix/disable-event-report-words
Browse files Browse the repository at this point in the history
  • Loading branch information
jgresham committed May 24, 2024
2 parents 24d9556 + 1a05be2 commit 0d2521a
Show file tree
Hide file tree
Showing 11 changed files with 336 additions and 65 deletions.
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules/
.vite/
out/
4 changes: 1 addition & 3 deletions .github/workflows/e2e-test-linux-distros.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
name: e2e-tests-linux-distros
# Currently does not work as running podman within a container is not straighforward

on:
pull_request:
branches:
- main
workflow_dispatch:

jobs:
Expand Down
42 changes: 42 additions & 0 deletions .github/workflows/e2e-test-specs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: e2e-tests-specs

on:
pull_request:
branches:
- main
workflow_dispatch:

jobs:
e2e-build-n-test:
environment: staging
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]

steps:
- uses: actions/checkout@v4
- name: 🧱 Install Dependencies
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -y podman
- name: 📦 Bundle Application
env:
DEBUG: "*electron*"
SENTRY_DSN: fake-token
MP_PROJECT_TOKEN: fake-token
MP_PROJECT_ENV: dev
NICENODE_ENV: test
NO_CODE_SIGNING: true
run: |
ls -al
podman build -t podman-fedora-wdio -f ./test/podman-fedora-wdio.dockerfile .
- name: 🧪 Run Tests
run: |
ls -al
chmod -R 777 .
ls -al
podman run --rm -v ./:/home/podman/nice-node -u podman podman-fedora-wdio
6 changes: 3 additions & 3 deletions .github/workflows/e2e-test-ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
os: [ubuntu-24.04]
node-version: [20.x]

steps:
Expand All @@ -25,7 +25,7 @@ jobs:
- name: 🧱 Install Dependencies
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -y rpm libarchive-tools
sudo apt-get install --no-install-recommends -y podman
npm ci
- name: 📦 Bundle Application
Expand All @@ -37,7 +37,7 @@ jobs:
NICENODE_ENV: ${{ vars.NICENODE_ENV }}
NO_CODE_SIGNING: true
run: |
npm run make
npm run package -- --arch=x64
- name: 🧪 Run Tests
uses: coactions/setup-xvfb@6b00cf1889f4e1d5a48635647013c0508128ee1a
Expand Down
12 changes: 12 additions & 0 deletions test/containers.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[containers]
netns="host"
userns="host"
ipcns="host"
utsns="host"
cgroupns="host"
cgroups="disabled"
log_driver = "k8s-file"
[engine]
cgroup_manager = "cgroupfs"
events_logger="file"
runtime="crun"
19 changes: 19 additions & 0 deletions test/debian12.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
FROM debian:12

RUN apt-get update -qq

RUN apt-get install --no-install-recommends -y nodejs npm git zip dpkg fakeroot rpm libarchive-tools
RUN apt-get install -y \
xvfb \
zip \
wget \
ca-certificates \
libnss3-dev \
libasound2t64 \
libxss1 \
libappindicator3-1 \
libindicator7 \
xdg-utils \
fonts-liberation \
libgbm1

46 changes: 46 additions & 0 deletions test/fedora40.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
FROM fedora:40

RUN dnf update -y

RUN dnf install podman -y

# RUN apt-get install --no-install-recommends -y nodejs npm git zip dpkg fakeroot rpm libarchive-tools
# RUN apt-get install -y \
# xvfb \
# zip \
# wget \
# ca-certificates \
# libnss3-dev \
# libasound2t64 \
# libxss1 \
# libappindicator3-1 \
# libindicator7 \
# xdg-utils \
# fonts-liberation \
# libgbm1

# Create a new user and set its password
# RUN useradd -ms /bin/bash -g root -u 1000 myuser \
# && echo "myuser:password" | chpasswd

# Create a new group for Podman
RUN groupadd --system podman

# Create a new user and group for running Podman within the container
ARG USERNAME=podman-user
ARG USER_UID=1000
ARG GROUP_GID=1000
RUN groupadd -g ${GROUP_GID} ${USERNAME} && \
useradd -u ${USER_UID} -g ${GROUP_GID} -m ${USERNAME}

# Add the user to the 'podman' group
RUN usermod -aG podman ${USERNAME}

# Switch to the new user
USER ${USERNAME}

# Set the working directory to the user's home directory
WORKDIR /home/${USERNAME}

# Example command to run when the container starts
CMD ["/bin/bash"]
5 changes: 5 additions & 0 deletions test/podman-containers.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[containers]
volumes = [
"/proc:/proc",
]
default_sysctls = []
126 changes: 126 additions & 0 deletions test/podman-fedora-wdio.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# podman/Containerfile
#
# Build a Podman container image from the latest
# stable version of Podman on the Fedoras Updates System.
# https://bodhi.fedoraproject.org/updates/?search=podman
# This image can be used to create a secured container
# that runs safely with privileges within the container.
#
# FLAVOR defaults to stable if unset
#
# FLAVOR=stable acquires a stable version of Podman
# from the Fedoras Updates System.
# FLAVOR=testing acquires a testing version of Podman
# from the Fedoras Updates System.
# FLAVOR=upstream acquires a testing version of Podman
# from the Fedora Copr Buildsystem.
# https://copr.fedorainfracloud.org/coprs/rhcontainerbot/podman-next/
#
# https://bodhi.fedoraproject.org/updates/?search=podman

FROM registry.fedoraproject.org/fedora:latest
ARG FLAVOR=stable

# When building for multiple-architectures in parallel using emulation
# it's really easy for one/more dnf processes to timeout or mis-count
# the minimum download rates. Bump both to be extremely forgiving of
# an overworked host.
RUN echo -e "\n\n# Added during image build" >> /etc/dnf/dnf.conf && \
echo -e "minrate=100\ntimeout=60\n" >> /etc/dnf/dnf.conf

# Don't include container-selinux and remove
# directories used by dnf that are just taking
# up space.
# TODO: rpm --setcaps... needed due to Fedora (base) image builds
# being (maybe still?) affected by
# https://bugzilla.redhat.com/show_bug.cgi?id=1995337#c3
RUN dnf -y makecache && \
dnf -y update && \
rpm --setcaps shadow-utils 2>/dev/null && \
case "${FLAVOR}" in \
stable) \
dnf -y install podman fuse-overlayfs openssh-clients --exclude container-selinux \
;; \
testing) \
dnf -y install podman fuse-overlayfs openssh-clients --exclude container-selinux \
--enablerepo updates-testing \
;; \
upstream) \
dnf -y install 'dnf-command(copr)' --enablerepo=updates-testing && \
dnf -y copr enable rhcontainerbot/podman-next && \
dnf -y install podman fuse-overlayfs openssh-clients \
--exclude container-selinux \
--enablerepo=updates-testing \
;; \
*) \
printf "\\nFLAVOR argument must be set and valid, currently: '${FLAVOR}'\\n\\n" 1>&2 && \
exit 1 \
;; \
esac && \
dnf clean all && \
rm -rf /var/cache /var/log/dnf* /var/log/yum.*

RUN useradd podman; \
echo -e "podman:1:999\npodman:1001:64535" > /etc/subuid; \
echo -e "podman:1:999\npodman:1001:64535" > /etc/subgid;

ADD /test/containers.conf /etc/containers/containers.conf
ADD /test/podman-containers.conf /home/podman/.config/containers/containers.conf

RUN mkdir -p /home/podman/.local/share/containers && \
chown podman:podman -R /home/podman && \
chmod 644 /etc/containers/containers.conf

# Copy & modify the defaults to provide reference if runtime changes needed.
# Changes here are required for running with fuse-overlay storage inside container.
RUN sed -e 's|^#mount_program|mount_program|g' \
-e '/additionalimage.*/a "/var/lib/shared",' \
-e 's|^mountopt[[:space:]]*=.*$|mountopt = "nodev,fsync=0"|g' \
/usr/share/containers/storage.conf \
> /etc/containers/storage.conf

# Setup internal Podman to pass subscriptions down from host to internal container
RUN printf '/run/secrets/etc-pki-entitlement:/run/secrets/etc-pki-entitlement\n/run/secrets/rhsm:/run/secrets/rhsm\n' > /etc/containers/mounts.conf

# Note VOLUME options must always happen after the chown call above
# RUN commands can not modify existing volumes
VOLUME /var/lib/containers
VOLUME /home/podman/.local/share/containers

RUN mkdir -p /var/lib/shared/overlay-images \
/var/lib/shared/overlay-layers \
/var/lib/shared/vfs-images \
/var/lib/shared/vfs-layers && \
touch /var/lib/shared/overlay-images/images.lock && \
touch /var/lib/shared/overlay-layers/layers.lock && \
touch /var/lib/shared/vfs-images/images.lock && \
touch /var/lib/shared/vfs-layers/layers.lock

ENV _CONTAINERS_USERNS_CONFIGURED="" \
BUILDAH_ISOLATION=chroot


# My additions to the podman official podman-in-podman image
# can be built and run with:
# podman build -t podman-fedora-wdio -f ./test/podman-fedora-wdio.dockerfile .
# podman run --rm -v ./:/home/podman/nice-node -u podman podman-fedora-wdio

RUN dnf install -y nodejs npm git zip dpkg fakeroot rpmdevtools sudo
RUN dnf install -y nss nss-tools libxcb xorg-x11-server-Xvfb dbus-devel atk-devel at-spi2-atk cups-libs gtk3-devel

RUN mkdir /home/podman/nice-node
WORKDIR /home/podman/nice-node


# Allow 'podman' user to run sudo without password (useful for manually installing packages)
RUN echo "podman ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/podman
RUN echo "podman:password" | chpasswd

CMD ["bash", "-c", "npm install --loglevel=info && npm run package -- --arch=x64 && xvfb-run npm run wdio"]

# # Start the Xvfb server Is currently not needed
# export DISPLAY=':99.0'
# xvfb-run :99 -screen 0 1024x768x24 > /dev/null 2>&1 &



Loading

0 comments on commit 0d2521a

Please sign in to comment.