Разбираюсь с GitHub Actions. Хочется запустить сборку кода в моем контейнере, при этом никак не модифицировать образ. В GitLab CI можно было сделать так:
build:
image: my-image
script:
- build-my-project.sh
При этом GitLab Runner сам клонирует код и подмонтирует его в мой контейнер, запущенный на основе образа my-image
.
В GitHub Actions типовая сборка выглядит следующим образом:
name: CI
on:
push:
branches: [ main ]
jobs:
container-test-job:
runs-on: ubuntu-latest
container: my-image
steps:
- name: Check out repository code
uses: actions/checkout@v5
- run: ./build-my-project.sh
При этом actions/checkout@v5
- это скрипт на Node.JS, т.е. чтобы у меня сработал checkout в контейнере должен быть установлен этот самый Node.JS. Таким образом, чтобы запустить сборку мне нужно подготовить образ, который содержит не только инструменты для сборки, но и инструменты для работы GitHub Actions. Теоретически для служебных задач кроме Node.JS может потребоваться что-то еще, поэтому процесс подготовки образа - нетривиальная задача.
Можно ли сделать так, чтобы шаг checkout выполнился в каком-то контейнере, который содержит инструменты для выполнения GitHub Actions, а шаг сборки - выполнился бы в контейнере для сборки, который содержит только инструменты для сборки, без Node.JS?
Перемещено hobbit из general