Создание образов Docker из облачных функций Google - PullRequest
0 голосов
/ 06 ноября 2018

Как часть моего конвейера CD, я настраиваю облачную функцию Google для обработки новых репозиториев, создания образов докеров и отправки их в реестр. У меня все работает на ВМ, но для этого не нужно иметь работающий 24x7.

Итак, просматривая справочную библиотеку NodeJS , я не могу найти способ отправить изображение в реестр, используя узел. Похоже, нет реестра или сборки SDK для узла?

По сути, все, что мне нужно, это выполнить эту команду из облачной функции: gcloud builds submit --tag gcr.io/my_project/my_image.

1 Ответ

0 голосов
/ 22 ноября 2018

Это вполне возможно сделать с помощью Cloud Build API . Вот простой пример использования клиентской библиотеки для Node.js .

exports.createDockerBuild = async (req, res) => {
    const google = require('googleapis').google;
    const cloudbuild = google.cloudbuild({version: 'v1'});

    const client = await google.auth.getClient({
            scopes: ['https://www.googleapis.com/auth/cloud-platform']
    });
    const projectId = await google.auth.getProjectId();
    const resource = {
            "source": {
                    "storageSource": {
                            "bucket": "my-source-bucket",
                            "object": "my-nodejs-source.tar.gz"
                    }
            },
            "steps": [{
                    "name": "gcr.io/cloud-builders/docker",
                    "args": [
                            "build",
                            "-t",
                            "gcr.io/my-project-name/my-nodejs-image",
                            "standard-hello-world"
                    ]
            }],
            "images": ["gcr.io/$PROJECT_ID/my-nodejs-image"]
    };

    const params = {projectId, resource, auth: client};
    result= await cloudbuild.projects.builds.create(params);

    res.status(200).send("200 - Build Submitted");

};

Мой исходный код находился в корзине, но вы можете извлечь его из репозитория так же легко.

Имейте в виду, что для работы асинхронной работы вам потребуется использовать бета-версию Node.js 8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...