-
-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: podman in podman docker file with wdio deps (#573)
* test: e2e tests using podman in podman docker file with wdio deps * test running spec tests in special container on ubuntu runner * use ubuntu 24 for e2e ubuntu tests
- Loading branch information
Showing
12 changed files
with
337 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
node_modules/ | ||
.vite/ | ||
out/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
[containers] | ||
volumes = [ | ||
"/proc:/proc", | ||
] | ||
default_sysctls = [] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 & | ||
|
||
|
||
|
Oops, something went wrong.