diff --git a/.github/workflows/Manual_Deployment_to_NIDAP.yml b/.github/workflows/Manual_Deployment_to_NIDAP.yml new file mode 100644 index 0000000..2426e58 --- /dev/null +++ b/.github/workflows/Manual_Deployment_to_NIDAP.yml @@ -0,0 +1,105 @@ +name: Manual Deployment to NIDAP +run-name: Manual Deployment to NIDAP by ${{ github.actor }} + +on: + workflow_dispatch: + inputs: + + image_to_use: + required: true + default: "" + type: string + + package_to_deploy: + required: true + type: string + + artifact_rid: + required: true + default: "" + type: string + + token_to_use: + required: true + type: string + + +jobs: + Adding_documentation_files_and_publish_page: + runs-on: ubuntu-latest + container: + image: ${{ inputs.image_to_use }} + credentials: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + steps: + - run: echo "Checking in ${{ inputs.image_to_use }}" + - uses: actions/checkout@v3 + with: + token: ${{secrets.GITHUB_TOKEN}} + + - name: Continuous Deployment to NIDAP + id: nidap-cd + run: | + export current_wd="/__w/${GITHUB_REPOSITORY#*/}/${GITHUB_REPOSITORY#*/}" + cd $current_wd + + export MY_GIT_TOKEN=${{ secrets.GITHUB_TOKEN }} + export MY_GIT_USERNAME=${{ github.actor }} + export MY_GIT_EMAIL=${{ github.event.pusher.email }} + + git config --global user.name "$MY_GIT_USERNAME" + git config --global user.email "$MY_GIT_EMAIL" + git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/" + git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/" + git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:" + + git config --global --add safe.directory "$current_wd" + + git clone https://github.com/${GITHUB_REPOSITORY}.git + + cd ${GITHUB_REPOSITORY#*/} + + BRANCH_NAME="Conda_Package" + + git checkout $BRANCH_NAME + + echo "########## Git setup complete, moving to deployment... ##########" + + conda install curl + + current_pkg="${{ inputs.package_to_deploy }}" + + echo "Package to Upload: $current_pkg" + + TOKEN="${{ inputs.token_to_use }}" + PACKAGE="$current_pkg" + PLATFORM="linux-64" # replace with the package platform (e.g. noarch, linux-64, osx-64) + response=$(curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/octet-stream" \ + --data-binary "@$PACKAGE" \ + -XPUT "https://nidap.nih.gov/artifacts/api/repositories/${{ inputs.artifact_rid }}/contents/release/conda/$PLATFORM/$PACKAGE" \ + 2>&1) + + + echo "#########################################################" + + current_datetime="$(date +"%Y-%m-%d %H:%M:%S")" + + # Check if the response contains an error message + if echo "$response" | grep -q "errorCode"; then + status=$(echo "$response" | grep -o '"errorName":"[^"]*' | awk -F'"' '{print $4}') + echo "Error message: $status" + echo "
Deployment Time: $current_datetime; Deployment Status: $status" >> README.md + else + status="Success" + echo "Update Success!" + echo "Package ${{ env.current_pkg }} is now on NIDAP." + echo "
Deployment Time: $current_datetime; Deployment Status: Success" >> README.md + fi + + git commit -a -m "Deployment Performed on $current_datetime with Status: $status." + + git push -f origin $BRANCH_NAME