diff --git a/README.md b/README.md index 42b1a95..9466163 100644 --- a/README.md +++ b/README.md @@ -184,6 +184,29 @@ registry, указывать без протокола (например `exampl Список запушенных в registry образов в JSON формате: `["example.com/registry/image1:tag", "example.com/registry/image2:tag", ...]` +### `built-images` + +Собранные образы в JSON формате: `{"image1": "example.com/registry/image1:tag", "image2": "example.com/registry/image2:tag", ...}` +Это удобно использовать если далее в пайплайне потребуется запустить контейнер из собранного образа +```yaml + - uses: orangeappsru/build-images-action@main + id: build-images + with: + registry: ${{ vars.REGISTRY }} + registry-user: ${{ secrets.REGISTRY_USER }} + registry-password: ${{ secrets.REGISTRY_PASSWORD }} + tag: latest + operation: build + build-opts: | + - name: native-builder + - name: test + env: + IMAGE: ${{ fromJson(steps.build-images.outputs.built-images)["native-builder"] }} + run: | + docker run --rm -v $(pwd):/app --workdir /app ${IMAGE} ./build.sh +``` + + ### `build-opts` Проброс в outputs того же самого что пришло в одноименную опцию в inputs \ No newline at end of file diff --git a/js-action/src/index.js b/js-action/src/index.js index fb90a78..d19577e 100644 --- a/js-action/src/index.js +++ b/js-action/src/index.js @@ -30,12 +30,14 @@ async function main() { // Build images if (operation == 'build' || operation == 'build-and-push') { let copyFiles = []; + let images = {}; createDir('copy-files'); for (const image of buildOpts) { const imageTag = `${registry}/${repoName}/${image.name}:${tag}`; console.log(`Build image: ${imageTag}`); + images[image] = imageTag; let args = ''; if ('args' in image) { @@ -56,6 +58,7 @@ async function main() { // build image runCommand(`docker build ${file} ${args} --tag ${imageTag} ${target} .`); + // Copy files if ('copy-files' in image) { @@ -73,6 +76,7 @@ async function main() { } } + core.setOutput('built-images', JSON.stringify(images)); core.setOutput('copy-files', JSON.stringify(copyFiles)); }