Compare commits
No commits in common. "v4" and "v4.0.0" have entirely different histories.
4 changed files with 20 additions and 264 deletions
|
@ -1,68 +0,0 @@
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'v4'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
GenerateReleaseZipfile:
|
|
||||||
runs-on: docker
|
|
||||||
container:
|
|
||||||
image: entrepot.xlii.si/actions/alpine-wget-git-zip:latest
|
|
||||||
steps:
|
|
||||||
- name: Generate some content
|
|
||||||
run: |
|
|
||||||
set -ex
|
|
||||||
mkdir toto
|
|
||||||
echo tata > toto/tata.txt
|
|
||||||
echo titi > toto/titi.txt
|
|
||||||
echo titi titi > "toto/titi titi.txt"
|
|
||||||
echo tutu > tutu.txt
|
|
||||||
echo tutu >> tutu.txt
|
|
||||||
echo tutuuuuu >> tutu2.txt
|
|
||||||
echo tutuuuuu >> "tutu tutu.txt"
|
|
||||||
echo ratata >> 'tutu tutu*.txt'
|
|
||||||
ls -R
|
|
||||||
|
|
||||||
- name: Testing the artifact uploading
|
|
||||||
id: "uploading"
|
|
||||||
uses: "${{ github.server_url }}/${{ github.repository }}@${{ github.sha }}"
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
toto
|
|
||||||
tutu*
|
|
||||||
|
|
||||||
- name: Is there any output for the previous step ?
|
|
||||||
run: |
|
|
||||||
set -x
|
|
||||||
printf "steps.uploading.outputs.artifact-id: %s\n" "${{ steps.uploading.outputs.artifact-id }}"
|
|
||||||
printf "steps.uploading.outputs.artifact-url: %s\n" "${{ steps.uploading.outputs.artifact-url }}"
|
|
||||||
|
|
||||||
- name: Check the content of the uploaded artifact
|
|
||||||
run: |
|
|
||||||
# Stop at first error and be verbose
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
# Create some temporary files/directory
|
|
||||||
DOWNLOAD_FILE="$( mktemp )"
|
|
||||||
SHASUM_FILE="$( mktemp )"
|
|
||||||
TEST_ARTIFACT_DIR="$( mktemp -d )"
|
|
||||||
|
|
||||||
# Get the fingerprint of our test
|
|
||||||
find . -type f -exec sha256sum \{\} \; > "$SHASUM_FILE"
|
|
||||||
# Little optional checkup
|
|
||||||
cat "$SHASUM_FILE"
|
|
||||||
|
|
||||||
cd "$TEST_ARTIFACT_DIR"
|
|
||||||
# In case the repository becomes private, we add our GITHUB_TOKEN to the artifact-url.
|
|
||||||
MY_AUTHENTICATED_URL="$( echo "${{ steps.uploading.outputs.artifact-url }}" | sed "s#^\(https\?://\)#\1$GITHUB_TOKEN\@#" )"
|
|
||||||
wget -O "$DOWNLOAD_FILE" "$MY_AUTHENTICATED_URL"
|
|
||||||
|
|
||||||
# unzip and check
|
|
||||||
unzip "$DOWNLOAD_FILE"
|
|
||||||
sha256sum -c "$SHASUM_FILE"
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
cd -
|
|
||||||
rm -f "$DOWNLOAD_FILE"
|
|
||||||
rm -f "$SHASUM_FILE"
|
|
||||||
rm -rf "$TEST_ARTIFACT_DIR"
|
|
100
.github/workflows/generate-release-zipfile.yml
vendored
100
.github/workflows/generate-release-zipfile.yml
vendored
|
@ -1,100 +0,0 @@
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'v4-github'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
GenerateReleaseZipfile:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
# Trying to help access to the artifact with the GITHUB_TOKEN at the last step but didn't help.
|
|
||||||
#permissions: read-all
|
|
||||||
steps:
|
|
||||||
- name: Generate some content
|
|
||||||
run: |
|
|
||||||
set -ex
|
|
||||||
mkdir toto
|
|
||||||
echo tata > toto/tata.txt
|
|
||||||
echo titi > toto/titi.txt
|
|
||||||
echo titi titi > "toto/titi titi.txt"
|
|
||||||
echo tutu > tutu.txt
|
|
||||||
echo tutu >> tutu.txt
|
|
||||||
echo tutuuuuu >> tutu2.txt
|
|
||||||
echo tutuuuuu >> "tutu tutu.txt"
|
|
||||||
# Github doesn't like special characters.
|
|
||||||
#echo ratata >> 'tutu tutu*.txt'
|
|
||||||
ls -R
|
|
||||||
|
|
||||||
- name: "Github requires checkout for 'uses: ./' (or we could hard write the repository's URL ?)"
|
|
||||||
run: |
|
|
||||||
mkdir myaction && cd myaction
|
|
||||||
git init
|
|
||||||
test -z "$GITHUB_TOKEN" && GITHUB_TOKEN="${{ github.token }}"
|
|
||||||
MY_AUTHENTICATED_URL="$( echo "$GITHUB_SERVER_URL" | sed "s#^\(https\?://\)#\1$GITHUB_TOKEN\@#" )"
|
|
||||||
git remote add origin "$MY_AUTHENTICATED_URL"/"$GITHUB_REPOSITORY"
|
|
||||||
# Little and optional speed optimization
|
|
||||||
git config --local gc.auto 0
|
|
||||||
git fetch --no-tags --prune --no-recurse-submodules --depth=1 origin "$GITHUB_SHA"
|
|
||||||
git reset --hard "$GITHUB_SHA"
|
|
||||||
|
|
||||||
- name: Testing the artifact uploading
|
|
||||||
id: "uploading"
|
|
||||||
uses: ./myaction
|
|
||||||
# For comparison
|
|
||||||
#uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
toto
|
|
||||||
tutu*
|
|
||||||
|
|
||||||
- name: "Cleanup Github"
|
|
||||||
run: rm -rvf myaction
|
|
||||||
|
|
||||||
- name: Is there any output for the uploading step ?
|
|
||||||
run: |
|
|
||||||
set -x
|
|
||||||
printf "steps.uploading.outputs.artifact-id: %s\n" "${{ steps.uploading.outputs.artifact-id }}"
|
|
||||||
printf "steps.uploading.outputs.artifact-url: %s\n" "${{ steps.uploading.outputs.artifact-url }}"
|
|
||||||
|
|
||||||
- name: Check the content of the uploaded artifact
|
|
||||||
run: |
|
|
||||||
# Stop at first error and be verbose
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
# Create some temporary files/directory
|
|
||||||
DOWNLOAD_FILE="$( mktemp )"
|
|
||||||
SHASUM_FILE="$( mktemp )"
|
|
||||||
TEST_ARTIFACT_DIR="$( mktemp -d )"
|
|
||||||
|
|
||||||
# Get the fingerprint of our test
|
|
||||||
find . -type f -exec sha256sum \{\} \; > "$SHASUM_FILE"
|
|
||||||
# Little optional checkup
|
|
||||||
cat "$SHASUM_FILE"
|
|
||||||
|
|
||||||
cd "$TEST_ARTIFACT_DIR"
|
|
||||||
# In case the repository becomes private, we add our GITHUB_TOKEN to the artifact-url.
|
|
||||||
test -z "$GITHUB_TOKEN" && GITHUB_TOKEN="${{ github.token }}"
|
|
||||||
# TODO : can't get it to work :-/
|
|
||||||
#wget --header "Authorization: Bearer $GITHUB_TOKEN" -O "$DOWNLOAD_FILE" "${{ steps.uploading.outputs.artifact-url }}"
|
|
||||||
|
|
||||||
# Oh boy... We're gone beyond salvation but let's try to explain:
|
|
||||||
# - the api.github.com accepts the GITHUB_TOKEN in the Authorization
|
|
||||||
# header (but not the ACTIONS_RUNTIME_TOKEN, nor the GITHUB_TOKEN as
|
|
||||||
# part of the URL like https://$GITHUB_TOKEN@api.github.com/...)
|
|
||||||
# - ...but we get redirect to Windows.net/Azure data warehouse which refuses GITHUB_TOKEN...
|
|
||||||
# -> so, if the api.github.com fails, we try to extract the redirect location and hit it without any header.
|
|
||||||
# ('beginning to wonder if Github's changing master to main was also a part of a plot to complexify our lives...)
|
|
||||||
WGET_OUTPUT="$( wget -O "$DOWNLOAD_FILE" \
|
|
||||||
--header "Authorization: Bearer $GITHUB_TOKEN" \
|
|
||||||
"https://api.github.com/repos/$GITHUB_REPOSITORY/actions/artifacts/${{ steps.uploading.outputs.artifact-id }}/zip" 2>&1 )" \
|
|
||||||
|| wget -O "$DOWNLOAD_FILE" \
|
|
||||||
"$( echo "$WGET_OUTPUT" | sed -n 's/^Location: \(.*\) \[following\]/\1/p' | tail -n 1 )"
|
|
||||||
|
|
||||||
# unzip and check
|
|
||||||
unzip "$DOWNLOAD_FILE"
|
|
||||||
sha256sum -c "$SHASUM_FILE"
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
cd -
|
|
||||||
rm -f "$DOWNLOAD_FILE"
|
|
||||||
rm -f "$SHASUM_FILE"
|
|
||||||
rm -rf "$TEST_ARTIFACT_DIR"
|
|
41
README.md
41
README.md
|
@ -9,23 +9,13 @@ the artifact uploading required a full blown NodeJS container.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
This action won't copy all the features of the original NodeJS version but
|
This actions won't copy all the features of the original NodeJS version but
|
||||||
please report differences on the main ones.
|
please report differences on the main ones.
|
||||||
|
|
||||||
### Requirements
|
|
||||||
|
|
||||||
This action needs the following executables:
|
|
||||||
|
|
||||||
* `zip` (unless you zip the artifact yourself)
|
|
||||||
* `wget` (the full version : unfortunately, as of 2024-08-26, the busybox variant isn't capable of using the PUT method)
|
|
||||||
|
|
||||||
|
|
||||||
### Inputs
|
### Inputs
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# If you can, give the full URL :
|
- uses: actions/upload-artifact@v4
|
||||||
# - uses: https://entrepot.xlii.si/actions/upload-artifact-with-wget@v4
|
|
||||||
- uses: actions/upload-artifact-with-wget@v4
|
|
||||||
with:
|
with:
|
||||||
# Name of the artifact to upload.
|
# Name of the artifact to upload.
|
||||||
# Optional. Default is 'artifact'
|
# Optional. Default is 'artifact'
|
||||||
|
@ -34,14 +24,6 @@ This action needs the following executables:
|
||||||
# A file, directory or wildcard pattern that describes what to upload
|
# A file, directory or wildcard pattern that describes what to upload
|
||||||
# Required.
|
# Required.
|
||||||
path:
|
path:
|
||||||
|
|
||||||
# If the artifact is already a zipfile, set to false.
|
|
||||||
# Optional. Default is true.
|
|
||||||
compression:
|
|
||||||
|
|
||||||
# Set the compression level of the zipfile.
|
|
||||||
# Optional. Default is '6'.
|
|
||||||
compression-level:
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Outputs
|
### Outputs
|
||||||
|
@ -49,7 +31,6 @@ This action needs the following executables:
|
||||||
| Name | Description | Example |
|
| Name | Description | Example |
|
||||||
| - | - | - |
|
| - | - | - |
|
||||||
| `artifact-id` | GitHub ID of an Artifact, can be used by the REST API | `1234` |
|
| `artifact-id` | GitHub ID of an Artifact, can be used by the REST API | `1234` |
|
||||||
| `artifact-url` | URL to download an Artifact. | `https://github.com/example-org/example-repo/actions/runs/1/artifacts/1234` or `https://codeberg.org/forgejo/forgejo/actions/runs/1/artifacts/my-artifact` |
|
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
|
@ -64,21 +45,3 @@ steps:
|
||||||
name: my-artifact
|
name: my-artifact
|
||||||
path: path/to/artifact/world.txt
|
path: path/to/artifact/world.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
## Miscellaneous
|
|
||||||
|
|
||||||
If you seek a similar alternative for checkout, look at https://github.com/marketplace/actions/checkout-action or use the code below :
|
|
||||||
```yaml
|
|
||||||
steps:
|
|
||||||
- name: Simple checkout
|
|
||||||
run: |
|
|
||||||
git init
|
|
||||||
# On Github, the token isn't readily available.
|
|
||||||
test -z "$GITHUB_TOKEN" && GITHUB_TOKEN="${{ github.token }}"
|
|
||||||
MY_AUTHENTICATED_URL="$( echo "$GITHUB_SERVER_URL" | sed "s#^\(https\?://\)#\1$GITHUB_TOKEN\@#" )"
|
|
||||||
git remote add origin "$MY_AUTHENTICATED_URL"/"$GITHUB_REPOSITORY"
|
|
||||||
# Little and optional speed optimization
|
|
||||||
git config --local gc.auto 0
|
|
||||||
git fetch --no-tags --prune --no-recurse-submodules --depth=1 origin "$GITHUB_SHA"
|
|
||||||
git reset --hard "$GITHUB_SHA"
|
|
||||||
```
|
|
||||||
|
|
75
action.yml
75
action.yml
|
@ -1,16 +1,13 @@
|
||||||
# SPDX-License-Identifier: 0BSD
|
# SPDX-License-Identifier: 0BSD
|
||||||
name: "Upload an artifact with wget"
|
name: "Upload artifact with wget"
|
||||||
author: "Chl"
|
author: "Chl <chl@xlii.si>"
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
Upload an artifact.
|
Upload an artifact for a workflow.
|
||||||
|
|
||||||
This is a lighter version of upload-artifact, it only needs a shell, zip
|
This is a far lighter version of upload-artifact, it only need a shell, zip
|
||||||
and the full version of wget.
|
and the full version of wget (unfortunately, as of 2024-08-26, the busybox
|
||||||
|
variant isn't capable of using the PUT method).
|
||||||
branding:
|
|
||||||
icon: archive
|
|
||||||
color: gray-dark
|
|
||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
name:
|
name:
|
||||||
|
@ -20,7 +17,7 @@ inputs:
|
||||||
description: 'A file, directory or wildcard pattern that describes what to upload'
|
description: 'A file, directory or wildcard pattern that describes what to upload'
|
||||||
required: true
|
required: true
|
||||||
compression:
|
compression:
|
||||||
description: 'Set to false to upload the (already zipped by yourself) file directly. (default: true)'
|
description: 'Set to false to upload the (already zipped) file directly. (default: true)'
|
||||||
default: true
|
default: true
|
||||||
compression-level:
|
compression-level:
|
||||||
description: 'The level of compression for Zlib to be applied to the artifact archive (between 0 and 9).'
|
description: 'The level of compression for Zlib to be applied to the artifact archive (between 0 and 9).'
|
||||||
|
@ -28,38 +25,21 @@ inputs:
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
artifact-id:
|
artifact-id:
|
||||||
description: A unique identifier for the artifact that was just uploaded.
|
description: A unique identifier for the artifact that was just uploaded. Empty if the artifact upload failed.
|
||||||
value: ${{ steps.uploading.outputs.artifact-id }}
|
|
||||||
artifact-url:
|
|
||||||
description: The URL for the uploaded artifact. Access may require authorization.
|
|
||||||
value: ${{ steps.uploading.outputs.artifact-url }}
|
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: 'composite'
|
using: 'composite'
|
||||||
steps:
|
steps:
|
||||||
# ACTIONS_RUNTIME_TOKEN is not yet available (2024-08) for composite actions on Github :
|
|
||||||
# https://github.com/actions/runner/issues/3046
|
|
||||||
# Forgejo tries to download this remote action even if it's not needed :
|
|
||||||
# uncomment if you want to run this action in Github.
|
|
||||||
#- name: Expose GitHub Runtime
|
|
||||||
# if: env.ACTIONS_RUNTIME_TOKEN == ''
|
|
||||||
# uses: "https://github.com/crazy-max/ghaction-github-runtime@v3"
|
|
||||||
|
|
||||||
- name: Upload artifact (using v4)
|
- name: Upload artifact (using v4)
|
||||||
shell: sh
|
shell: sh
|
||||||
# id for reference in the outputs extraction
|
|
||||||
id: uploading
|
|
||||||
run: |
|
run: |
|
||||||
# Some optional help for debugging.
|
# Some optional help for debugging.
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
# Compatibility layer for Github
|
|
||||||
test -z "$GITHUB_TOKEN" && GITHUB_TOKEN="${{ github.token }}"
|
|
||||||
|
|
||||||
# Compress the input paths into a zip archive
|
# Compress the input paths into a zip archive
|
||||||
# (note: busybox' mktemp doesn't have the --suffix option)
|
# (note: busybox' mktemp doesn't have the --suffix option)
|
||||||
MYUPLOAD="$( mktemp -u ).zip"
|
MYUPLOAD="$( mktemp -u ).zip"
|
||||||
if [ "${{ inputs.compression }}" = "true" ]; then
|
if [ "${{ inputs.compression }}" == "true" ]; then
|
||||||
# inputs.path can be a list of files (with wildcards and spaces) and
|
# inputs.path can be a list of files (with wildcards and spaces) and
|
||||||
# the shell's command substitution + field splitting + pathname
|
# the shell's command substitution + field splitting + pathname
|
||||||
# expansion gives a behaviour pretty close to the original Github's
|
# expansion gives a behaviour pretty close to the original Github's
|
||||||
|
@ -84,55 +64,36 @@ runs:
|
||||||
$( echo "$ACTIONS_RUNTIME_TOKEN" | sed 's/.*\.\(.*\)\..*/\1/' | base64 -d 2>/dev/null | sed 's/.*Actions.Results:\([^:]\+\):\([^:" ]\+\).*/\1 \2/' )
|
$( echo "$ACTIONS_RUNTIME_TOKEN" | sed 's/.*\.\(.*\)\..*/\1/' | base64 -d 2>/dev/null | sed 's/.*Actions.Results:\([^:]\+\):\([^:" ]\+\).*/\1 \2/' )
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Github compatibility layer: ACTIONS_RESULTS_URL already ends with a '/'
|
|
||||||
ACTIONS_RESULTS_URL="$( echo "$ACTIONS_RESULTS_URL" | sed 's/\/$//' )"
|
|
||||||
|
|
||||||
# Request an upload URL
|
# Request an upload URL
|
||||||
RESPONSE="$( wget -O - \
|
RESPONSE="$( wget -O - \
|
||||||
--header 'Content-Type:application/json' \
|
--header 'Content-Type:application/json' \
|
||||||
--header "Authorization: Bearer $ACTIONS_RUNTIME_TOKEN" \
|
--header "Authorization: Bearer $GITHUB_TOKEN" \
|
||||||
--post-data "$( printf '{"version":4, "name":"%s", "workflow_run_backend_id":"%s", "workflow_job_run_backend_id":"%s"}' "${{ inputs.name }}" "$WORKFLOW_RUN_BACKEND_ID" "$WORKFLOW_JOB_RUN_BACKEND_ID" )" \
|
--post-data "$( printf '{"version":4, "name":"%s", "workflow_run_backend_id":"%s", "workflow_job_run_backend_id":"%s"}' "${{ inputs.name }}" "$WORKFLOW_RUN_BACKEND_ID" "$WORKFLOW_JOB_RUN_BACKEND_ID" )" \
|
||||||
"$ACTIONS_RESULTS_URL"/twirp/github.actions.results.api.v1.ArtifactService/CreateArtifact
|
"$GITHUB_SERVER_URL"/twirp/github.actions.results.api.v1.ArtifactService/CreateArtifact
|
||||||
)"
|
)"
|
||||||
# We get a JSON with an signedUploadUrl similar to :
|
# We get a JSON with an signedUploadUrl similar to :
|
||||||
# https://entrepot.xlii.si/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=yWWEI8tIIECp8D7E5TVh4_6G2pZxWaVdQcSYaCsx5s0=&expires=2024-08-26+07%3A20%3A49.886890537+%2B0200+CEST&artifactName=mymodule-1.2.3.zip&taskID=63
|
# https://entrepot.xlii.si/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=yWWEI8tIIECp8D7E5TVh4_6G2pZxWaVdQcSYaCsx5s0=&expires=2024-08-26+07%3A20%3A49.886890537+%2B0200+CEST&artifactName=mymodule-1.2.3.zip&taskID=63
|
||||||
SIGNED_UPLOAD_URL="$( echo "$RESPONSE" | sed -n 's/.*"signed_\?[uU]pload_\?[uU]rl" *: *"\([^"]\+\)".*/\1/p' )"
|
SIGNED_UPLOAD_URL="$( echo "$RESPONSE" | sed -n 's/.*"signedUploadUrl" *: *"\([^"]\+\)".*/\1/p' )"
|
||||||
|
|
||||||
# Upload our file
|
# Upload our file
|
||||||
# (note: adding '&comp=block' at the end of the URL for Forgejo)
|
# (note: adding '&comp=block' at the end of the URL)
|
||||||
# (note 2: if it fails here, it probably means you are using the busybox
|
# (note 2: if it fails here, it probably means you are using the busybox
|
||||||
# variant of wget which can't (as of 2024-08-26) use the PUT method.
|
# variant of wget which can't (as of 2024-08-26) use the PUT method.
|
||||||
# Install the full one beforehand : apt install wget / pkg add wget / ...)
|
# Install the full one beforehand : apt install wget / pkg add wget / ...)
|
||||||
if [ "$GITHUB_SERVER_URL" != "https://github.com" ]; then
|
wget --method PUT --body-file "$MYUPLOAD" "$SIGNED_UPLOAD_URL&comp=block"
|
||||||
SIGNED_UPLOAD_URL="$SIGNED_UPLOAD_URL&comp=block"
|
|
||||||
fi
|
|
||||||
wget -O /dev/null \
|
|
||||||
--method PUT \
|
|
||||||
--body-file "$MYUPLOAD" \
|
|
||||||
--header "x-ms-blob-content-type: zip" \
|
|
||||||
--header "x-ms-blob-type: BlockBlob" \
|
|
||||||
"$SIGNED_UPLOAD_URL"
|
|
||||||
|
|
||||||
# Finalize the artifact
|
# Finalize the artifact
|
||||||
RESPONSE="$( wget -O - \
|
RESPONSE="$( wget -O - \
|
||||||
--header 'Content-Type:application/json' \
|
--header 'Content-Type:application/json' \
|
||||||
--header "Authorization: Bearer $ACTIONS_RUNTIME_TOKEN" \
|
--header "Authorization: Bearer $GITHUB_TOKEN" \
|
||||||
--post-data "$( printf '{"hash":"sha256:%s", "name":"%s", "size":"%d", "workflow_run_backend_id":"%s", "workflow_job_run_backend_id":"%s"}' "$( sha256sum $MYUPLOAD | sed 's/[[:space:]]\+.*//' )" "${{ inputs.name }}" "$( stat -c %s $MYUPLOAD )" "$WORKFLOW_RUN_BACKEND_ID" "$WORKFLOW_JOB_RUN_BACKEND_ID" )" \
|
--post-data "$( printf '{"hash":"sha256:%s", "name":"%s", "size":"%d", "workflow_run_backend_id":"%s", "workflow_job_run_backend_id":"%s"}' "$( sha256sum $MYUPLOAD | sed 's/[[:space:]]\+.*//' )" "${{ inputs.name }}" "$( stat -c %s $MYUPLOAD )" "$WORKFLOW_RUN_BACKEND_ID" "$WORKFLOW_JOB_RUN_BACKEND_ID" )" \
|
||||||
"$ACTIONS_RESULTS_URL"/twirp/github.actions.results.api.v1.ArtifactService/FinalizeArtifact
|
"$GITHUB_SERVER_URL"/twirp/github.actions.results.api.v1.ArtifactService/FinalizeArtifact
|
||||||
)"
|
)"
|
||||||
|
|
||||||
# Store the outputs
|
# Store the outputs
|
||||||
ARTIFACT_ID="$( echo "$RESPONSE" | sed -n 's/.*"artifact_\?Id" *: *"\([^"]\+\)".*/\1/ip' )"
|
echo artifact-id="$( echo "$RESPONSE" | sed -n 's/.*"artifactId" *: *"\([^"]\+\)".*/\1/p' )" >> $GITHUB_OUTPUT
|
||||||
echo artifact-id="$ARTIFACT_ID" >> $GITHUB_OUTPUT
|
|
||||||
if [ "$GITHUB_SERVER_URL" = "https://github.com" ]; then
|
|
||||||
# note: as an alternative, there is https://api.github.com/repos/OWNER/REPO/actions/artifacts/ARTIFACT_ID
|
|
||||||
echo artifact-url="$GITHUB_SERVER_URL"/"$GITHUB_REPOSITORY"/actions/runs/"$GITHUB_RUN_ID"/artifacts/"$ARTIFACT_ID" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
# Gitea & Forgejo : github.run_number instead of github.run_id and name of the artifact instead of artifact_id
|
|
||||||
echo artifact-url="$GITHUB_SERVER_URL"/"$GITHUB_REPOSITORY"/actions/runs/"$GITHUB_RUN_NUMBER"/artifacts/"$INPUT_NAME" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Cleanup
|
# Cleanup
|
||||||
if [ "${{ inputs.compression }}" = "true" ]; then
|
if [ "${{ inputs.compression }}" == "true" ]; then
|
||||||
rm -f "$MYUPLOAD"
|
rm -f "$MYUPLOAD"
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue