Created
May 28, 2021 22:18
-
-
Save zen0wu/a0a7cd95fe3f2f550467c4428ef0f87c to your computer and use it in GitHub Desktop.
Revisions
-
zen0wu created this gist
May 28, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,68 @@ name: Cache (v2) description: > Cache files onto S3 bucket. It has 3 steps: 1. It tries to restore the cache using the given key. If the caches hits, exit. 2. It runs the given script using shell, if the cache missed in step 1. 3. It saves to the cache after the script. inputs: s3-bucket: description: The bucket name. required: true key: description: An explicit key for the cached files. required: true paths: description: > List of files/directories to cache. Separated by new line. Use relative path to the project root. required: true run: description: Script to run to generate the cached files. required: true outputs: hit: description: A boolean value to indicate whether there is a cache hit. value: ${{ steps.restore-cache.outputs.hit }} runs: using: composite steps: - name: Restore cache id: restore-cache run: | set +x echo "Checking cache: $BUCKET_KEY" CACHE_HIT=$(aws --debug s3api head-object --bucket "$BUCKET" --key "$BUCKET_KEY" &> /dev/null; echo $?) if [ "$CACHE_HIT" -ne 0 ]; then echo "::set-output name=hit::false" else echo "Restoring cache: $BUCKET_KEY" aws s3 cp "s3://$BUCKET/$BUCKET_KEY" - | tar -I zstd -x echo "::set-output name=hit::true" fi shell: bash env: BUCKET: "${{ inputs.s3-bucket }}" BUCKET_KEY: "cache/${{ inputs.key }}.tar.z" - name: Run run: | set +x if [ "${{ steps.restore-cache.outputs.hit }}" = "true" ]; then exit 0 fi ${{ inputs.run }} shell: bash - name: Save cache run: | set +x if [ "${{ steps.restore-cache.outputs.hit }}" = "true" ]; then exit 0 fi echo "Saving cache: ${{ inputs.paths }} -> $BUCKET_KEY" echo "${{ inputs.paths }}" | xargs tar -I zstd -c | aws s3 cp - "s3://$BUCKET/$BUCKET_KEY" shell: bash env: BUCKET: "${{ inputs.s3-bucket }}" BUCKET_KEY: "cache/${{ inputs.key }}.tar.z"