【问题标题】:Deploy Maven to s3 bucket from jenkins从 jenkins 将 Maven 部署到 s3 存储桶
【发布时间】:2020-05-09 07:18:17
【问题描述】:

我对 CI/CD 实施完全陌生。我正在尝试创建一个管道,将我的 jar 打包并部署到 s3 存储桶。

请注意: 在 aws 控制台中,我创建的 IAM 用户对 s3 具有完全访问权限,并且策略模拟器运行良好。 我已经在 jenkins 中创建了我的 s3 配置文件,并且“测试连接”运行良好。

“发布到 aws”阶段失败,出现以下问题。任何人都可以在这里指导我。看不到我缺少什么。

Downloading from s3.artifacts.snapshot: s3://panda.bucket.net/snapshot/com/panda/panda-app/1.0- 
SNAPSHOT/maven-metadata.xml
[WARNING] s3://panda.bucket.net/snapshot - Connection refused
[WARNING] Could not transfer metadata com.panda:panda-app:1.0-SNAPSHOT/maven-metadata.xml from/to 
s3.artifacts.snapshot (s3://panda.bucket.net/snapshot): Could not connect to repository
[INFO] Logged off - panda.bucket.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

我的 Jenkins 文件:

pipeline {
agent any
tools {
    maven 'maven'
    jdk 'jdk1.8'
}
stages {
    stage('SCM') {
                steps {
                    git 'https://username:password@gitlab.com/my-repo/panda-app'
                }
     }
    stage('Build') {
        steps {
            bat 'mvn clean compile'
        }
    }
    stage('Release to aws') {
        steps {
            bat 'mvn deploy'
        }
     }
   }}

我在 pom 中的构建和分发配置:

<properties>
    <java.version>1.8</java.version>
    <artifactrepo.url>panda.bucket.net</artifactrepo.url>
</properties>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
    <extensions>
        <extension>
            <groupId>com.allogy.maven.wagon</groupId>
            <artifactId>maven-s3-wagon</artifactId>
            <version>1.2.0</version>
        </extension>
    </extensions>
</build>
<distributionManagement>
    <repository>
        <id>s3.artifacts.release</id>
        <url>s3://${artifactrepo.url}/release</url>
    </repository>
    <snapshotRepository>
        <id>s3.artifacts.snapshot</id>
        <url>s3://${artifactrepo.url}/snapshot</url>
    </snapshotRepository>
    </distributionManagement>

设置.xml

<settings>
<server>
  <id>s3.artifacts.release</id>
  <username>MY_ACCESS_KEY</username>
  <password>MY_SECRET</password>
  <filePermissions>AuthenticatedRead</filePermissions>
</server>
<server>
  <id>s3.artifacts.snapshot</id>
  <username>MY_ACCESS_KEY</username>
  <password>MY_SECRET</password>
  <filePermissions>AuthenticatedRead</filePermissions>
</server>

【问题讨论】:

  • 您可能需要为连接提供 AWS 凭证。

标签: amazon-web-services jenkins amazon-s3 jenkins-pipeline maven-3


【解决方案1】:

您真的需要在 Maven 中实现到 S3 的部署吗?如果您的情况可以选择,那么在 Jenkins 管道上执行此操作会更简单。

你需要有AWS steps plugin

pipeline {
agent any
tools {
    maven 'maven'
    jdk 'jdk1.8'
}
stages {
    stage('SCM') {
                steps {
                    git 'https://username:password@gitlab.com/my-repo/panda-app'
                }
     }
    stage('Build') {
        steps {
            bat 'mvn clean compile' //maybe package goal to leave the artifact ready to be released
        }
    }
    stage('Release to aws') {
        steps {
            withAWS(region:'yourS3Region', credentials:'awscredentialsID'){
                s3Upload(bucket:"yourBucketName", workingDir:'target', includePathPattern:'**/*'); // pick your jar or whatever you need
            }
        }
     }
   }}

【讨论】:

  • 感谢您的提醒。!它适用于詹金斯管道。
猜你喜欢
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
  • 2018-12-19
  • 2021-07-03
  • 1970-01-01
  • 2017-11-23
  • 2013-02-12
相关资源
最近更新 更多