Действия Github - создайте быстро работающее действие
Я создаю действие контейнера докеров github, которое включает ряд зависимостей python, node, пакетов pypi и пакетов npm. Чтобы ускорить действие, я перемещаю большую часть установки зависимостей из точки входа в Dockerfile. Теперь мой экшен идет очень быстро, но каждый раз на создание экшена уходит очень много времени.
Есть ли способ, которым действие может быть предварительно создано, или мне нужно опубликовать мой образ докера действий в каком-либо репозитории и кормить ИЗ моего настраиваемого изображения?
Для справки вот мой Dockerfile.
FROM python:3
LABEL "com.github.actions.name"="kedro-action"
LABEL "com.github.actions.description"="A Github Action to run kedro commands"
LABEL "com.github.actions.icon"="it-branch"
LABEL "com.github.actions.color"="black"
LABEL "repository"="http://github.com/WaylonWalker/kedro-action"
LABEL "maintainer"="Waylon Walker <waylon@waylonwalker.com>"
RUN apt-get update
RUN apt-get install -y jq
ENV PYENV_ROOT /root/.pyenv
ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
### INSTALL PYTHON ###
RUN pyenv install 3.7.6
RUN pyenv global 3.7.6
RUN python -m pip install --upgrade pip
RUN pip install kedro
RUN pip install kedro-viz
### INSTALL NODEJS ###
RUN apt-get install curl -y
RUN curl -sL https://deb.nodesource.com/setup_11.x | bash -
RUN apt-get install nodejs -y
### CLONE KEDRO-STATIC-VIZ ###
RUN mkdir ~/build_dir && cd ~/build_dir
RUN git clone https://github.com/WaylonWalker/kedro-static-viz.git
RUN cd kedro-static-viz
RUN npm install -g gatsby-cli
RUN cd kedro-static-viz && npm install && npm audit fix
ADD entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
1 ответ
Вы можете предварительно создать образ Docker для своего действия, а затем в action.yml
файл, вы указываете предварительно созданное изображение вместо Dockerfile
. См. Документацию здесь.
Это пример одного из моих действий, который здесь предварительно создан.
runs:
using: 'docker'
image: 'docker://peterevans/dockerhub-description:2.1.0'