Я пытаюсь настроить CI / CD для докернизированного проекта Rails, размещенного на Gitlab. После некоторых чтений я, наконец, последовал идее, что docker-compose будет полезен только при разработке, так как производственная сборка будет производиться с помощью прямой команды сборки docker.
Итак, я запустил свой конвейер на Gitlab CI, и у меня возникла ошибка, связанная с RAILS_MASTER_KEY
. Через некоторое время я обнаружил, что лучшим вариантом было бы определить эту переменную в моем хранилище (settings> CI), прежде чем вызывать ее в моем .gitlab-ci.yml
, следующим образом.
Моя проблема в том, что, как бы я ни пытался, я получаю ошибку из-за "неверного base64" или отсутствующего ключа. Об этой проблеме много читают, но ничего не позволило мне ее решить.
image: docker
services:
- docker:dind
cache:
paths:
- node_modules
stages:
- build
- test
- release
- deploy # staging ?
build:
stage: build
before_script:
- apk add --no-cache py-pip python-dev libffi-dev openssl-dev gcc libc-dev make
- pip install docker-compose
- docker-compose --version
script:
- docker-compose build
- docker-compose run app docker/wait_for_it.sh db:5433 -- "rake db:create db:migrate"
test:
stage: test
before_script:
- apk add --no-cache py-pip python-dev libffi-dev openssl-dev gcc libc-dev make
- pip install docker-compose
- docker-compose --version
script:
- docker-compose --version
# Here we will run tests when available...
release:
stage: release
only:
- "feat-dockerisation"
before_script:
- docker info
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
- echo "$RAILS_MASTER_KEY" | tr -d '\r' > config/master.key
script:
- docker build -t registry.gitlab.com/soykje/beweeg-ror:latest --pull .
- docker push registry.gitlab.com/soykje/beweeg-ror:latest
after_script:
- docker logout registry.gitlab.com
Dockerfile
FROM ruby:2.5.5-slim
ARG PRECOMPILEASSETS
RUN apt-get update && apt-get install -y curl gnupg
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgdg.list
RUN curl -q https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
RUN apt-get -y update && \
apt-get install --fix-missing --no-install-recommends -qq -y \
build-essential \
vim \
wget gnupg \
git-all \
curl \
ssh \
postgresql-client-10 libpq5 libpq-dev -y && \
wget -qO- https://deb.nodesource.com/setup_9.x | bash - && \
apt-get install -y nodejs && \
wget -qO- https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && \
apt-get install yarn && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN gem install bundler
#Install gems
RUN mkdir /gems
WORKDIR /gems
COPY Gemfile .
COPY Gemfile.lock .
RUN bundle install
ARG INSTALL_PATH=/opt/beweeg
ENV INSTALL_PATH $INSTALL_PATH
WORKDIR $INSTALL_PATH
COPY . .
# Precompile assets (or not)
RUN docker/potential_asset_precompile.sh $PRECOMPILEASSETS