mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-05 12:32:54 +00:00
## Problem It's OIDC (OpenID Connect), not OICD ## Summary of changes - Rename actions input `aws-oicd-role-arn` -> `aws-oidc-role-arn`
84 lines
2.8 KiB
YAML
84 lines
2.8 KiB
YAML
name: "Upload an artifact"
|
|
description: "Custom upload action"
|
|
inputs:
|
|
name:
|
|
description: "Artifact name"
|
|
required: true
|
|
path:
|
|
description: "A directory or file to upload"
|
|
required: true
|
|
skip-if-does-not-exist:
|
|
description: "Allow to skip if path doesn't exist, fail otherwise"
|
|
default: false
|
|
required: false
|
|
prefix:
|
|
description: "S3 prefix. Default is '${GITHUB_SHA}/${GITHUB_RUN_ID}/${GITHUB_RUN_ATTEMPT}'"
|
|
required: false
|
|
aws-oidc-role-arn:
|
|
description: "the OIDC role arn for aws auth"
|
|
required: false
|
|
default: ""
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Prepare artifact
|
|
id: prepare-artifact
|
|
shell: bash -euxo pipefail {0}
|
|
env:
|
|
SOURCE: ${{ inputs.path }}
|
|
ARCHIVE: /tmp/uploads/${{ inputs.name }}.tar.zst
|
|
SKIP_IF_DOES_NOT_EXIST: ${{ inputs.skip-if-does-not-exist }}
|
|
run: |
|
|
mkdir -p $(dirname $ARCHIVE)
|
|
|
|
if [ -f ${ARCHIVE} ]; then
|
|
echo >&2 "File ${ARCHIVE} already exist. Something went wrong before"
|
|
exit 1
|
|
fi
|
|
|
|
ZSTD_NBTHREADS=0
|
|
if [ -d ${SOURCE} ]; then
|
|
time tar -C ${SOURCE} -cf ${ARCHIVE} --zstd .
|
|
elif [ -f ${SOURCE} ]; then
|
|
time tar -cf ${ARCHIVE} --zstd ${SOURCE}
|
|
elif ! ls ${SOURCE} > /dev/null 2>&1; then
|
|
if [ "${SKIP_IF_DOES_NOT_EXIST}" = "true" ]; then
|
|
echo 'SKIPPED=true' >> $GITHUB_OUTPUT
|
|
exit 0
|
|
else
|
|
echo >&2 "${SOURCE} does not exist"
|
|
exit 2
|
|
fi
|
|
else
|
|
echo >&2 "${SOURCE} is neither a directory nor a file, do not know how to handle it"
|
|
exit 3
|
|
fi
|
|
|
|
echo 'SKIPPED=false' >> $GITHUB_OUTPUT
|
|
|
|
- name: Configure AWS credentials
|
|
uses: aws-actions/configure-aws-credentials@v4
|
|
with:
|
|
aws-region: eu-central-1
|
|
role-to-assume: ${{ inputs.aws-oidc-role-arn }}
|
|
role-duration-seconds: 3600
|
|
|
|
- name: Upload artifact
|
|
if: ${{ steps.prepare-artifact.outputs.SKIPPED == 'false' }}
|
|
shell: bash -euxo pipefail {0}
|
|
env:
|
|
SOURCE: ${{ inputs.path }}
|
|
ARCHIVE: /tmp/uploads/${{ inputs.name }}.tar.zst
|
|
PREFIX: artifacts/${{ inputs.prefix || format('{0}/{1}/{2}', github.event.pull_request.head.sha || github.sha, github.run_id , github.run_attempt) }}
|
|
run: |
|
|
BUCKET=neon-github-public-dev
|
|
FILENAME=$(basename $ARCHIVE)
|
|
|
|
FILESIZE=$(du -sh ${ARCHIVE} | cut -f1)
|
|
|
|
time aws s3 mv --only-show-errors ${ARCHIVE} s3://${BUCKET}/${PREFIX}/${FILENAME}
|
|
|
|
# Ref https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary
|
|
echo "[${FILENAME}](https://${BUCKET}.s3.amazonaws.com/${PREFIX}/${FILENAME}) ${FILESIZE}" >> ${GITHUB_STEP_SUMMARY}
|