mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-22 12:56:22 +00:00
soportar gemas binarias
This commit is contained in:
parent
9525747d2b
commit
6b133b9799
5 changed files with 79 additions and 12 deletions
10
Dockerfile
10
Dockerfile
|
@ -14,7 +14,7 @@ ENV RAILS_ENV production
|
||||||
ENV RAILS_MASTER_KEY=$RAILS_MASTER_KEY
|
ENV RAILS_MASTER_KEY=$RAILS_MASTER_KEY
|
||||||
|
|
||||||
# Para compilar los assets en brotli
|
# Para compilar los assets en brotli
|
||||||
RUN apk add --no-cache brotli libgit2-dev cmake
|
RUN apk add --no-cache brotli
|
||||||
|
|
||||||
# Empezamos con la usuaria app creada por sdk-ruby
|
# Empezamos con la usuaria app creada por sdk-ruby
|
||||||
USER app
|
USER app
|
||||||
|
@ -27,7 +27,7 @@ COPY --chown=app:www-data ./Gemfile.lock .
|
||||||
# XXX: No usamos la flag --production porque luego no nos deja
|
# XXX: No usamos la flag --production porque luego no nos deja
|
||||||
# desinstalar las gemas de los assets
|
# desinstalar las gemas de los assets
|
||||||
# RUN --mount=type=cache,target=/home/app/.ccache \
|
# RUN --mount=type=cache,target=/home/app/.ccache \
|
||||||
RUN bundle install --path=./vendor --without test development
|
RUN bundle install --no-cache --path=./vendor --without='test development'
|
||||||
# Vaciar la caché
|
# Vaciar la caché
|
||||||
RUN rm vendor/ruby/2.5.0/cache/*.gem
|
RUN rm vendor/ruby/2.5.0/cache/*.gem
|
||||||
# Limpiar las librerías nativas, esto ahorra más espacio y uso de
|
# Limpiar las librerías nativas, esto ahorra más espacio y uso de
|
||||||
|
@ -65,7 +65,6 @@ RUN apk add --no-cache sqlite-libs
|
||||||
# XXX: Eliminarlo cuando extraigamos la generación de sitios del proceso
|
# XXX: Eliminarlo cuando extraigamos la generación de sitios del proceso
|
||||||
# principal
|
# principal
|
||||||
RUN apk add --no-cache yarn
|
RUN apk add --no-cache yarn
|
||||||
RUN apk add --no-cache libgit2
|
|
||||||
# Instalar foreman para poder correr los servicios
|
# Instalar foreman para poder correr los servicios
|
||||||
RUN gem install --no-document --no-user-install foreman
|
RUN gem install --no-document --no-user-install foreman
|
||||||
RUN apk add --no-cache file
|
RUN apk add --no-cache file
|
||||||
|
@ -75,6 +74,11 @@ RUN addgroup -g 82 -S www-data
|
||||||
# Agregar la usuaria
|
# Agregar la usuaria
|
||||||
RUN adduser -s /bin/sh -G www-data -h /srv/http -D app
|
RUN adduser -s /bin/sh -G www-data -h /srv/http -D app
|
||||||
|
|
||||||
|
# https://github.com/rubygems/rubygems/issues/2918
|
||||||
|
# https://gitlab.alpinelinux.org/alpine/aports/issues/10808
|
||||||
|
COPY ./rubygems-platform-musl.patch /tmp/
|
||||||
|
RUN cd /usr/lib/ruby/2.5.0 && patch -Np 0 -i /tmp/rubygems-platform-musl.patch
|
||||||
|
|
||||||
# Convertirse en app para instalar
|
# Convertirse en app para instalar
|
||||||
USER app
|
USER app
|
||||||
WORKDIR /srv/http
|
WORKDIR /srv/http
|
||||||
|
|
7
Gemfile
7
Gemfile
|
@ -1,6 +1,13 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# TODO: Podríamos usar solo gems.sutty.nl pero por alguna razón bundler
|
||||||
|
# prefiere x86_64-linux-musl antes que x86_64-linux y ya perdimos mucho
|
||||||
|
# tiempo buscando soporte para musl
|
||||||
|
if ENV['RAILS_ENV'] == 'production'
|
||||||
source 'https://gems.sutty.nl'
|
source 'https://gems.sutty.nl'
|
||||||
|
else
|
||||||
|
source 'https://rubygems.org'
|
||||||
|
end
|
||||||
|
|
||||||
git_source(:github) do |repo_name|
|
git_source(:github) do |repo_name|
|
||||||
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
|
||||||
|
|
16
Gemfile.lock
16
Gemfile.lock
|
@ -6,7 +6,7 @@ GIT
|
||||||
nokogiri
|
nokogiri
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
remote: https://:@gems.sutty.nl/
|
remote: https://gems.sutty.nl/
|
||||||
specs:
|
specs:
|
||||||
actioncable (6.0.0)
|
actioncable (6.0.0)
|
||||||
actionpack (= 6.0.0)
|
actionpack (= 6.0.0)
|
||||||
|
@ -65,7 +65,7 @@ GEM
|
||||||
zeitwerk (~> 2.1, >= 2.1.8)
|
zeitwerk (~> 2.1, >= 2.1.8)
|
||||||
addressable (2.7.0)
|
addressable (2.7.0)
|
||||||
public_suffix (>= 2.0.2, < 5.0)
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
airbrussh (1.3.3)
|
airbrussh (1.3.4)
|
||||||
sshkit (>= 1.6.1, != 1.7.0)
|
sshkit (>= 1.6.1, != 1.7.0)
|
||||||
ast (2.4.0)
|
ast (2.4.0)
|
||||||
autoprefixer-rails (9.6.1.1)
|
autoprefixer-rails (9.6.1.1)
|
||||||
|
@ -159,8 +159,8 @@ GEM
|
||||||
rake (>= 10, < 13)
|
rake (>= 10, < 13)
|
||||||
rubocop (>= 0.50.0)
|
rubocop (>= 0.50.0)
|
||||||
sysexits (~> 1.1)
|
sysexits (~> 1.1)
|
||||||
hamlit (2.9.5)
|
hamlit (2.10.0)
|
||||||
temple (>= 0.8.0)
|
temple (>= 0.8.2)
|
||||||
thor
|
thor
|
||||||
tilt
|
tilt
|
||||||
hamlit-rails (0.2.3)
|
hamlit-rails (0.2.3)
|
||||||
|
@ -238,7 +238,7 @@ GEM
|
||||||
mini_portile2 (~> 2.4.0)
|
mini_portile2 (~> 2.4.0)
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
parallel (1.17.0)
|
parallel (1.17.0)
|
||||||
parser (2.6.4.0)
|
parser (2.6.4.1)
|
||||||
ast (~> 2.4.0)
|
ast (~> 2.4.0)
|
||||||
pathutil (0.16.2)
|
pathutil (0.16.2)
|
||||||
forwardable-extended (~> 2.6)
|
forwardable-extended (~> 2.6)
|
||||||
|
@ -293,7 +293,7 @@ GEM
|
||||||
ffi (~> 1.0)
|
ffi (~> 1.0)
|
||||||
rbnacl (4.0.2)
|
rbnacl (4.0.2)
|
||||||
ffi
|
ffi
|
||||||
redis (4.1.2)
|
redis (4.1.3)
|
||||||
redis-actionpack (5.1.0)
|
redis-actionpack (5.1.0)
|
||||||
actionpack (>= 4.0, < 7)
|
actionpack (>= 4.0, < 7)
|
||||||
redis-rack (>= 1, < 3)
|
redis-rack (>= 1, < 3)
|
||||||
|
@ -315,7 +315,7 @@ GEM
|
||||||
responders (3.0.0)
|
responders (3.0.0)
|
||||||
actionpack (>= 5.0)
|
actionpack (>= 5.0)
|
||||||
railties (>= 5.0)
|
railties (>= 5.0)
|
||||||
rouge (3.10.0)
|
rouge (3.11.0)
|
||||||
rubocop (0.74.0)
|
rubocop (0.74.0)
|
||||||
jaro_winkler (~> 1.5.1)
|
jaro_winkler (~> 1.5.1)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
|
@ -377,7 +377,7 @@ GEM
|
||||||
sucker_punch (2.1.2)
|
sucker_punch (2.1.2)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
sysexits (1.2.0)
|
sysexits (1.2.0)
|
||||||
temple (0.8.1)
|
temple (0.8.2)
|
||||||
terminal-table (1.8.0)
|
terminal-table (1.8.0)
|
||||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||||
thor (0.20.3)
|
thor (0.20.3)
|
||||||
|
|
31
Makefile
Normal file
31
Makefile
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# Incluir las variables de entorno
|
||||||
|
include .env
|
||||||
|
|
||||||
|
# Limpiar los archivos de testeo
|
||||||
|
clean:
|
||||||
|
rm -rf _sites/test-* _deploy/test-*
|
||||||
|
|
||||||
|
# Generar la imagen Docker
|
||||||
|
build:
|
||||||
|
docker build --build-arg="RAILS_MASTER_KEY=`cat config/master.key`" -t sutty/sutty .
|
||||||
|
|
||||||
|
# Crear el directorio donde se almacenan las gemas binarias
|
||||||
|
../gems/:
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
|
# Compilar todas las gemas binarias y subirlas a gems.sutty.nl para que
|
||||||
|
# al crear el contenedor no tengamos que compilarlas cada vez
|
||||||
|
convert-gems: ../gems/
|
||||||
|
bundle show --paths \
|
||||||
|
| xargs -I {} sh -c 'test -d {}/ext && basename {}' \
|
||||||
|
| sed -re "s/-([^-]+)$$/\t\1/" \
|
||||||
|
| while read gem version; do \
|
||||||
|
docker run \
|
||||||
|
-v `readlink -f $<`:/srv/gems \
|
||||||
|
-v `readlink -f ~/.ccache`:/home/builder/.ccache \
|
||||||
|
-e HTTP_BASIC_USER=$(HTTP_BASIC_USER) \
|
||||||
|
-e HTTP_BASIC_PASSWORD=$(HTTP_BASIC_PASSWORD) \
|
||||||
|
-e GEM=$$gem \
|
||||||
|
-e VERSION=$$version \
|
||||||
|
sutty/gem-compiler:latest ; \
|
||||||
|
done
|
25
rubygems-platform-musl.patch
Normal file
25
rubygems-platform-musl.patch
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
--- rubygems/platform.rb.orig
|
||||||
|
+++ rubygems/platform.rb
|
||||||
|
@@ -89,7 +89,7 @@
|
||||||
|
when /^dalvik(\d+)?$/ then [ 'dalvik', $1 ]
|
||||||
|
when /^dotnet$/ then [ 'dotnet', nil ]
|
||||||
|
when /^dotnet([\d.]*)/ then [ 'dotnet', $1 ]
|
||||||
|
- when /linux/ then [ 'linux', $1 ]
|
||||||
|
+ when /linux-?(\w+)?/ then [ 'linux', $1 ]
|
||||||
|
when /mingw32/ then [ 'mingw32', nil ]
|
||||||
|
when /(mswin\d+)(\_(\d+))?/ then
|
||||||
|
os, version = $1, $3
|
||||||
|
--- rubygems.rb.orig
|
||||||
|
+++ rubygems.rb
|
||||||
|
@@ -764,10 +764,7 @@
|
||||||
|
def self.platforms
|
||||||
|
@platforms ||= []
|
||||||
|
if @platforms.empty?
|
||||||
|
- # XXX: Patched to avoid installing platform-specific gems with binaries
|
||||||
|
- # linked against glibc.
|
||||||
|
- @platforms = [Gem::Platform::RUBY]
|
||||||
|
- #@platforms = [Gem::Platform::RUBY, Gem::Platform.local]
|
||||||
|
+ @platforms = [Gem::Platform::RUBY, Gem::Platform.local]
|
||||||
|
end
|
||||||
|
@platforms
|
||||||
|
end
|
Loading…
Reference in a new issue