Я пытаюсь установить соединение из моего репозитория On Premise git (Remote Url), который я могу подключить на своем локальном компьютере с использованием учетных данных, к сборке кода AWS или конвейеру кода.
Для этогоУ меня есть заявление о решении со стороны AWS -
В настоящее время CodeBuild поддерживает только репозитории BitBucket, размещенные на bitbucket.org, BitBucket Server (локальный BitBucket) в настоящее время не поддерживается.Существует существующий запрос о поддержке BitBucket Server в CodeBuild, к которому я добавил ваш интерес.Я не могу сообщить ETA о том, когда эта функция может быть выпущена, однако вы можете следить за обновлениями этой функции на следующих сайтах:
- История выпуска AWS CodeBuild: https://docs.aws.amazon.com/codebuild/latest/userguide/history.html- Что нового: http://aws.amazon.com/new/
- Блоги AWS: https://aws.amazon.com/blogs/aws/
Возможен обходной путь путем создания настраиваемого моста между репозиторием Git и AWS, который может быть выполнен с помощьюСоздав лямбда-функцию, которая будет клонировать репозиторий в корзину S3, которую затем можно будет использовать в качестве источника в CodeBuild, вы можете прочитать об этом здесь [1].
Надеюсь, что это поможет, если у вас есть какие-либо вопросы, пожалуйста,дайте мне знать, я буду рад помочь.
[1] https://aws.amazon.com/quickstart/architecture/git-to-s3-using-webhooks/
Итак, я реализовал лямбда-функцию, подобную этой:
public String handleRequest(S3Event event, Context context) {
final String REMOTE_URL = "https://username@stash.some.com/scm/something/dpautomation.git";
CredentialsProvider cp = new UsernamePasswordCredentialsProvider("username", "password");
try (Git result = Git.cloneRepository().setURI(REMOTE_URL).setDirectory(cretaeS3()).setCredentialsProvider(cp)
.call()) {
System.out.println("Having repository: " + result.getRepository().getDirectory());
} catch (InvalidRemoteException e) {
e.printStackTrace();
} catch (TransportException e) {
e.printStackTrace();
} catch (GitAPIException e) { // TODO Auto-generated
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
return "sucess";
}
public File cretaeS3() throws IOException {
String bucketName = "selenium-lambda-java";
String destinationKey ="screenshots_on_failure/testdata1";
String filename="\"+temp";
AmazonS3 s3Client =
AmazonS3ClientBuilder.standard().withRegion("us-east-1").withCredentials(new
ProfileCredentialsProvider()).build();
File src = new File(filename);
s3Client.putObject(new PutObjectRequest(bucketName, destinationKey, src));
return src;
}
В приведенном выше коде, поскольку мне нужно скопировать файлы репозитория Remote url непосредственно в корзину s3, поэтому я использовал jgit.api.Git, где при попытке клонировать удаленное репо мне нужно указать путь в формате файла в setDirectory.параметр пока долженсоюзник путь ведра, поэтому я попробовал приведенный выше код.я получаю ошибку ниже:
{
"errorMessage": "Unable to calculate MD5 hash: \"+temp (No such file or directory)",
"errorType": "com.amazonaws.SdkClientException",
"stackTrace": [
"com.amazonaws.services.s3.AmazonS3Client.getInputStream(AmazonS3Client.java:1852)", "com.amazonaws.services.s3.AmazonS3Client.uploadObject(AmazonS3Client.java:1770)", "com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1749)", "com.amazonaws.lambda.demo.LambdaFunctionHandler.cretaeS3(LambdaFunctionHandler.java:79)", "com.amazonaws.lambda.demo.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:52)", "com.amazonaws.lambda.demo.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:1)" ], "cause": { "errorMessage": "\"+temp (No such file or directory)",
"errorType": "java.io.FileNotFoundException",
"stackTrace": [
"java.io.FileInputStream.open0(Native Method)",
"java.io.FileInputStream.open(FileInputStream.java:195)",
"java.io.FileInputStream.<init>(FileInputStream.java:138)",
"com.amazonaws.util.Md5Utils.computeMD5Hash(Md5Utils.java:97)",
"com.amazonaws.util.Md5Utils.md5AsBase64(Md5Utils.java:104)",
"com.amazonaws.services.s3.AmazonS3Client.getInputStream(AmazonS3Client.java:1848)",
"com.amazonaws.services.s3.AmazonS3Client.uploadObject(AmazonS3Client.java:1770)",
"com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1749)",
"com.amazonaws.lambda.demo.LambdaFunctionHandler.cretaeS3(LambdaFunctionHandler.java:79)",
"com.amazonaws.lambda.demo.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:52)",
"com.amazonaws.lambda.demo.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:1)"
]
}}
Я застрял в последние 5 дней, пожалуйста, помогите мне в этом.