fix: remove GitHub download dependency from archive jobs
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 GitHub, Inc. and contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -0,0 +1,4 @@
|
||||
Vendored official actions/upload-artifact v4.6.2.
|
||||
Source: https://github.com/actions/upload-artifact/tree/ea165f8d65b6e75b540449e92b4886f43607fa02
|
||||
Only action.yml, LICENSE and the bundled dist/upload/index.js are included.
|
||||
Vendoring avoids a GitHub network dependency on private-network runners.
|
||||
@@ -0,0 +1,69 @@
|
||||
name: 'Upload a Build Artifact'
|
||||
description: 'Upload a build artifact that can be used by subsequent workflow steps'
|
||||
author: 'GitHub'
|
||||
inputs:
|
||||
name:
|
||||
description: 'Artifact name'
|
||||
default: 'artifact'
|
||||
path:
|
||||
description: 'A file, directory or wildcard pattern that describes what to upload'
|
||||
required: true
|
||||
if-no-files-found:
|
||||
description: >
|
||||
The desired behavior if no files are found using the provided path.
|
||||
|
||||
Available Options:
|
||||
warn: Output a warning but do not fail the action
|
||||
error: Fail the action with an error message
|
||||
ignore: Do not output any warnings or errors, the action does not fail
|
||||
default: 'warn'
|
||||
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.
|
||||
compression-level:
|
||||
description: >
|
||||
The level of compression for Zlib to be applied to the artifact archive.
|
||||
The value can range from 0 to 9:
|
||||
- 0: No compression
|
||||
- 1: Best speed
|
||||
- 6: Default compression (same as GNU Gzip)
|
||||
- 9: Best compression
|
||||
Higher levels will result in better compression, but will take longer to complete.
|
||||
For large files that are not easily compressed, a value of 0 is recommended for significantly faster uploads.
|
||||
default: '6'
|
||||
overwrite:
|
||||
description: >
|
||||
If true, an artifact with a matching name will be deleted before a new one is uploaded.
|
||||
If false, the action will fail if an artifact for the given name already exists.
|
||||
Does not fail if the artifact does not exist.
|
||||
default: 'false'
|
||||
include-hidden-files:
|
||||
description: >
|
||||
If true, hidden files will be included in the artifact.
|
||||
If false, hidden files will be excluded from the artifact.
|
||||
default: 'false'
|
||||
|
||||
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.
|
||||
artifact-digest:
|
||||
description: >
|
||||
SHA-256 digest for the artifact that was just uploaded. Empty if the artifact upload failed.
|
||||
runs:
|
||||
using: 'node20'
|
||||
main: 'dist/upload/index.js'
|
||||
File diff suppressed because one or more lines are too long
@@ -18,7 +18,7 @@ on:
|
||||
|
||||
concurrency:
|
||||
group: daily-release-archive
|
||||
cancel-in-progress: false
|
||||
cancel-in-progress: true # bootstrap: supersede stalled initial external-action run
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
@@ -28,10 +28,25 @@ jobs:
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- name: Checkout trusted synchronization code
|
||||
uses: https://github.com/actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Fetch exact workflow revision from this Gitea
|
||||
env:
|
||||
TARGET_GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
WORKFLOW_SHA: ${{ github.sha }}
|
||||
run: |
|
||||
python3 - <<'PY'
|
||||
import io, os, re, shutil, tarfile, tempfile, urllib.request
|
||||
sha = os.environ['WORKFLOW_SHA']
|
||||
assert re.fullmatch('[0-9a-f]{40}', sha)
|
||||
url = 'https://git.jskdjs.cn/api/v1/repos/ruihan/yidaconnector/archive/' + sha + '.tar.gz'
|
||||
req = urllib.request.Request(url, headers={'Authorization': 'token ' + os.environ['TARGET_GITEA_TOKEN']})
|
||||
with urllib.request.urlopen(req, timeout=60) as r:
|
||||
payload = r.read()
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
with tarfile.open(fileobj=io.BytesIO(payload), mode='r:gz') as t:
|
||||
t.extractall(d, filter='data')
|
||||
root = os.path.join(d, os.listdir(d)[0])
|
||||
shutil.copytree(root, '.', dirs_exist_ok=True)
|
||||
PY
|
||||
- name: Test synchronization logic
|
||||
run: python3 -m unittest discover -s tests -v
|
||||
- name: Synchronize and verify releases
|
||||
@@ -49,7 +64,7 @@ jobs:
|
||||
python3 scripts/sync_releases.py "${args[@]}"
|
||||
- name: Save synchronization report
|
||||
if: always()
|
||||
uses: https://github.com/actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
|
||||
uses: ./.gitea/actions/upload-artifact
|
||||
with:
|
||||
name: release-sync-report
|
||||
path: sync-report.json
|
||||
|
||||
Reference in New Issue
Block a user