jenkinsci / amazon-ecr-plugin

Amazon EC2 Container Registry plugin for Jenkins
https://plugins.jenkins.io/amazon-ecr/
MIT License
32 stars 22 forks source link

Use in declarative docker workflow pipelines #173

Closed cisco-abrandel closed 6 months ago

cisco-abrandel commented 6 months ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.426.3 OS: Linux - 5.14.0-284.30.1.el9_2.x86_64 Java: 21.0.1 - Red Hat, Inc. (OpenJDK 64-Bit Server VM) --- ace-editor:1.1 amazon-ecr:1.114.vfd22430621f5 ansible:307.va_1f3ef06575a_ antisamy-markup-formatter:162.v0e6ec0fcfcf6 apache-httpcomponents-client-4-api:4.5.14-208.v438351942757 apache-httpcomponents-client-5-api:5.3.1-1.0 audit-trail:361.v82cde86c784e authentication-tokens:1.53.v1c90fd9191a_b_ aws-credentials:218.v1b_e9466ec5da_ aws-java-sdk-ec2:1.12.633-430.vf9a_e567a_244f aws-java-sdk-ecr:1.12.633-430.vf9a_e567a_244f aws-java-sdk-minimal:1.12.633-430.vf9a_e567a_244f bootstrap5-api:5.3.2-3 bouncycastle-api:2.30.1.77-225.v26ea_c9455fd9 branch-api:2.1148.vce12cfcdf090 build-blocker-plugin:1.7.9 build-timeout:1.32 caffeine-api:3.1.8-133.v17b_1ff2e0599 checks-api:2.0.2 cloud-stats:336.v788e4055508b_ cloudbees-folder:6.858.v898218f3609d command-launcher:107.v773860566e2e commons-lang3-api:3.13.0-62.v7d18e55f51e2 commons-text-api:1.11.0-95.v22a_d30ee5d36 configuration-as-code:1775.v810dc950b_514 credentials:1319.v7eb_51b_3a_c97b_ credentials-binding:657.v2b_19db_7d6e6d dark-theme:416.v535839b_c4e88 description-setter:239.vd0a_6b_785f92d display-url-api:2.200.vb_9327d658781 docker-commons:439.va_3cb_0a_6a_fb_29 docker-java-api:3.3.4-86.v39b_a_5ede342c docker-plugin:1.5 docker-workflow:572.v950f58993843 durable-task:550.v0930093c4b_a_6 echarts-api:5.4.3-2 email-ext:2.104 extended-choice-parameter:376.v2e02857547b_a_ font-awesome-api:6.5.1-2 git:5.2.1 git-client:4.6.0 git-parameter:0.9.19 github:1.38.0 github-api:1.318-461.v7a_c09c9fa_d63 github-branch-source:1772.va_69eda_d018d4 github-checks:554.vb_ee03a_000f65 gradle:2.10 gson-api:2.10.1-15.v0d99f670e0a_7 htmlpublisher:1.32 instance-identity:185.v303dc7c645f9 ionicons-api:56.v1b_1c8c49374e jackson2-api:2.16.1-373.ve709c6871598 jakarta-activation-api:2.0.1-3 jakarta-mail-api:2.0.1-3 javax-activation-api:1.2.0-6 javax-mail-api:1.6.2-9 jaxb:2.3.9-1 jdk-tool:73.vddf737284550 jjwt-api:0.11.5-77.v646c772fddb_0 jobConfigHistory:1229.v3039470161a_d joda-time-api:2.12.7-29.v5a_b_e3a_82269a_ jquery:1.12.4-1 jquery3-api:3.7.1-1 jsch:0.2.16-86.v42e010d9484b_ json-api:20240205-27.va_007549e895c json-path-api:2.9.0-33.v2527142f2e1d junit:1259.v65ffcef24a_88 kubernetes-cli:1.12.1 kubernetes-client-api:6.10.0-240.v57880ce8b_0b_2 kubernetes-credentials:0.11 ldap:711.vb_d1a_491714dc mailer:463.vedf8358e006b_ mapdb-api:1.0.9-28.vf251ce40855d matrix-auth:3.2.1 matrix-project:822.824.v14451b_c0fd42 metrics:4.2.21-449.v6960d7c54c69 mina-sshd-api-common:2.12.0-90.v9f7fb_9fa_3d3b_ mina-sshd-api-core:2.12.0-90.v9f7fb_9fa_3d3b_ momentjs:1.1.1 okhttp-api:4.11.0-172.vda_da_1feeb_c6e parameter-separator:166.vd0120849b_386 pipeline-build-step:540.vb_e8849e1a_b_d8 pipeline-graph-analysis:202.va_d268e64deb_3 pipeline-groovy-lib:704.vc58b_8890a_384 pipeline-input-step:477.v339683a_8d55e pipeline-milestone-step:111.v449306f708b_7 pipeline-model-api:2.2175.v76a_fff0a_2618 pipeline-model-definition:2.2175.v76a_fff0a_2618 pipeline-model-extensions:2.2175.v76a_fff0a_2618 pipeline-rest-api:2.34 pipeline-stage-step:305.ve96d0205c1c6 pipeline-stage-tags-metadata:2.2175.v76a_fff0a_2618 pipeline-stage-view:2.34 plain-credentials:143.v1b_df8b_d3b_e48 plugin-util-api:3.8.0 popper2-api:2.11.6-4 prism-api:1.29.0-10 purge-build-queue-plugin:88.v23b_97b_f2c7a_d resource-disposer:0.23 reverse-proxy-auth-plugin:1.7.7 role-strategy:689.v731678c3e0eb_ saml:4.464.vea_cb_75d7f5e0 scm-api:683.vb_16722fb_b_80b_ script-security:1326.vdb_c154de8669 sidebar-link:2.4.1 skip-notifications-trait:313.vd1337c8f8134 snakeyaml-api:2.2-111.vc6598e30cc65 sonar:2.17.2 ssh-credentials:308.ve4497b_ccd8f4 ssh-slaves:2.948.vb_8050d697fec sshd:3.322.v159e91f6a_550 structs:337.v1b_04ea_4df7c8 subversion:2.17.3 support-core:1375.va_256158e8881 theme-manager:215.vc1ff18d67920 timestamper:1.26 token-macro:400.v35420b_922dcb_ trilead-api:2.133.vfb_8a_7b_9c5dd1 variant:60.v7290fc0eb_b_cd workflow-aggregator:596.v8c21c963d92d workflow-api:1291.v51fd2a_625da_7 workflow-basic-steps:1042.ve7b_140c4a_e0c workflow-cps:3867.v535458ce43fd workflow-durable-task-step:1331.vc8c2fed35334 workflow-job:1385.vb_58b_86ea_fff1 workflow-multibranch:773.vc4fe1378f1d5 workflow-scm-step:415.v434365564324 workflow-step-api:657.v03b_e8115821b_ workflow-support:865.v43e78cc44e0d ws-cleanup:0.45 ```

What Operating System are you using (both controller, and any agents involved in the problem)?

Rocky Linux 9.2

Reproduction steps

Here is a simple pipeline that does not work:

pipeline {
    agent {
        docker { 
          image 'XXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/XXXXXXXXXXX:v1.0.0'
          registryCredentialsId "ecr:eu-east-1:aws-credentials"
        }
    }
    stages {
        stage('ECR-test') {
            steps {
                sh "Test test test"
            }
        }
    }
}

Expected Results

Plugin is able to load the AWS credentials

Actual Results

Credentials are not found. The credentials exist as an AWS credentials type. I've enabled a FINE logger on com.cloudbees.jenkins.plugins.amazonecr, but there is nothing going to the logger, implying that this plugin possibly isn't being invoked. This is further supported by the fact that if I create a credentials named aws-credentials as the username password type instead, it at least finds them, but of course fails to login to ECR.

[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /data/jenkins/workspace/ecr-test
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] withDockerRegistry
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: Could not find credentials matching ecr:eu-east-1:aws-credentials
Finished: FAILURE

Anything else?

Is this supposed to work? I find a handful of references to this supposedly working on StackOverflow, blogs, etc, but I cannot get this to function in a declarative pipeline on any of my Jenkins server, which are all running the same versions outlined here.

Are you interested in contributing a fix?

No response

cisco-abrandel commented 6 months ago

Under manage jenkins->credentials providers we had set "Only selected" providers, and of course this provider was not selected. Sorry for the noise, but hope this helps someone else in the future.