-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit bb3cffb
Showing
4 changed files
with
207 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
name: Test | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
workflow_dispatch: | ||
|
||
jobs: | ||
upload-file: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Create executable file | ||
run: | | ||
echo "#!/bin/bash" > hello.sh | ||
echo "echo 'Hello world!'" >> hello.sh | ||
chmod +x hello.sh | ||
- name: Upload artifact | ||
uses: ./ | ||
with: | ||
name: hello | ||
path: hello.sh | ||
|
||
- name: Delete file | ||
run: rm hello.sh | ||
|
||
- name: Download artifact | ||
uses: thebrowsercompany/gha-download-tar-artifact@main | ||
with: | ||
name: hello | ||
path: . | ||
|
||
- name: Run executable | ||
run: | | ||
./hello.sh | ||
upload-directory: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Create directory | ||
run: | | ||
mkdir -p hello | ||
echo "Hello world!" > hello/world.txt | ||
echo "#!/bin/bash" > hello/hello.sh | ||
echo "echo 'Hello world!'" >> hello/hello.sh | ||
chmod +x hello/hello.sh | ||
- name: Upload artifact | ||
uses: ./ | ||
with: | ||
name: hello | ||
path: hello/ | ||
|
||
- name: Delete directory | ||
run: rm -rf hello | ||
|
||
- name: Download artifact | ||
uses: thebrowsercompany/gha-download-tar-artifact@main | ||
with: | ||
name: hello | ||
path: . | ||
|
||
- name: Check permissions | ||
run: | | ||
./hello/hello.sh && ! test -x hello/world.txt |
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
BSD 3-Clause License | ||
|
||
Copyright (c) 2024, The Browser Company of New York | ||
All rights reserved. | ||
|
||
Redistribution and use in source and binary forms, with or without | ||
modification, are permitted provided that the following conditions are met: | ||
|
||
1. Redistributions of source code must retain the above copyright notice, this | ||
list of conditions and the following disclaimer. | ||
|
||
2. Redistributions in binary form must reproduce the above copyright notice, | ||
this list of conditions and the following disclaimer in the documentation | ||
and/or other materials provided with the distribution. | ||
|
||
3. Neither the name of the copyright holder nor the names of its | ||
contributors may be used to endorse or promote products derived from | ||
this software without specific prior written permission. | ||
|
||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# `@thebrowsercompany/gha-upload-tar-artifact` | ||
|
||
Tar and upload [Action Artifacts](https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts) from your Workflow Runs. Internally powered by GitHub's [@actions/upload-artifact](https://github.com/actions/upload-artifact) action. This action tars the provided path before using [@actions/upload-artifact](https://github.com/actions/upload-artifact) to upload the tar file, preserving permissions on non-Windows platforms. | ||
|
||
See also [gha-download-tar-artifact](https://github.com/thebrowsercompany/gha-download-tar-artifact). For further documentation, refer to the [@actions/upload-artifact](https://github.com/actions/upload-artifact) documentation. | ||
|
||
- [`@thebrowsercompany/gha-upload-tar-artifact`](#thebrowsercompanygha-upload-tar-artifact) | ||
- [Usage](#usage) | ||
- [Inputs](#inputs) | ||
- [Outputs](#outputs) | ||
|
||
## Usage | ||
|
||
### Inputs | ||
|
||
```yaml | ||
- uses: thebrowsercompany/gha-upload-tar-artifact@main | ||
with: | ||
# Name of the artifact to upload. | ||
name: | ||
|
||
# A file or directory that describes what to upload. | ||
# Required. | ||
path: | ||
|
||
# Duration after which artifact will expire in days. 0 means using default retention. | ||
# Minimum 1 day. | ||
# Maximum 90 days unless changed from the repository settings page. | ||
# Optional. Defaults to repository settings. | ||
retention-days: | ||
``` | ||
### Outputs | ||
| Name | Description | Example | | ||
| - | - | - | | ||
| `artifact-id` | GitHub ID of an Artifact, can be used by the REST API | `1234` | | ||
| `artifact-url` | URL to download an Artifact. Can be used in many scenarios such as linking to artifacts in issues or pull requests. Users must be logged-in in order for this URL to work. This URL is valid as long as the artifact has not expired or the artifact, run or repository have not been deleted | `https://github.com/example-org/example-repo/actions/runs/1/artifacts/1234` | |
This file contains 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 characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
name: 'Tar and upload a path, preserving permissions' | ||
description: 'Upload a build artifact that can be used by subsequent workflow steps, with permissions preserved.' | ||
author: 'The Browser Company of New York' | ||
|
||
inputs: | ||
name: | ||
description: 'The name of the artifact to create.' | ||
default: 'artifact' | ||
path: | ||
description: 'The path to compress and upload.' | ||
required: true | ||
retention-days: | ||
description: > | ||
Duration after which artifact will expire in days. 0 means using default retention. | ||
Minimum 1 day. | ||
Maximum 90 days unless changed from the repository settings page. | ||
default: 0 | ||
|
||
outputs: | ||
artifact-id: | ||
description: > | ||
A unique identifier for the artifact that was just uploaded. Empty if the artifact upload failed. | ||
This ID can be used as input to other APIs to download, delete or get more information about an artifact: https://docs.github.com/en/rest/actions/artifacts | ||
artifact-url: | ||
description: > | ||
A download URL for the artifact that was just uploaded. Empty if the artifact upload failed. | ||
This download URL only works for requests Authenticated with GitHub. Anonymous downloads will be prompted to first login. | ||
If an anonymous download URL is needed than a short time restricted URL can be generated using the download artifact API: https://docs.github.com/en/rest/actions/artifacts#download-an-artifact | ||
This URL will be valid for as long as the artifact exists and the workflow run and repository exists. Once an artifact has expired this URL will no longer work. | ||
Common uses cases for such a download URL can be adding download links to artifacts in descriptions or comments on pull requests or issues. | ||
runs: | ||
using: composite | ||
|
||
steps: | ||
- name: Create Tar Archive | ||
id: create-tar | ||
shell: pwsh | ||
run: | | ||
$TempDir = New-TemporaryFile | % { Remove-Item $_; New-Item -ItemType Directory -Path $_ } | ||
$TarFile = Join-Path $TempDir "${{ inputs.name }}.tar" | ||
Write-Host "tar-file=$TarFile" >> $env:GITHUB_OUTPUT | ||
tar cf $TarFile -C "${{ inputs.path }}" . | ||
- uses: actions/upload-artifact@v4 | ||
id: upload-artifact | ||
with: | ||
name: ${{ inputs.name }} | ||
path: ${{ steps.create-tar.outputs.tar-file }} | ||
retention-days: ${{ inputs.retention-days }} | ||
|
||
- name: Delete Temporary Directory | ||
shell: pwsh | ||
run: | | ||
$TempDir = Split-Path -Parent ${{ steps.create-tar.outputs.tar-file }} | ||
Remove-Item -Recurse $TempDir | ||
- name: Export Outputs | ||
shell: pwsh | ||
run: | | ||
Write-Host "artifact-id=${{ steps.upload-artifact.outputs.artifact-id }}" >> $env:GITHUB_OUTPUT | ||
Write-Host "artifact-url=${{ steps.upload-artifact.outputs.artifact-url }}" >> $env:GITHUB_OUTPUT | ||