mirror of
https://github.com/actions/upload-pages-artifact.git
synced 2026-02-09 11:51:33 +00:00
Compare commits
90 Commits
v1.0.0
...
artifacts-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2a5c144074 | ||
|
|
7e3f6bb53b | ||
|
|
257e666c05 | ||
|
|
0313a19afa | ||
|
|
1228e65686 | ||
|
|
eb31309b6c | ||
|
|
241a975ec2 | ||
|
|
ef95519d72 | ||
|
|
ecdd3edff7 | ||
|
|
e699324f6a | ||
|
|
a753861a5d | ||
|
|
dca6bac0e5 | ||
|
|
3138c05496 | ||
|
|
07f501f6a0 | ||
|
|
84bb4cd4b7 | ||
|
|
8f17ae6041 | ||
|
|
bc7aff665b | ||
|
|
6327a23a11 | ||
|
|
81e1caf958 | ||
|
|
9c071e6bed | ||
|
|
75e09bde99 | ||
|
|
74d0f02a66 | ||
|
|
6e866d065b | ||
|
|
a3f792f9c5 | ||
|
|
66b63f4a7d | ||
|
|
82a6ae9add | ||
|
|
dd7005653b | ||
|
|
f6a706f190 | ||
|
|
2642ae83d2 | ||
|
|
4d8166c5f5 | ||
|
|
64bcae551a | ||
|
|
d07e4817c2 | ||
|
|
07744da919 | ||
|
|
a3acd10bdf | ||
|
|
1e171d0d53 | ||
|
|
c06cea93b0 | ||
|
|
d8fa6d6dc2 | ||
|
|
2b33ce347b | ||
|
|
6fae3a4821 | ||
|
|
c55689491b | ||
|
|
253fd476ed | ||
|
|
98c5608efa | ||
|
|
c8641e8004 | ||
|
|
b27b6af8bf | ||
|
|
73907447a0 | ||
|
|
6da3417318 | ||
|
|
386aa88c28 | ||
|
|
90d4377601 | ||
|
|
79d3b41b30 | ||
|
|
7d0004809d | ||
|
|
1ca738b002 | ||
|
|
4103baae3e | ||
|
|
4506126207 | ||
|
|
6de1c7ae49 | ||
|
|
de1b81a30a | ||
|
|
61a978d261 | ||
|
|
3cb2c0f93b | ||
|
|
e02d70a4e3 | ||
|
|
73b4a0753a | ||
|
|
aff0f4398b | ||
|
|
42a1761ba2 | ||
|
|
12e73a1efa | ||
|
|
a597aecd27 | ||
|
|
fa880244ea | ||
|
|
70a14093be | ||
|
|
fb03cce750 | ||
|
|
287627f624 | ||
|
|
88565766e5 | ||
|
|
d3a918bb5e | ||
|
|
8ad82273b5 | ||
|
|
2f3239288b | ||
|
|
fc6db751bf | ||
|
|
888798aeba | ||
|
|
2ab5cde5b2 | ||
|
|
ae9ee82aa6 | ||
|
|
78f064a158 | ||
|
|
6b3212610f | ||
|
|
6a57e48bf6 | ||
|
|
724b9438f5 | ||
|
|
f422a5a910 | ||
|
|
0ab6893735 | ||
|
|
fd7afbc054 | ||
|
|
16e781d8a4 | ||
|
|
f4e69017a7 | ||
|
|
e361946409 | ||
|
|
ef7661905b | ||
|
|
780ca3f8cd | ||
|
|
4fe9084ffa | ||
|
|
ceec27c96b | ||
|
|
4143b6e8b8 |
6
.github/dependabot.yml
vendored
Normal file
6
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
2
.github/workflows/draft-release.yml
vendored
2
.github/workflows/draft-release.yml
vendored
@@ -8,7 +8,7 @@ jobs:
|
||||
draft-release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: release-drafter/release-drafter@v5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@@ -1,7 +1,7 @@
|
||||
name: Release
|
||||
on:
|
||||
release:
|
||||
types: [edited]
|
||||
types: [released]
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
TAG_NAME:
|
||||
@@ -24,7 +24,7 @@ jobs:
|
||||
steps:
|
||||
- name: Update the ${{ env.TAG_NAME }} tag
|
||||
id: update-major-tag
|
||||
uses: actions/publish-action@v0.1.0
|
||||
uses: actions/publish-action@v0.2.2
|
||||
with:
|
||||
source-tag: ${{ env.TAG_NAME }}
|
||||
slack-webhook: ${{ secrets.SLACK_WEBHOOK }}
|
||||
|
||||
53
.github/workflows/test-hosted-runners.yml
vendored
Normal file
53
.github/workflows/test-hosted-runners.yml
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
name: Run Tests
|
||||
|
||||
#
|
||||
# Create some files with script/new-artifact.sh and confirm they are properly packaged and uploaded
|
||||
# as artifacts with the actions.
|
||||
#
|
||||
# This is tested on all OS platforms where we have hosted runners.
|
||||
#
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Generate files
|
||||
run: mkdir artifact && mkdir artifact2 && cd artifact && ../script/new-artifact.sh
|
||||
shell: bash
|
||||
|
||||
- name: Upload Pages artifact
|
||||
uses: ./
|
||||
with:
|
||||
name: pages-artifact-${{ matrix.os }}
|
||||
path: artifact
|
||||
|
||||
- name: Download artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: pages-artifact-${{ matrix.os }}
|
||||
path: artifact2
|
||||
|
||||
- name: Extract artifact
|
||||
run: tar -xf artifact2/artifact.tar -C artifact2 && rm artifact2/artifact.tar
|
||||
shell: bash
|
||||
|
||||
- name: Compare files
|
||||
run: diff -qr artifact artifact2
|
||||
shell: bash
|
||||
|
||||
- name: Check for absence of symlinks
|
||||
run: if [ $(find artifact2 -type l | wc -l) != 0 ]; then echo "Symlinks found"; exit 1; fi
|
||||
shell: bash
|
||||
71
README.md
71
README.md
@@ -1,18 +1,18 @@
|
||||
# Upload-Pages-Artifact
|
||||
# upload-pages-artifact
|
||||
|
||||
A composite action for packaging and uploading artifact that can be deployed to [GitHub Pages][pages].
|
||||
A composite Action for packaging and uploading artifact that can be deployed to [GitHub Pages][pages].
|
||||
|
||||
# Scope
|
||||
## Scope
|
||||
|
||||
⚠️ Official support for building Pages with Actions is in public beta at the moment.
|
||||
|
||||
# Usage
|
||||
## Usage
|
||||
|
||||
See [action.yml](action.yml)
|
||||
|
||||
<!-- TODO: document custom workflow -->
|
||||
|
||||
# Artifact validation
|
||||
## Artifact validation
|
||||
|
||||
While using this action is optional, we highly recommend it since it takes care of producing (mostly) valid artifacts.
|
||||
|
||||
@@ -25,31 +25,68 @@ The [`tar` file][tar] must:
|
||||
|
||||
- be under 10GB in size
|
||||
- not contain any symbolic or hard links
|
||||
- contain only files and directories that all meet the expected minimum [file permissions](#file-permissions)
|
||||
|
||||
# Release instructions
|
||||
### File permissions
|
||||
|
||||
When using this action, ensure that your files have appropriate file permissions.
|
||||
At a minimum, GitHub Pages expects:
|
||||
- files to have read permission for the current user and the "Others" user role (e.g. `0744`, `0644`, `0444`)
|
||||
- directories to have read and execute permissions for the current user and the "Others" user role (e.g. `0755`, `0555`)
|
||||
|
||||
Failure to supply adequate permissions will result in a `deployment_perms_error` when attempting to deploy your artifacts to GitHub Pages.
|
||||
|
||||
#### Example permissions fix for Linux
|
||||
|
||||
```yaml
|
||||
steps:
|
||||
# ...
|
||||
- name: Fix permissions
|
||||
run: |
|
||||
chmod -c -R +rX "_site/" | while read line; do
|
||||
echo "::warning title=Invalid file permissions automatically fixed::$line"
|
||||
done
|
||||
- name: Upload Pages artifact
|
||||
uses: actions/upload-pages-artifact@v2
|
||||
# ...
|
||||
```
|
||||
|
||||
#### Example permissions fix for Mac
|
||||
|
||||
```yaml
|
||||
steps:
|
||||
# ...
|
||||
- name: Fix permissions
|
||||
run: |
|
||||
chmod -v -R +rX "_site/" | while read line; do
|
||||
echo "::warning title=Invalid file permissions automatically fixed::$line"
|
||||
done
|
||||
- name: Upload Pages artifact
|
||||
uses: actions/upload-pages-artifact@v2
|
||||
# ...
|
||||
```
|
||||
|
||||
## Release instructions
|
||||
|
||||
In order to release a new version of this Action:
|
||||
|
||||
1. Locate the semantic version of the upcoming release (a draft is maintained by the [`draft-release` workflow][draft-release])
|
||||
1. Locate the semantic version of the [upcoming release][release-list] (a draft is maintained by the [`draft-release` workflow][draft-release]).
|
||||
|
||||
2. Push a matching tag, for instance for `v0.1.0`:
|
||||
2. Publish the draft release from the `main` branch with semantic version as the tag name, _with_ the checkbox to publish to the GitHub Marketplace checked. :ballot_box_with_check:
|
||||
|
||||
```bash
|
||||
git tag v0.1.0
|
||||
git push origin v0.1.0
|
||||
```
|
||||
3. After publishing the release, the [`release` workflow][release] will automatically run to create/update the corresponding the major version tag such as `v0`.
|
||||
|
||||
3. Publish the draft release (the major tag such as `v0` will be created/updated by the [`release` workflow][release])
|
||||
⚠️ Environment approval is required. Check the [Release workflow run list][release-workflow-runs].
|
||||
|
||||
⚠️ Environment approval is required.
|
||||
|
||||
# License
|
||||
## License
|
||||
|
||||
The scripts and documentation in this project are released under the [MIT License](LICENSE).
|
||||
|
||||
<!-- references -->
|
||||
[pages]: https://pages.github.com
|
||||
[release-list]: https://github.com/actions/upload-pages-artifact/releases
|
||||
[draft-release]: .github/workflows/draft-release.yml
|
||||
[release]: .github/workflows/release.yml
|
||||
[release-workflow-runs]: https://github.com/actions/upload-pages-artifact/actions/workflows/release.yml
|
||||
[gzip]: https://en.wikipedia.org/wiki/Gzip
|
||||
[tar]: https://en.wikipedia.org/wiki/Tar_(computing)
|
||||
[tar]: https://en.wikipedia.org/wiki/Tar_(computing)
|
||||
|
||||
60
action.yml
60
action.yml
@@ -1,30 +1,76 @@
|
||||
name: "Upload Pages artifact"
|
||||
name: "Upload GitHub Pages artifact"
|
||||
description: "A composite action that prepares your static assets to be deployed to GitHub Pages"
|
||||
author: "GitHub"
|
||||
inputs:
|
||||
name:
|
||||
description: 'Artifact name'
|
||||
required: false
|
||||
default: 'github-pages'
|
||||
path:
|
||||
description: "Path of the directoring containing the static assets."
|
||||
description: "Path of the directory containing the static assets."
|
||||
required: true
|
||||
default: "_site/"
|
||||
retention-days:
|
||||
description: "Duration after which artifact will expire in days."
|
||||
required: false
|
||||
default: "1"
|
||||
outputs:
|
||||
artifact_id:
|
||||
description: "The ID of the artifact that was uploaded."
|
||||
value: ${{ steps.upload-artifact.outputs.artifact-id }}
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Archive artifact
|
||||
shell: bash
|
||||
shell: sh
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
tar \
|
||||
--dereference --hard-dereference \
|
||||
--directory ${{ inputs.path }} \
|
||||
-cvf ${{ runner.temp }}/artifact.tar \
|
||||
--directory "$INPUT_PATH" \
|
||||
-cvf "$RUNNER_TEMP/artifact.tar" \
|
||||
--exclude=.git \
|
||||
--exclude=.github \
|
||||
.
|
||||
env:
|
||||
INPUT_PATH: ${{ inputs.path }}
|
||||
|
||||
# Switch to gtar (GNU tar instead of bsdtar which is the default in the MacOS runners so we can use --hard-dereference)
|
||||
- name: Archive artifact
|
||||
shell: sh
|
||||
if: runner.os == 'macOS'
|
||||
run: |
|
||||
gtar \
|
||||
--dereference --hard-dereference \
|
||||
--directory "$INPUT_PATH" \
|
||||
-cvf "$RUNNER_TEMP/artifact.tar" \
|
||||
--exclude=.git \
|
||||
--exclude=.github \
|
||||
.
|
||||
env:
|
||||
INPUT_PATH: ${{ inputs.path }}
|
||||
|
||||
# Massage the paths for Windows only
|
||||
- name: Archive artifact
|
||||
shell: bash
|
||||
if: runner.os == 'Windows'
|
||||
run: |
|
||||
tar \
|
||||
--dereference --hard-dereference \
|
||||
--directory "$INPUT_PATH" \
|
||||
-cvf "$RUNNER_TEMP\artifact.tar" \
|
||||
--exclude=.git \
|
||||
--exclude=.github \
|
||||
--force-local \
|
||||
"."
|
||||
env:
|
||||
INPUT_PATH: ${{ inputs.path }}
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@main
|
||||
id: upload-artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: github-pages
|
||||
name: ${{ inputs.name }}
|
||||
path: ${{ runner.temp }}/artifact.tar
|
||||
retention-days: ${{ inputs.retention-days }}
|
||||
if-no-files-found: error
|
||||
|
||||
10
script/new-artifact.sh
Executable file
10
script/new-artifact.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# Create some files and directories in the current folder
|
||||
echo 'hello' > hello.txt
|
||||
mkdir subdir
|
||||
echo 'world' > subdir/world.txt
|
||||
|
||||
# Add some symlinks (which we should dereference properly when archiving)
|
||||
ln -s subdir subdir-link
|
||||
ln -s hello.txt bonjour.txt
|
||||
Reference in New Issue
Block a user