From 5e698d8517191b0f95111379db0a6b4e54a5210c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Marcelino?= Date: Fri, 5 May 2023 12:00:44 -0300 Subject: [PATCH 1/6] [patch] try to push ansible-devops to artifactory --- .github/workflows/ansible.yml | 7 +++++ build/bin/.functions.sh | 21 +++++++++++++++ build/bin/artifactory-release.sh | 44 ++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 build/bin/artifactory-release.sh diff --git a/.github/workflows/ansible.yml b/.github/workflows/ansible.yml index a219b4706..f28f3b0bd 100644 --- a/.github/workflows/ansible.yml +++ b/.github/workflows/ansible.yml @@ -39,6 +39,13 @@ jobs: path: ${{ github.workspace }}/ibm/mas_devops/ibm-mas_devops-${{ env.VERSION }}.tar.gz retention-days: 30 + - name: Upload Ansible Collection to Artifactory + env: + ARTIFACTORY_GENERIC_RELEASE_URL: ${{ secrets.ARTIFACTORY_GENERIC_RELEASE_URL }} + ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }} + run: | + $GITHUB_WORKSPACE/build/bin/artifactory-release.sh $GITHUB_WORKSPACE/ibm/mas_devops/ibm-mas_devops-${{ env.VERSION }}.tar.gz + - name: Perform dependency check uses: dependency-check/Dependency-Check_Action@main id: owasp-depcheck diff --git a/build/bin/.functions.sh b/build/bin/.functions.sh index 267dc18a4..98013e90f 100644 --- a/build/bin/.functions.sh +++ b/build/bin/.functions.sh @@ -56,3 +56,24 @@ function install_yq() { if [[ -z "$BUILD_SYSTEM_ENV_LOADED" ]]; then source $DIR/.env.sh fi + +# Upload a file to Artifactory +# ----------------------------------------------------------------------------- +# Usage example: +# artifactory_upload $FILE_PATH $TARGET_URL +# +function artifactory_upload() { + if [ ! -e $1 ]; then + echo_warning "Artifactory upload failed - $1 does not exist" + exit 1 + fi + + md5Value="`md5sum "$1"`" + md5Value="${md5Value:0:32}" + + sha1Value="`sha1sum "$1"`" + sha1Value="${sha1Value:0:40}" + + echo "Uploading $1 to $2" + curl -H "Authorization:Bearer $ARTIFACTORY_TOKEN" -H "X-Checksum-Md5: $md5Value" -H "X-Checksum-Sha1: $sha1Value" -T $1 $2 || exit 1 +} diff --git a/build/bin/artifactory-release.sh b/build/bin/artifactory-release.sh new file mode 100644 index 000000000..7df170fa9 --- /dev/null +++ b/build/bin/artifactory-release.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $DIR/.env.sh +source $DIR/.functions.sh + +# See: https://unix.stackexchange.com/questions/1571/grabbing-the-extension-in-a-file-name +FILE_PATH=$1 +FILE_NAME=$(basename $FILE_PATH) +FILE_EXT= +while [[ $FILE_NAME = ?*.@(bz2|gz|lzma) ]]; do + FILE_EXT=${FILE_NAME##*.}.$FILE_EXT + FILE_NAME=${FILE_NAME%.*} +done +if [[ $FILE_NAME = ?*.* ]]; then + FILE_EXT=${FILE_NAME##*.}.$FILE_EXT + FILE_NAME=${FILE_NAME%.*} +fi +FILE_EXT=${FILE_EXT%.} + +echo_h1 "Artifactory Release: $FILE_PATH" +echo "FILE_PATH .. $FILE_PATH" +echo "FILE_NAME .. $FILE_NAME" +echo "FILE_EXT ... $FILE_EXT" +echo "VERSION .... $VERSION" + +which md5sum || exit $? +which sha1sum || exit $? + +if [ ! -e $FILE_PATH ]; then + echo_warning "Artifactory release failed - $FILE_PATH does not exist" + exit 1 +fi + +TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${VERSION}/${FILE_NAME}-${VERSION}.${FILE_EXT}" +artifactory_upload $FILE_PATH $TARGET_URL + +# Update latest when we publish release, and when we update master branch .. latest build is used internally in development +if [ "${GITHUB_REF_NAME}" == "master" ] || [ "${GITHUB_REF_TYPE}" == "tag" ]; then + LATEST_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/latest/${FILE_NAME}-latest.${FILE_EXT}" + artifactory_upload $FILE_PATH $LATEST_URL +fi + +exit 0 From 69846595cad6f09f802fb45dcf72ef082036db5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Marcelino?= Date: Fri, 5 May 2023 15:51:04 -0300 Subject: [PATCH 2/6] [patch] change artifact name --- .github/workflows/ansible.yml | 2 +- build/bin/artifactory-release.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ansible.yml b/.github/workflows/ansible.yml index f28f3b0bd..cd0c2fbad 100644 --- a/.github/workflows/ansible.yml +++ b/.github/workflows/ansible.yml @@ -32,7 +32,7 @@ jobs: run: | $GITHUB_WORKSPACE/build/bin/build-collection.sh - - name: Upload Ansible Collection + - name: Upload Ansible Collection to Github Actions uses: actions/upload-artifact@v2 with: name: ibm-mas_devops-${{ env.VERSION }}.tar.gz diff --git a/build/bin/artifactory-release.sh b/build/bin/artifactory-release.sh index 7df170fa9..a8562155c 100644 --- a/build/bin/artifactory-release.sh +++ b/build/bin/artifactory-release.sh @@ -32,7 +32,7 @@ if [ ! -e $FILE_PATH ]; then exit 1 fi -TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${VERSION}/${FILE_NAME}-${VERSION}.${FILE_EXT}" +TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${VERSION}/${FILE_NAME}.${FILE_EXT}" artifactory_upload $FILE_PATH $TARGET_URL # Update latest when we publish release, and when we update master branch .. latest build is used internally in development From 8bfb57a1c14db319a8436e0d69b5210e4e1dda15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Marcelino?= Date: Fri, 5 May 2023 15:56:00 -0300 Subject: [PATCH 3/6] [patch] fix path --- build/bin/artifactory-release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/bin/artifactory-release.sh b/build/bin/artifactory-release.sh index a8562155c..79339369f 100644 --- a/build/bin/artifactory-release.sh +++ b/build/bin/artifactory-release.sh @@ -32,7 +32,7 @@ if [ ! -e $FILE_PATH ]; then exit 1 fi -TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${VERSION}/${FILE_NAME}.${FILE_EXT}" +TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${FILE_NAME}.${FILE_EXT}" artifactory_upload $FILE_PATH $TARGET_URL # Update latest when we publish release, and when we update master branch .. latest build is used internally in development From 4cc8a5ab51050e4874abf04091a2be81b96ca6e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Marcelino?= Date: Wed, 10 May 2023 16:17:38 -0300 Subject: [PATCH 4/6] [patch] fix artifactory push to be same as cli --- build/bin/artifactory-release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/bin/artifactory-release.sh b/build/bin/artifactory-release.sh index 79339369f..7df170fa9 100644 --- a/build/bin/artifactory-release.sh +++ b/build/bin/artifactory-release.sh @@ -32,7 +32,7 @@ if [ ! -e $FILE_PATH ]; then exit 1 fi -TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${FILE_NAME}.${FILE_EXT}" +TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${VERSION}/${FILE_NAME}-${VERSION}.${FILE_EXT}" artifactory_upload $FILE_PATH $TARGET_URL # Update latest when we publish release, and when we update master branch .. latest build is used internally in development From 4e80544ddfb19d3d4c13dd65f05ed5c3f207ba20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Marcelino?= Date: Wed, 10 May 2023 17:01:13 -0300 Subject: [PATCH 5/6] [patch] remove VERSION from the file name --- build/bin/artifactory-release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/bin/artifactory-release.sh b/build/bin/artifactory-release.sh index 7df170fa9..a8562155c 100644 --- a/build/bin/artifactory-release.sh +++ b/build/bin/artifactory-release.sh @@ -32,7 +32,7 @@ if [ ! -e $FILE_PATH ]; then exit 1 fi -TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${VERSION}/${FILE_NAME}-${VERSION}.${FILE_EXT}" +TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${VERSION}/${FILE_NAME}.${FILE_EXT}" artifactory_upload $FILE_PATH $TARGET_URL # Update latest when we publish release, and when we update master branch .. latest build is used internally in development From 5b15060f3aa5a523bd4767d423a5e13140873c60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Marcelino?= Date: Wed, 10 May 2023 18:16:08 -0300 Subject: [PATCH 6/6] [patch] copy the file to new name without version --- .github/workflows/ansible.yml | 4 +++- build/bin/artifactory-release.sh | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ansible.yml b/.github/workflows/ansible.yml index cd0c2fbad..0dcea84f6 100644 --- a/.github/workflows/ansible.yml +++ b/.github/workflows/ansible.yml @@ -44,7 +44,9 @@ jobs: ARTIFACTORY_GENERIC_RELEASE_URL: ${{ secrets.ARTIFACTORY_GENERIC_RELEASE_URL }} ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }} run: | - $GITHUB_WORKSPACE/build/bin/artifactory-release.sh $GITHUB_WORKSPACE/ibm/mas_devops/ibm-mas_devops-${{ env.VERSION }}.tar.gz + echo "Copying $GITHUB_WORKSPACE/ibm/mas_devops/ibm-mas_devops-${{ env.VERSION }}.tar.gz to $GITHUB_WORKSPACE/ibm/mas_devops/ibm-mas_devops.tar.gz..." + cp $GITHUB_WORKSPACE/ibm/mas_devops/ibm-mas_devops-${{ env.VERSION }}.tar.gz $GITHUB_WORKSPACE/ibm/mas_devops/ibm-mas_devops.tar.gz + $GITHUB_WORKSPACE/build/bin/artifactory-release.sh $GITHUB_WORKSPACE/ibm/mas_devops/ibm-mas_devops.tar.gz - name: Perform dependency check uses: dependency-check/Dependency-Check_Action@main diff --git a/build/bin/artifactory-release.sh b/build/bin/artifactory-release.sh index a8562155c..7df170fa9 100644 --- a/build/bin/artifactory-release.sh +++ b/build/bin/artifactory-release.sh @@ -32,7 +32,7 @@ if [ ! -e $FILE_PATH ]; then exit 1 fi -TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${VERSION}/${FILE_NAME}.${FILE_EXT}" +TARGET_URL="${ARTIFACTORY_GENERIC_RELEASE_URL}/${GITHUB_REPOSITORY}/${VERSION}/${FILE_NAME}-${VERSION}.${FILE_EXT}" artifactory_upload $FILE_PATH $TARGET_URL # Update latest when we publish release, and when we update master branch .. latest build is used internally in development