Upgrade to Elixir 1.16.2 (#71)

* Upgraded local docker to 1.16.2

* Removed tmpfix from mix check that was waiting for 1.16.2

* Update selfhosted dockerfile with some addl. updates
This commit is contained in:
Kieran 2024-03-11 18:47:13 -07:00 committed by GitHub
parent e6b04bd675
commit 2267b47de8
4 changed files with 30 additions and 18 deletions

View file

@ -9,18 +9,15 @@
fix: true,
## don't retry automatically even if last run resulted in failures
# retry: false,
retry: false,
## list of tools (see `mix check` docs for a list of default curated tools)
tools: [
{:compiler, env: %{"MIX_ENV" => "test"}},
{:formatter, env: %{"MIX_ENV" => "test"}},
{:sobelow, "mix sobelow --config"},
# TODO: delete these and replace them with builtin ex_unit and formatter tools
# once Elixir 1.16.2 is released (see: https://github.com/karolsluszniak/ex_check/issues/41#issuecomment-1921390413)
{:elixir_tests, "mix test"},
{:elixir_formatting, "mix format --check-formatted", fix: "mix format"},
{:prettier_formatting, "yarn run prettier . --check", fix: "yarn run prettier . --write"}
{:prettier_formatting, "yarn run prettier . --check", fix: "yarn run prettier . --write"},
{:npm_test, false}
## curated tools may be disabled (e.g. the check for compilation warnings)
# {:compiler, false},

View file

@ -1,9 +1,13 @@
# Extend from the official Elixir image.
FROM elixir:latest
ARG ELIXIR_VERSION=1.16.2
ARG OTP_VERSION=26.2.2
ARG DEBIAN_VERSION=bookworm-20240130
ARG DEV_IMAGE="hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-debian-${DEBIAN_VERSION}"
FROM ${DEV_IMAGE}
# Install debian packages
RUN apt-get update -qq
RUN apt-get install -y inotify-tools ffmpeg \
RUN apt-get install -y inotify-tools ffmpeg curl git openssh-client \
python3 python3-pip python3-setuptools python3-wheel python3-dev
# Install nodejs
@ -28,6 +32,7 @@ COPY . ./
RUN chmod +x ./docker-run.dev.sh
# Install Elixir deps
# RUN mix archive.install github hexpm/hex branch latest
RUN mix deps.get
# Gives us iex shell history
ENV ERL_AFLAGS="-kernel shell_history enabled"

View file

@ -2,5 +2,3 @@
- Use a UUID for the media database ID (or at least alongside it)
- Look into this and its recommended plugins https://hexdocs.pm/ex_check/readme.html
- Add output template option for the source's friendly name
- TODO: Install Elixir 1.16.2 when available to fix bug with `ex_check` https://github.com/karolsluszniak/ex_check/issues/41#issuecomment-1921390413
- delete `{:elixir_tests, "mix test"}` and formatting check

View file

@ -11,9 +11,9 @@
# - https://pkgs.org/ - resource for finding needed packages
# - Ex: hexpm/elixir:1.16.0-erlang-26.2.1-debian-bullseye-20231009-slim
#
ARG ELIXIR_VERSION=1.16.0
ARG OTP_VERSION=26.2.1
ARG DEBIAN_VERSION=bullseye-20231009-slim
ARG ELIXIR_VERSION=1.16.2
ARG OTP_VERSION=26.2.2
ARG DEBIAN_VERSION=bookworm-20240130-slim
ARG BUILDER_IMAGE="hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-debian-${DEBIAN_VERSION}"
ARG RUNNER_IMAGE="debian:${DEBIAN_VERSION}"
@ -76,12 +76,13 @@ FROM ${RUNNER_IMAGE}
RUN apt-get update -y
RUN apt-get install -y libstdc++6 openssl libncurses5 locales ca-certificates \
python3 python3-pip ffmpeg
ffmpeg curl git openssh-client
RUN apt-get clean && rm -f /var/lib/apt/lists/*_*
# Download YT-DLP
# NOTE: If you're seeing weird issues, consider using the FFMPEG released by yt-dlp
RUN python3 -m pip install -U --pre yt-dlp
# Download and update YT-DLP
RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
RUN chmod a+rx /usr/local/bin/yt-dlp
RUN yt-dlp -U
# Set the locale
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
@ -106,6 +107,17 @@ ENV RUN_CONTEXT="selfhosted"
# Only copy the final release from the build stage
COPY --from=builder --chown=nobody:root /app/_build/${MIX_ENV}/rel/pinchflat ./
# NEVER do this if you're running in an environment where you don't trust the user
# (ie: most environments). This is only acceptable in a self-hosted environment.
# The user could just run the whole container as root and bypass this anyway so
# it's not a huge deal.
# This removes the root password to allow users to assume root if needed. This is
# preferrable to running the whole container as root so that the files/directories
# created by the app aren't owned by root and are therefore easier for other users
# and processes to interact with. If you want to just run the whole container as
# root, use --user 0:0 or something.
RUN passwd -d root
USER nobody
# If using an environment that doesn't automatically reap zombie processes, it is