Was looking for a solution to use the project.version from a pom.xml file in a BitBucket pipeline. It's not possible to share variables between one step: and another.
<version>1.0.4</version>
So I worked around by defining the <fileName> in pom to be a fixed filename so I can use it in a shell script in the pipeline. In the example shell script below (save-artifact-to-s3.sh) it's called my-project as example.
<build>
<finalName>${project.artifactId}</finalName>
<plugins>...
This way the same jar file would be generated
Next step is to add a tag to your commit starting with *v* - ex v1.0.4
in the pipeline the trigger would be _tags:_
The PROJECT_VERSION=$(BITBUCKET_TAG:1} -> :1 will assign BITBUCKET_TAG starting from position 1 to the variable.
Check that it's correct:
tags:
v*:
- step:
name: echo TAG
image: atlassian/default-image:2
script:
- PROJECT_VERSION=${BITBUCKET_TAG:1}
- echo $PROJECT_VERSION
Make sure you're using the my-project as target artefact:
- step:
name: build
image: maven:3.6.1
caches:
- maven
script:
- mvn install --file pom.xml
artifacts:
- "target/my-project.jar"
Now you can use this tag in a shell script:
- step:
name: upload artifact to s3
image: mesosphere/aws-cli
script:
- echo ${BITBUCKET_TAG:1}
- rm -rf /opt/atlassian/pipelines/agent/build/.bitbucket/pipelines/generated/pipeline/pipes
- sh deployment/save-artifact-to-s3.sh ${BITBUCKET_TAG:1}
save-artifact-to-s3.sh :
#!/bin/sh
PROJECT_VERSION=$1
LOCAL_BUILD_ARTIFACT=target/alberts-machineconfiguration-lambda.jar
S3_ARTIFACT=my-project-$PROJECT_VERSION.jar
S3_BUCKET=artifacts.company.be/saved-configurations
S3_ARTIFACT_URL=s3://${S3_BUCKET}/${S3_ARTIFACT}
echo "Copying artifact '$LOCAL_BUILD_ARTIFACT' to S3: $S3_ARTIFACT_URL"
aws s3 cp ${LOCAL_BUILD_ARTIFACT} ${S3_ARTIFACT_URL}
echo "Done - artifact '$S3_ARTIFACT' has been copied to s3 to '$S3_BUCKET'"
Hope this will help someone.
What would be nice is to auto tag a commit when it's in master... hmmm
Tried also with the image provided by AWS-CLI but that did not seem to accept variables.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.