- Shell 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| action.yml | ||
| LICENSE | ||
| README.md | ||
| skopeo-operations.sh | ||
Skopeo Image Operations
Этот GitHub Action (действие) выполняет копирование Docker-образов из указанного источника в целевое назначение Skopeo, а так же удаление и инспектирование образов в источнике. Он поддерживает аутентификацию в реестрах, если это необходимо.
Skopeo — это мощный инструмент для работы с контейнерными образами, который в том числе поддерживает копирование образов между реестрами без необходимости их загрузки на локальную машину.
Для работы этому действию требуется установленный пакет
jq.
Выполняемые операции
Задаются входным параметром operation:
copy— копирование образа из одного реестра в другой;delete— удаление образа из исходного реестра;inspect— инспектирование образа в исходном реестре.
Если параметр явно не указан, то выполняется копирование copy.
Не все реестры поддерживают удаление. Смотри https://github.com/containers/skopeo/blob/main/docs/skopeo-delete.1.md
Источники и цели для skopeo
Плагин поддерживает все возможные ресурсы и цели для skopeo copy:
docker://(Docker Registry)oci:(OCI-образы)dir:(локальная папка)docker-archive:(Docker-архив)oci-archive:(OCI-архив)containers-storage:(локальное хранилище контейнеров)
Как работает аутентификация?
Аутентификация выполняется только для источников и целей типа docker://.
Для других типов источников и целей аутентификация не требуется.
Если учетные данные указаны (
source_username,source_password,target_username,target_password), они будут использованы для аутентификации.Если реестр публичный, то логин и пароль необязательны.
Использование
Копирование из Docker Registry в OCI-архив
...
jobs:
build:
runs-on: ubuntu-latest
steps:
...
- name: Copy from Reg to OCI
uses: https://git.xciii.ru/coral/skopeo-copy-action@main
with:
source: docker://docker.io/source/repo:tag
target: oci-archive:/path/to/archive.tar
source_username: ${{ secrets.SOURCE_USERNAME }}
source_password: ${{ secrets.SOURCE_PASSWORD }}
Копирование из локальной папки в Docker Registry
...
jobs:
build:
runs-on: ubuntu-latest
steps:
...
- name: Copy from Dir to Reg
uses: https://git.xciii.ru/coral/skopeo-copy-action@main
with:
source: dir:/path/to/source
target: docker://docker.io/target/repo:tag
target_username: ${{ secrets.TARGET_USERNAME }}
target_password: ${{ secrets.TARGET_PASSWORD }}
Копирование из Docker Registry в локальное хранилище контейнеров
...
jobs:
build:
runs-on: ubuntu-latest
steps:
...
- name: Copy from Reg to Local Storage
uses: https://git.xciii.ru/coral/skopeo-copy-action@main
with:
source: docker://docker.io/source/repo:tag
target: containers-storage:my-image:tag
source_username: ${{ secrets.SOURCE_USERNAME }}
source_password: ${{ secrets.SOURCE_PASSWORD }}
Удаление образа из Docker Registry
...
jobs:
build:
runs-on: ubuntu-latest
steps:
...
- name: Delete from Reg
uses: https://git.xciii.ru/coral/skopeo-copy-action@main
with:
operation: delete
source: docker://docker.io/image/to-delete:tag
source_username: ${{ secrets.SOURCE_USERNAME }}
source_password: ${{ secrets.SOURCE_PASSWORD }}
Инспектирование образа из Docker Registry
...
jobs:
build:
runs-on: ubuntu-latest
steps:
...
- name: Inspect from Reg
id: inspect_step # Идентификатор шага для использования outputs
uses: https://git.xciii.ru/coral/skopeo-copy-action@main
with:
operation: inspect
source: docker://docker.io/image/to-inspect:tag
source_username: ${{ secrets.SOURCE_USERNAME }}
source_password: ${{ secrets.SOURCE_PASSWORD }}
Входные параметры
| Параметр | Описание | Обязательный | По умолчанию |
|---|---|---|---|
operation |
Операция: copy (копирование), delete (удаление) или inspect (инспектирование) |
Да | copy |
source |
Источник образа (например, docker://source-registry/image:tag). |
Да | - |
target |
Целевой реестр (например, oci-archive:/path/to/archive.tar). |
Да, при копировании | - |
source_username |
Имя пользователя для аутентификации в исходном реестре (опционально). | Нет | - |
source_password |
Пароль для аутентификации в исходном реестре (опционально). | Нет | - |
target_username |
Имя пользователя для аутентификации в целевом реестре (опционально). | Нет | - |
target_password |
Пароль для аутентификации в целевом реестре (опционально). | Нет | - |
Выходные параметры
Результат работы inspect сохраняется в $GITHUB_OUTPUT и может быть использован в других шагах:
- name: 'Use inspect result'
run: |
echo "${{ steps.inspect_step.outputs.inspect_result }}"
Локальное тестирование
Вы можете протестировать Action локально с помощью act:
-
Установите
act:brew install act -
Запустите тестирование:
act -s GITHUB_TOKEN=<your-token>