From f3cee6bb3091b8eb5c8ba9945f36e65f377a234b Mon Sep 17 00:00:00 2001 From: Dan Manges Date: Tue, 10 Mar 2026 15:28:20 -0400 Subject: [PATCH 1/2] rwx/package package --- rwx/package/README.md | 16 +++++++++ rwx/package/rwx-package.yml | 65 +++++++++++++++++++++++++++++++++++++ rwx/package/rwx-test.yml | 20 ++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 rwx/package/README.md create mode 100644 rwx/package/rwx-package.yml create mode 100644 rwx/package/rwx-test.yml diff --git a/rwx/package/README.md b/rwx/package/README.md new file mode 100644 index 0000000..5f390e3 --- /dev/null +++ b/rwx/package/README.md @@ -0,0 +1,16 @@ +# rwx/package + +Build and upload an RWX package. + +This package zips a directory and uploads it to the RWX package registry, returning the content digest of the uploaded package. + +## Usage + +```yaml +tasks: + - key: package + call: rwx/package 1.0.0 + with: + directory: path/to/package + rwx-access-token: ${{ secrets.RWX_ACCESS_TOKEN }} +``` diff --git a/rwx/package/rwx-package.yml b/rwx/package/rwx-package.yml new file mode 100644 index 0000000..2dda14d --- /dev/null +++ b/rwx/package/rwx-package.yml @@ -0,0 +1,65 @@ +name: rwx/package +version: 1.0.0 +description: Build and upload an RWX package +source_code_url: https://github.com/rwx-cloud/packages/tree/main/rwx/package +issue_tracker_url: https://github.com/rwx-cloud/packages/issues + +parameters: + directory: + description: Path to the directory containing the package files + required: true + rwx-access-token: + description: RWX API access token for uploading the package + required: true + timestamp: + description: "Timestamp to normalize file modification times before zipping (format: YYYYMMDDHHmm). Ensures deterministic zip output for content-based caching." + +tasks: + - key: system-packages + run: | + if command -v zip &> /dev/null; then + echo "zip is already installed" + exit 0 + fi + sudo apt-get update + sudo apt-get install zip + sudo apt-get clean + + - key: zip + use: system-packages + run: | + if [[ -n "$TIMESTAMP" ]]; then + echo "Setting timestamp on files to $TIMESTAMP" + find "$DIRECTORY" -exec touch -t "$TIMESTAMP" {} \; + fi + workspace=$(pwd) + cd "$DIRECTORY" && zip -X -r "$workspace/package.zip" . + filter: + - ${{ params.directory }} + env: + DIRECTORY: ${{ params.directory }} + TIMESTAMP: ${{ params.timestamp }} + + - key: upload + use: zip + run: | + curl \ + --request POST \ + --fail-with-body \ + --header "Authorization: Bearer $RWX_ACCESS_TOKEN" \ + --header 'Accept: application/json' \ + -F 'file=@package.zip' \ + https://cloud.rwx.com/mint/api/leaves | tee result.json + + digest=$(jq -r '.digest' result.json) + echo "Uploaded package with digest: $digest" + echo -n "$digest" > "$RWX_VALUES/digest" + filter: + - package.zip + env: + RWX_ACCESS_TOKEN: + cache-key: excluded + value: ${{ params.rwx-access-token }} + +outputs: + values-from: [upload] diff --git a/rwx/package/rwx-test.yml b/rwx/package/rwx-test.yml new file mode 100644 index 0000000..e17ec22 --- /dev/null +++ b/rwx/package/rwx-test.yml @@ -0,0 +1,20 @@ +base: + image: ${{ init.base-image }} + config: ${{ init.base-config }} + +tasks: + - key: code + call: git/clone 2.0.3 + with: + repository: https://github.com/rwx-cloud/packages.git + ref: dan/package + + - key: test + use: code + call: ${{ init.package-digest }} + with: + directory: rwx/package + rwx-access-token: ${{ vaults.mint_leaves_development.secrets.RWX_ACCESS_TOKEN }} + timestamp: ${{ date("%Y%m%d%H%M") }} + filter: + - rwx/package From b09b5bf89062ffb8fbb79f7587505a5a6865f58e Mon Sep 17 00:00:00 2001 From: Dan Manges Date: Tue, 10 Mar 2026 15:29:27 -0400 Subject: [PATCH 2/2] remove rwx-access-token --- .rwx/package.yml | 3 +-- rwx/package/README.md | 1 - rwx/package/rwx-package.yml | 9 +-------- rwx/package/rwx-test.yml | 1 - 4 files changed, 2 insertions(+), 12 deletions(-) diff --git a/.rwx/package.yml b/.rwx/package.yml index 83fd7b5..0c0ffb6 100644 --- a/.rwx/package.yml +++ b/.rwx/package.yml @@ -49,10 +49,9 @@ tasks: - key: package use: [build] - call: 4ad359d09e34defc6da32ad46013c07cba6ae9a8b18b58351d095ce90beadcd9 + call: 9594e0f1eba63f75513d432a07a440828dd41f6b01b48206e57c9cfc6313bd72 with: directory: ${{ init.directory }} - rwx-access-token: ${{ vaults.mint_leaves_development.secrets.RWX_ACCESS_TOKEN }} timestamp: ${{ tasks.timestamp.values.timestamp }} - key: generate-test diff --git a/rwx/package/README.md b/rwx/package/README.md index 5f390e3..f19cf6e 100644 --- a/rwx/package/README.md +++ b/rwx/package/README.md @@ -12,5 +12,4 @@ tasks: call: rwx/package 1.0.0 with: directory: path/to/package - rwx-access-token: ${{ secrets.RWX_ACCESS_TOKEN }} ``` diff --git a/rwx/package/rwx-package.yml b/rwx/package/rwx-package.yml index 2dda14d..727b4f9 100644 --- a/rwx/package/rwx-package.yml +++ b/rwx/package/rwx-package.yml @@ -7,10 +7,7 @@ issue_tracker_url: https://github.com/rwx-cloud/packages/issues parameters: directory: description: Path to the directory containing the package files - required: true - rwx-access-token: - description: RWX API access token for uploading the package - required: true + default: . timestamp: description: "Timestamp to normalize file modification times before zipping (format: YYYYMMDDHHmm). Ensures deterministic zip output for content-based caching." @@ -56,10 +53,6 @@ tasks: echo -n "$digest" > "$RWX_VALUES/digest" filter: - package.zip - env: - RWX_ACCESS_TOKEN: - cache-key: excluded - value: ${{ params.rwx-access-token }} outputs: values-from: [upload] diff --git a/rwx/package/rwx-test.yml b/rwx/package/rwx-test.yml index e17ec22..a25a3b7 100644 --- a/rwx/package/rwx-test.yml +++ b/rwx/package/rwx-test.yml @@ -14,7 +14,6 @@ tasks: call: ${{ init.package-digest }} with: directory: rwx/package - rwx-access-token: ${{ vaults.mint_leaves_development.secrets.RWX_ACCESS_TOKEN }} timestamp: ${{ date("%Y%m%d%H%M") }} filter: - rwx/package