server/lib/services/BuildsService.dart (36 lines of code) (raw):

// Copyright 2023 Google LLC // // 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. import 'package:cloud_provision_server/services/BaseService.dart'; import 'package:googleapis/cloudbuild/v1.dart' as cb; import 'ConfigService.dart'; class BuildsService extends BaseService { ConfigService _configService = ConfigService(); /// Returns Cloud Build details for specified parameters /// /// [projectId] /// [buildId] Future<cb.Build> getBuildDetails(projectId, buildId) async { var cloudBuildApi = cb.CloudBuildApi(client); cb.Build build = await cloudBuildApi.projects.builds.get(projectId, buildId); return build; } /// Starts Cloud Build build for specified configuration /// /// [projectId] /// [substitutionsMap] /// [cloudProvisionJsonConfig] Future<cb.Operation> startBuild(String accessToken, projectId, substitutionsMap, templateConfigUrl, String method) async { Map<String, dynamic> templateJsonConfig = await _configService.getJson(templateConfigUrl); var templateBuildSteps = templateJsonConfig['create']['steps']; if (method == "DELETE") templateBuildSteps = templateJsonConfig['destroy']['steps']; String parent = "projects/${projectId}/locations/global"; List<cb.BuildStep> buildSteps = []; for (Map<dynamic, dynamic> jsonStep in templateBuildSteps) { var buildStep = cb.BuildStep.fromJson(jsonStep); buildSteps.add(buildStep); } cb.BuildOptions buildOptions = cb.BuildOptions(); buildOptions.substitutionOption = 'ALLOW_LOOSE'; var buildRequest = cb.Build( substitutions: substitutionsMap, steps: buildSteps, options: buildOptions); var cloudBuildApi = cb.CloudBuildApi(getAuthenticatedClient(accessToken)); cb.Operation buildOp = await cloudBuildApi.projects.builds .create(buildRequest, projectId, parent: parent); return buildOp; } }