UNPKG

@atomist/sdm

Version:

Atomist Software Delivery Machine SDK

84 lines 3.09 kB
"use strict"; /* * Copyright © 2020 Atomist, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.postWebhook = exports.postBuildWebhook = void 0; const configuration_1 = require("@atomist/automation-client/lib/configuration"); const httpClient_1 = require("@atomist/automation-client/lib/spi/http/httpClient"); const logger_1 = require("@atomist/automation-client/lib/util/logger"); const DefaultRetryOptions = { retries: 10, factor: 2, minTimeout: 1 * 500, maxTimeout: 5 * 1000, randomize: true, }; /** * Post to the Atomist generic build webhook URL. It creates the payload * then uses postWebhook. * * @param owner repository owner, i.e., user or organization * @param repo name of repository * @param branch commit branch * @param commit commit SHA * @param status "start", "success", or "fail" * @param teamId Atomist team ID * @param retryOptions change default retry options * @return true if successful, false on failure after retries */ function postBuildWebhook(owner, repo, branch, commit, status, teamId, retryOptions = DefaultRetryOptions) { const payload = { repository: { owner_name: owner, name: repo }, type: "push", status, commit, branch, provider: "GoogleContainerBuilder", }; return postWebhook("build", payload, teamId, retryOptions); } exports.postBuildWebhook = postBuildWebhook; /** * Post payload to the Atomist webhook URL. It will retry * several times. * * @param webhook type of webhook * @param payload object to post * @param teamId Atomist team ID * @param retryOptions change default retry options * @return true if successful, false on failure after retries */ async function postWebhook(webhook, payload, teamId, retryOptions = DefaultRetryOptions) { logger_1.logger.debug("Posting webhook: %j", payload); const baseUrl = process.env.ATOMIST_WEBHOOK_BASEURL || "https://webhook.atomist.com"; const url = `${baseUrl}/atomist/${webhook}/teams/${teamId}`; const httpClient = configuration_1.configurationValue("http.client.factory", httpClient_1.defaultHttpClientFactory()).create(url); try { await httpClient.exchange(url, { method: httpClient_1.HttpMethod.Post, body: payload, options: { retry: retryOptions, }, }); return true; } catch (e) { return false; } } exports.postWebhook = postWebhook; //# sourceMappingURL=ImageLink.js.map