From 5bcc8dc83b011da56e8bd22e68d6ecce188f83fc Mon Sep 17 00:00:00 2001 From: Andreas Braun Date: Mon, 10 Jun 2024 11:06:11 +0200 Subject: [PATCH 1/2] Add action to upload S3 assets --- README.md | 21 +++++++++++++++++++++ upload-s3-assets/action.yml | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 upload-s3-assets/action.yml diff --git a/README.md b/README.md index ef31b89..a722044 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,27 @@ working directory. uses: mongodb-labs/drivers-github-tools/code-scanning-export@v2 ``` +## Upload S3 assets + +A number of scripts create files in the `tmp/s3_assets` folder, which then can +be uploaded to the product's S3 bucket: + +```yaml +- name: Setup + uses: mongodb-labs/drivers-github-tools/setup@v2 + with: + ... + +- name: Upload S3 assets + uses: mongodb-labs/drivers-github-tools/upload-s3-assets@v2 + with: + version: + product_name: +``` + +Optionally, you can specify which files to upload using the `filenames` input. +By default, all files in the S3 directory are uploaded. + ## Python Helper Scripts These scripts are opinionated helper scripts for Python releases. diff --git a/upload-s3-assets/action.yml b/upload-s3-assets/action.yml new file mode 100644 index 0000000..b0e847f --- /dev/null +++ b/upload-s3-assets/action.yml @@ -0,0 +1,21 @@ +name: Upload S3 assets +description: Uploads assets from the S3 asset directory +inputs: + version: + description: "The published version" + required: true + product_name: + description: "The name of the product" + required: true + filenames: + description: Files to upload - supports wildcards and glob patterns + default: '*' + required: false + +runs: + using: composite + steps: + - shell: bash + working-directory: ${{ env.S3_ASSETS }} + run: | + for filename in ${{ inputs.filenames }}; do aws s3 cp ${filename} s3://${AWS_BUCKET}/${{ inputs.product_name }}/${{ inputs.version }}/${filename}; done From a6e2937727c82ce116ee39304c520f88c182d259 Mon Sep 17 00:00:00 2001 From: Andreas Braun Date: Mon, 10 Jun 2024 15:18:17 +0200 Subject: [PATCH 2/2] Support dry_run input for asset upload to S3 --- README.md | 4 +++- upload-s3-assets/action.yml | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a722044..c9f6937 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,9 @@ be uploaded to the product's S3 bucket: ``` Optionally, you can specify which files to upload using the `filenames` input. -By default, all files in the S3 directory are uploaded. +By default, all files in the S3 directory are uploaded. When the `dry_run` input +is set to anything other than `false`, no files are uploaded, but instead the +filename along with the resulting location in the bucket is printed. ## Python Helper Scripts diff --git a/upload-s3-assets/action.yml b/upload-s3-assets/action.yml index b0e847f..ee6f5c4 100644 --- a/upload-s3-assets/action.yml +++ b/upload-s3-assets/action.yml @@ -8,9 +8,13 @@ inputs: description: "The name of the product" required: true filenames: - description: Files to upload - supports wildcards and glob patterns + description: "Files to upload - supports wildcards and glob patterns" default: '*' required: false + dry_run: + description: "Only print files that would be uploaded, but don't upload any files" + required: false + default: 'false' runs: using: composite @@ -18,4 +22,8 @@ runs: - shell: bash working-directory: ${{ env.S3_ASSETS }} run: | - for filename in ${{ inputs.filenames }}; do aws s3 cp ${filename} s3://${AWS_BUCKET}/${{ inputs.product_name }}/${{ inputs.version }}/${filename}; done + if [ "${{ inputs.dry_run }}" == "false" ]; then + for filename in ${{ inputs.filenames }}; do aws s3 cp ${filename} s3://${AWS_BUCKET}/${{ inputs.product_name }}/${{ inputs.version }}/${filename}; done + else + for filename in ${{ inputs.filenames }}; do echo "Would upload ${filename} to ${{ inputs.product_name }}/${{ inputs.version }}/${filename}"; done + fi