Compare commits
192 commits
Author | SHA1 | Date | |
---|---|---|---|
d2253e857e | |||
d561fcf730 | |||
ca9bc34d39 | |||
f58439aa1a | |||
|
97852ced95 | ||
|
a970d8cea7 | ||
|
aeebe74ddd | ||
|
de2e2fc7b1 | ||
|
dfa1ab54e8 | ||
9a270df19e | |||
|
2c2893da21 | ||
|
0c49fe751a | ||
|
4042ded5ae | ||
|
a88977af94 | ||
|
558ce7daa8 | ||
|
c9a6d6786f | ||
|
db0a4fd5d4 | ||
|
db790e0811 | ||
|
c2ee6cd849 | ||
|
8417ea34a0 | ||
|
13ee5cc245 | ||
|
5b138fae11 | ||
|
1ce03ca19f | ||
|
cd73f4828f | ||
|
b3cc2b53dc | ||
|
55621fbbea | ||
|
d778789959 | ||
|
abe8f92ab8 | ||
|
2a2a8e0b31 | ||
|
c90116c9ba | ||
|
8e295a96de | ||
|
e87b71cc0d | ||
|
f6b0e06dc1 | ||
|
d28f9790b8 | ||
|
98ba21e797 | ||
|
3244de48fc | ||
|
1e26d04b06 | ||
|
7d9827f9fc | ||
|
f48c570215 | ||
|
b24136ec59 | ||
|
8e9c5aad48 | ||
|
5e83ab5106 | ||
|
94c589c209 | ||
|
f43f06c334 | ||
|
b15c4b009a | ||
|
5f517ae6c7 | ||
|
6fc7263f59 | ||
|
e9d1226390 | ||
e20f6fb92e | |||
|
1f9847b3ed | ||
|
ab3479f0d1 | ||
|
5fd14aada8 | ||
|
05f20f44ac | ||
|
389dd6f536 | ||
|
c99dfa8091 | ||
|
81c852126c | ||
|
8158497a73 | ||
|
52316093cd | ||
|
4cf0084e24 | ||
|
dffcd16a60 | ||
|
cab58d284e | ||
|
e37000143e | ||
|
b35cfe3f4f | ||
|
79623d9bc2 | ||
|
0b9498c541 | ||
|
34975924b1 | ||
|
a695cef57d | ||
|
c05eb562a9 | ||
|
8cb636ccc9 | ||
|
dd809ce3f3 | ||
|
44cc0c1010 | ||
|
a48af07d93 | ||
|
39a76eaa33 | ||
|
1f00bbfac5 | ||
|
8f89fc9953 | ||
|
a406bffabe | ||
|
3bda063578 | ||
|
2a1ebd7b85 | ||
|
d45e8e63c9 | ||
|
72e20d413e | ||
|
5aec8d677f | ||
|
b2070ec460 | ||
|
613815aa1e | ||
|
c82bccca90 | ||
|
1dc4fe225c | ||
|
e5b9105da1 | ||
|
2df196a2e6 | ||
|
cbd304c841 | ||
|
0b3c0325a5 | ||
|
600d18d05b | ||
|
f1d9897e83 | ||
|
992f995441 | ||
|
2e46d37950 | ||
|
9592da3d6e | ||
|
4f4716cdd8 | ||
68fec14155 | |||
|
5da4074bb9 | ||
|
51f098f4ad | ||
|
a2dc40f444 | ||
|
e63baec249 | ||
|
6ca7088b9c | ||
|
8309901a8c | ||
|
7cefbd4a67 | ||
|
a3f028f2ad | ||
|
7c684eb565 | ||
|
e436f77c3e | ||
|
2ed0cdc4a3 | ||
|
484f113646 | ||
|
23675124bd | ||
|
01c494c277 | ||
|
6f3544e3d8 | ||
89d22496d7 | |||
|
72d0cde370 | ||
|
dbcee4945c | ||
|
ca0734d470 | ||
|
923f97f8e9 | ||
|
82ca6dd6bf | ||
|
7a92941452 | ||
|
6619ef60e4 | ||
|
de4459f646 | ||
|
61f65e54db | ||
|
1d03f5b4b0 | ||
|
4eb2b22a8f | ||
|
a48e23bece | ||
|
f8a95c82e4 | ||
|
3f719ac939 | ||
|
97b9610f30 | ||
|
03597d10e5 | ||
|
f8c9d6f7cb | ||
|
22d5626bf0 | ||
|
73959c00f2 | ||
|
78179fd737 | ||
|
980e5968ea | ||
|
a88a3c6103 | ||
|
3cef317576 | ||
|
63978d79f9 | ||
|
4b3639aea7 | ||
|
8073e90f68 | ||
|
24171c9800 | ||
|
0c2b39a68a | ||
|
cc6a495998 | ||
|
ed86f30cf4 | ||
|
f9698b5a7f | ||
|
6b7d107387 | ||
|
ca174a3aa2 | ||
|
b9d0a29741 | ||
|
01e6a9c8ad | ||
|
7c2a97666d | ||
|
db67487abd | ||
83ae356b90 | |||
|
7e0aaa8362 | ||
756a86eda1 | |||
|
df805bfe83 | ||
60e6e6216f | |||
|
a7160fadde | ||
|
3ae7f8813e | ||
|
642930d397 | ||
|
057a365a0e | ||
|
b67b1730b1 | ||
|
a5d49733fd | ||
|
c5c9f85e4b | ||
|
88c635cbad | ||
|
1a5c056204 | ||
|
c9db056791 | ||
|
5f94794d24 | ||
|
f41a92243c | ||
|
a88f1ba91c | ||
|
13213861ba | ||
|
2e0626667e | ||
c06fb22913 | |||
|
06f9c278a8 | ||
97c61aaf9b | |||
197eeea75b | |||
7d2c68630e | |||
|
9767167661 | ||
|
2525022df7 | ||
|
7ebe881546 | ||
|
94191f878d | ||
|
595a9d0f41 | ||
|
cec3aa3fc0 | ||
|
797fc0c04c | ||
|
fc3b5a1530 | ||
a7a9b137a7 | |||
02fab65125 | |||
3ef67f52c8 | |||
40ae3a7f55 | |||
f0c7881d57 | |||
39f0019455 | |||
0516abb8fd | |||
3690b0244c | |||
bdc847f5d0 | |||
d8c3ab4f36 |
26 changed files with 1333 additions and 775 deletions
|
@ -30,6 +30,9 @@ jobs:
|
|||
- name: 🔗 Artifactview PR comment
|
||||
if: ${{ always() && github.event_name == 'pull_request' }}
|
||||
run: |
|
||||
echo "Run: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER"
|
||||
if [[ "$GITEA_ACTIONS" == "true" ]]; then RUN_NUMBER="$GITHUB_RUN_NUMBER"; else RUN_NUMBER="$GITHUB_RUN_ID"; fi
|
||||
echo "Run: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER"
|
||||
echo "Pull: ${{ github.event.number }}"
|
||||
curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"🧪 Test report\"}, \"artifact_paths\": {\"test\":\"/junit.xml?viewer=1\"}}"
|
||||
|
||||
curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" \
|
||||
--data '{"url": "'"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER"'", "pr": ${{ github.event.number }}, "artifact_titles": {"test":"🧪 Test report"}, "artifact_paths": {"test":"/junit.xml?viewer=1"}}'
|
||||
|
|
23
.forgejo/workflows/docker-readme.yaml
Normal file
23
.forgejo/workflows/docker-readme.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
name: DockerHub README
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "README.md"
|
||||
- ".forgejo/workflows/docker-readme.yaml"
|
||||
|
||||
jobs:
|
||||
update:
|
||||
runs-on: cimaster-latest
|
||||
steps:
|
||||
- name: 👁️ Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Docker Hub Description
|
||||
uses: https://github.com/peter-evans/dockerhub-description@v4
|
||||
with:
|
||||
username: thetadev256
|
||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
||||
repository: thetadev256/artifactview
|
||||
enable-url-completion: true
|
63
.forgejo/workflows/renovate.yaml.bak
Normal file
63
.forgejo/workflows/renovate.yaml.bak
Normal file
|
@ -0,0 +1,63 @@
|
|||
name: renovate
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["main"]
|
||||
paths:
|
||||
- ".forgejo/workflows/renovate.yaml"
|
||||
- "renovate.json"
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
RENOVATE_REPOSITORIES: ${{ github.repository }}
|
||||
|
||||
jobs:
|
||||
renovate:
|
||||
runs-on: docker
|
||||
container:
|
||||
image: renovate/renovate:39
|
||||
|
||||
steps:
|
||||
- name: Load renovate repo cache
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: |
|
||||
.tmp/cache/renovate/repository
|
||||
.tmp/cache/renovate/renovate-cache-sqlite
|
||||
.tmp/osv
|
||||
key: repo-cache-${{ github.run_id }}
|
||||
restore-keys: |
|
||||
repo-cache-
|
||||
|
||||
- name: Run renovate
|
||||
run: renovate
|
||||
env:
|
||||
LOG_LEVEL: info
|
||||
RENOVATE_BASE_DIR: ${{ github.workspace }}/.tmp
|
||||
RENOVATE_ENDPOINT: ${{ github.server_url }}
|
||||
RENOVATE_PLATFORM: gitea
|
||||
RENOVATE_REPOSITORY_CACHE: 'enabled'
|
||||
RENOVATE_TOKEN: ${{ secrets.FORGEJO_CI_BOT_TOKEN }}
|
||||
GITHUB_COM_TOKEN: ${{ secrets.GH_PUBLIC_TOKEN }}
|
||||
RENOVATE_GIT_AUTHOR: 'Renovate Bot <forgejo-renovate-action@forgejo.org>'
|
||||
|
||||
RENOVATE_X_SQLITE_PACKAGE_CACHE: true
|
||||
|
||||
GIT_AUTHOR_NAME: 'Renovate Bot'
|
||||
GIT_AUTHOR_EMAIL: 'forgejo-renovate-action@forgejo.org'
|
||||
GIT_COMMITTER_NAME: 'Renovate Bot'
|
||||
GIT_COMMITTER_EMAIL: 'forgejo-renovate-action@forgejo.org'
|
||||
|
||||
OSV_OFFLINE_ROOT_DIR: ${{ github.workspace }}/.tmp/osv
|
||||
|
||||
- name: Save renovate repo cache
|
||||
if: always() && env.RENOVATE_DRY_RUN != 'full'
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: |
|
||||
.tmp/cache/renovate/repository
|
||||
.tmp/cache/renovate/renovate-cache-sqlite
|
||||
.tmp/osv
|
||||
key: repo-cache-${{ github.run_id }}
|
223
CHANGELOG.md
223
CHANGELOG.md
|
@ -3,6 +3,229 @@
|
|||
All notable changes to this project will be documented in this file.
|
||||
|
||||
|
||||
## [v0.4.8](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.7..v0.4.8) - 2025-01-26
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- Lifetime-related lints - ([e20f6fb](https://codeberg.org/ThetaDev/artifactview/commit/e20f6fb92e86751222d2c5143ee384cdbea1159d))
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- *(deps)* Update rust crate async-compression to v0.4.15 (#85) - ([4f4716c](https://codeberg.org/ThetaDev/artifactview/commit/4f4716cdd86c317ede2b381d375ef8e736aee240))
|
||||
- *(deps)* Update rust crate async-compression to v0.4.16 (#86) - ([9592da3](https://codeberg.org/ThetaDev/artifactview/commit/9592da3d6e2c2223174fcc459e94f29bf5067ead))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.129 (#87) - ([2e46d37](https://codeberg.org/ThetaDev/artifactview/commit/2e46d3795089ef7b2739db4d216f4db99f792071))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.131 (#88) - ([992f995](https://codeberg.org/ThetaDev/artifactview/commit/992f9954414af550fce90c9c7424ab0da2296875))
|
||||
- *(deps)* Update rust crate governor to v0.6.4 (#89) - ([f1d9897](https://codeberg.org/ThetaDev/artifactview/commit/f1d9897e832b5cdb99fd81edcb38d27bd6b445f8))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.132 (#90) - ([600d18d](https://codeberg.org/ThetaDev/artifactview/commit/600d18d05b356c641a32b93b2407a1f23e2370c4))
|
||||
- *(deps)* Update rust crate async-compression to v0.4.17 (#91) - ([0b3c032](https://codeberg.org/ThetaDev/artifactview/commit/0b3c0325a50cd456cb9b62f97e916f0760785a3c))
|
||||
- *(deps)* Update rust crate governor to 0.7.0 (#92) - ([cbd304c](https://codeberg.org/ThetaDev/artifactview/commit/cbd304c84195983596156a95c26d65a89e93df8a))
|
||||
- *(deps)* Update rust crate thiserror to v1.0.65 (#94) - ([2df196a](https://codeberg.org/ThetaDev/artifactview/commit/2df196a2e666e8186d9ff66e885123c8a48c743c))
|
||||
- *(deps)* Update rust crate serde to v1.0.213 (#93) - ([e5b9105](https://codeberg.org/ThetaDev/artifactview/commit/e5b9105da1fb0c63584cc409b5dd98c1fe045f9b))
|
||||
- *(deps)* Update rust crate tokio to v1.41.0 (#95) - ([1dc4fe2](https://codeberg.org/ThetaDev/artifactview/commit/1dc4fe225c01f237f6a698fced7eff72cfb8ee85))
|
||||
- *(deps)* Update rust crate pin-project to v1.1.7 (#96) - ([c82bccc](https://codeberg.org/ThetaDev/artifactview/commit/c82bccca9098281fa42ded5d5527eadb3cbcce88))
|
||||
- *(deps)* Update rust crate regex to v1.11.1 (#97) - ([613815a](https://codeberg.org/ThetaDev/artifactview/commit/613815aa1ebc01643e117ca9fafcb37bfe7d29d7))
|
||||
- *(deps)* Update rust crate axum-test to v16.3.0 (#98) - ([b2070ec](https://codeberg.org/ThetaDev/artifactview/commit/b2070ec460e45eeb9997885bd7cf54913f9f4183))
|
||||
- *(deps)* Update rust crate insta to v1.41.0 (#99) - ([5aec8d6](https://codeberg.org/ThetaDev/artifactview/commit/5aec8d677f089ff5092fe78655170d52e544baeb))
|
||||
- *(deps)* Update rust crate quick-xml to 0.37.0 (#100) - ([72e20d4](https://codeberg.org/ThetaDev/artifactview/commit/72e20d413e80b86d49ea0b275ce6aece99d75314))
|
||||
- *(deps)* Update rust crate reqwest to v0.12.9 (#101) - ([d45e8e6](https://codeberg.org/ThetaDev/artifactview/commit/d45e8e63c9ce4067a05839643581b9f42e4048ec))
|
||||
- *(deps)* Update rust crate serde to v1.0.214 (#102) - ([2a1ebd7](https://codeberg.org/ThetaDev/artifactview/commit/2a1ebd7b854ca82cceb768202e4d9ee984007311))
|
||||
- *(deps)* Update rust crate futures-lite to v2.4.0 (#103) - ([3bda063](https://codeberg.org/ThetaDev/artifactview/commit/3bda06357809e68c0804aa425e625893af1bbde2))
|
||||
- *(deps)* Update rust crate insta to v1.41.1 (#104) - ([a406bff](https://codeberg.org/ThetaDev/artifactview/commit/a406bffabeeb2627cd5ef74f3520add6eb0a8d6c))
|
||||
- *(deps)* Update rust crate thiserror to v1.0.66 (#105) - ([8f89fc9](https://codeberg.org/ThetaDev/artifactview/commit/8f89fc9953370c4325c63762e4451d37a1a4a64a))
|
||||
- *(deps)* Update rust crate scraper to 0.21.0 (#106) - ([1f00bbf](https://codeberg.org/ThetaDev/artifactview/commit/1f00bbfac53521cf0f76cf6fc4bf23e7a5e10562))
|
||||
- *(deps)* Update rust crate thiserror to v1.0.67 (#107) - ([39a76ea](https://codeberg.org/ThetaDev/artifactview/commit/39a76eaa334d3f57e30e3ba95eb781dfa7aee1ee))
|
||||
- *(deps)* Update rust crate thiserror to v1.0.68 (#108) - ([a48af07](https://codeberg.org/ThetaDev/artifactview/commit/a48af07d936a77977d602649fe579941b2cd2630))
|
||||
- *(deps)* Update rust crate url to v2.5.3 (#109) - ([44cc0c1](https://codeberg.org/ThetaDev/artifactview/commit/44cc0c10103eb8fc10ddcc17e559479fadcbe4f1))
|
||||
- *(deps)* Update rust crate tokio to v1.41.1 (#111) - ([dd809ce](https://codeberg.org/ThetaDev/artifactview/commit/dd809ce3f322fe8dafadeb802be7fcf905aa2f02))
|
||||
- *(deps)* Update rust crate thiserror to v2 (#110) - ([8cb636c](https://codeberg.org/ThetaDev/artifactview/commit/8cb636ccc9c93800e6e98522de5c38bb05e76fdb))
|
||||
- *(deps)* Update rust crate futures-lite to v2.5.0 (#112) - ([c05eb56](https://codeberg.org/ThetaDev/artifactview/commit/c05eb562a9d10945ee534ef50208aeb004023c51))
|
||||
- *(deps)* Update rust crate thiserror to v2.0.3 (#113) - ([a695cef](https://codeberg.org/ThetaDev/artifactview/commit/a695cef57d5c73492d806958290bb37bd9613125))
|
||||
- *(deps)* Update rust crate serde to v1.0.215 (#114) - ([3497592](https://codeberg.org/ThetaDev/artifactview/commit/34975924b1e1c3d5367346a1e0274a435496091f))
|
||||
- *(deps)* Update rust crate flate2 to v1.0.35 (#115) - ([0b9498c](https://codeberg.org/ThetaDev/artifactview/commit/0b9498c541c0188fd7c82a99b2f778251b831df3))
|
||||
- *(deps)* Update rust crate axum to v0.7.8 (#116) - ([79623d9](https://codeberg.org/ThetaDev/artifactview/commit/79623d9bc2d40e43374c4a2934d6bbac1235bae7))
|
||||
- *(deps)* Update rust crate axum-extra to v0.9.5 (#117) - ([b35cfe3](https://codeberg.org/ThetaDev/artifactview/commit/b35cfe3f4fe402943ee3238b671c18449c5437ba))
|
||||
- *(deps)* Update rust crate axum-test to v16.4.0 (#118) - ([e370001](https://codeberg.org/ThetaDev/artifactview/commit/e37000143e752b4bc496797de2410be33d3adf2b))
|
||||
- *(deps)* Update rust crate axum to v0.7.9 (#119) - ([cab58d2](https://codeberg.org/ThetaDev/artifactview/commit/cab58d284e6b9f2e6b730d9b3f6d648d0955832d))
|
||||
- *(deps)* Update rust crate quick-xml to v0.37.1 (#121) - ([dffcd16](https://codeberg.org/ThetaDev/artifactview/commit/dffcd16a60b456e9ed547b2a01342df3585e607f))
|
||||
- *(deps)* Update rust crate axum-extra to v0.9.6 (#120) - ([4cf0084](https://codeberg.org/ThetaDev/artifactview/commit/4cf0084e24969d15149468de42cf6ed15e1169f5))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.133 (#122) - ([5231609](https://codeberg.org/ThetaDev/artifactview/commit/52316093cdad4ceca274e4c65035842e0413892e))
|
||||
- *(deps)* Update rust crate tower-http to v0.6.2 (#123) - ([8158497](https://codeberg.org/ThetaDev/artifactview/commit/8158497a73367fb2280d48350e3afa868c006d65))
|
||||
- *(deps)* Update rust crate zip to v2.2.1 (#124) - ([81c8521](https://codeberg.org/ThetaDev/artifactview/commit/81c852126ca45172bd00f75a5007263fefb5967b))
|
||||
- *(deps)* Update rust crate url to v2.5.4 (#125) - ([c99dfa8](https://codeberg.org/ThetaDev/artifactview/commit/c99dfa809175e84261245b2680a964b95d81b4e3))
|
||||
- *(deps)* Update rust crate comrak to 0.30.0 (#126) - ([389dd6f](https://codeberg.org/ThetaDev/artifactview/commit/389dd6f536b9044a8b9675c3ad34fa218028d154))
|
||||
- *(deps)* Update rust crate async-compression to v0.4.18 (#127) - ([05f20f4](https://codeberg.org/ThetaDev/artifactview/commit/05f20f44ac4910e600f318d656d376d52fd6b131))
|
||||
- *(deps)* Update rust crate comrak to 0.31.0 (#128) - ([5fd14aa](https://codeberg.org/ThetaDev/artifactview/commit/5fd14aada8f310fdeb0b2dc33a15de0b195ebc81))
|
||||
- *(deps)* Update rust crate tracing to v0.1.41 (#129) - ([ab3479f](https://codeberg.org/ThetaDev/artifactview/commit/ab3479f0d1b3a30413df654cc9f2e7a52081b542))
|
||||
- *(deps)* Update rust crate tracing-subscriber to v0.3.19 (#130) - ([1f9847b](https://codeberg.org/ThetaDev/artifactview/commit/1f9847b3edd73c1e905feb88087ee4325364ddda))
|
||||
- *(deps)* Update rust crate thiserror to v2.0.4 (#131) - ([e9d1226](https://codeberg.org/ThetaDev/artifactview/commit/e9d122639022d3b5b68b4626e00442a81acf85f5))
|
||||
- *(deps)* Update rust crate time to v0.3.37 (#132) - ([6fc7263](https://codeberg.org/ThetaDev/artifactview/commit/6fc7263f5996abefdb71fd5ecae277ec707cbdd9))
|
||||
- *(deps)* Update rust crate http to v1.2.0 (#133) - ([5f517ae](https://codeberg.org/ThetaDev/artifactview/commit/5f517ae6c784e4fbc99ca69650d85621e90f776c))
|
||||
- *(deps)* Update rust crate tokio to v1.42.0 (#134) - ([b15c4b0](https://codeberg.org/ThetaDev/artifactview/commit/b15c4b009a268cd4227846f166131aad5628f87d))
|
||||
- *(deps)* Update rust crate tokio-util to v0.7.13 (#135) - ([f43f06c](https://codeberg.org/ThetaDev/artifactview/commit/f43f06c33462c15a8a752493f14c86d9dbde0e8d))
|
||||
- *(deps)* Update rust crate thiserror to v2.0.5 (#136) - ([94c589c](https://codeberg.org/ThetaDev/artifactview/commit/94c589c20936c8e56be3147fd01e51d8b25e617f))
|
||||
- *(deps)* Update rust crate thiserror to v2.0.6 (#137) - ([5e83ab5](https://codeberg.org/ThetaDev/artifactview/commit/5e83ab510614db696a7245ad5027c717b3493cab))
|
||||
- *(deps)* Update rust crate chrono to v0.4.39 (#138) - ([8e9c5aa](https://codeberg.org/ThetaDev/artifactview/commit/8e9c5aad48378c2fa1a1d3d370b96de2fca5dd86))
|
||||
- *(deps)* Update rust crate governor to 0.8.0 (#139) - ([b24136e](https://codeberg.org/ThetaDev/artifactview/commit/b24136ec597d2b4c579176a6a7845878549478bb))
|
||||
- *(deps)* Update rust crate scraper to 0.22.0 (#140) - ([f48c570](https://codeberg.org/ThetaDev/artifactview/commit/f48c57021505091b22c36bd49bd4527e652b8d78))
|
||||
- *(deps)* Update rust crate serde to v1.0.216 (#141) - ([7d9827f](https://codeberg.org/ThetaDev/artifactview/commit/7d9827f9fc52aa88f19efa371e36877723328248))
|
||||
- *(deps)* Update rust crate thiserror to v2.0.7 (#142) - ([1e26d04](https://codeberg.org/ThetaDev/artifactview/commit/1e26d04b068f9c2e0a65a3dbcc43f66d118a6043))
|
||||
- *(deps)* Update rust crate axum-test to v16.4.1 (#143) - ([3244de4](https://codeberg.org/ThetaDev/artifactview/commit/3244de48fc2691898599ab20f2baa888db9f3c82))
|
||||
- *(deps)* Update rust crate zip to v2.2.2 (#144) - ([98ba21e](https://codeberg.org/ThetaDev/artifactview/commit/98ba21e7979bfbdd06fb46da8e45f97f71dc2c99))
|
||||
- *(deps)* Update rust crate proptest to v1.6.0 (#145) - ([d28f979](https://codeberg.org/ThetaDev/artifactview/commit/d28f9790b825b2af749e3fcd07718faa91c2a942))
|
||||
- *(deps)* Update rust crate comrak to 0.32.0 (#146) - ([f6b0e06](https://codeberg.org/ThetaDev/artifactview/commit/f6b0e06dc1a39311c4473e0f4c3c5742a352e00f))
|
||||
- *(deps)* Update rust crate thiserror to v2.0.8 (#147) - ([e87b71c](https://codeberg.org/ThetaDev/artifactview/commit/e87b71cc0df91f0ee71a88a3bd0127d4f8c74eea))
|
||||
- *(deps)* Update rust crate env_logger to v0.11.6 (#148) - ([8e295a9](https://codeberg.org/ThetaDev/artifactview/commit/8e295a96decd532fdd854ee8950a68d496c1617d))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.134 (#149) - ([c90116c](https://codeberg.org/ThetaDev/artifactview/commit/c90116c9bac801e57062a462bd7a08a5fd6389b2))
|
||||
- *(deps)* Update rust crate thiserror to v2.0.9 (#150) - ([2a2a8e0](https://codeberg.org/ThetaDev/artifactview/commit/2a2a8e0b310b4ddcf15f20b1189bf768499f6b75))
|
||||
- *(deps)* Update rust crate serde to v1.0.217 (#151) - ([abe8f92](https://codeberg.org/ThetaDev/artifactview/commit/abe8f92ab8cdee926ca1ad4faf280427a9439e0e))
|
||||
- *(deps)* Update rust crate quick-xml to v0.37.2 (#152) - ([d778789](https://codeberg.org/ThetaDev/artifactview/commit/d7787899593d60243c1efa6dd036fc44e9c51868))
|
||||
- *(deps)* Update rust crate axum-extra to 0.10.0 (#154) - ([55621fb](https://codeberg.org/ThetaDev/artifactview/commit/55621fbbea51aed2234e43fa4b5ed61524ca1805))
|
||||
- *(deps)* Update rust crate rstest to 0.24.0 (#155) - ([b3cc2b5](https://codeberg.org/ThetaDev/artifactview/commit/b3cc2b53dc032d2821748895c983dde49c56eb65))
|
||||
- *(deps)* Update rust crate reqwest to v0.12.12 (#156) - ([cd73f48](https://codeberg.org/ThetaDev/artifactview/commit/cd73f4828f67d31dee356cb98a1ac45354e0e728))
|
||||
- *(deps)* Update rust crate comrak to 0.33.0 (#158) - ([1ce03ca](https://codeberg.org/ThetaDev/artifactview/commit/1ce03ca19f4032d5e88c8efbe83b98c45d98247d))
|
||||
- *(deps)* Update rust crate insta to v1.42.0 (#159) - ([5b138fa](https://codeberg.org/ThetaDev/artifactview/commit/5b138fae112d47a08b0940d61bd403047a8567fa))
|
||||
- *(deps)* Update rust crate pin-project to v1.1.8 (#161) - ([13ee5cc](https://codeberg.org/ThetaDev/artifactview/commit/13ee5cc2456180bfdc47a2d9e3a0dfe9a2dacd7d))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.135 (#162) - ([8417ea3](https://codeberg.org/ThetaDev/artifactview/commit/8417ea34a0808d2ba25194021bbe38538ce52ddf))
|
||||
- *(deps)* Update rust crate thiserror to v2.0.10 (#163) - ([c2ee6cd](https://codeberg.org/ThetaDev/artifactview/commit/c2ee6cd84933e7cb2167b4cd34ec47f926105e59))
|
||||
- *(deps)* Update rust crate tokio to v1.43.0 (#164) - ([db790e0](https://codeberg.org/ThetaDev/artifactview/commit/db790e0811e9a67a63dc4708ca928efbcff1eb49))
|
||||
- *(deps)* Update rust crate thiserror to v2.0.11 (#165) - ([db0a4fd](https://codeberg.org/ThetaDev/artifactview/commit/db0a4fd5d48842ff48a375d241139ad91796422b))
|
||||
- *(deps)* Update rust crate futures-lite to v2.6.0 (#166) - ([c9a6d67](https://codeberg.org/ThetaDev/artifactview/commit/c9a6d6786f763825874520776653b311bc7bd5d8))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.137 (#167) - ([558ce7d](https://codeberg.org/ThetaDev/artifactview/commit/558ce7daa8fbedac507f2d6e01961896eb8daac0))
|
||||
- *(deps)* Update rust crate comrak to 0.34.0 (#168) - ([a88977a](https://codeberg.org/ThetaDev/artifactview/commit/a88977af942d275422670984ddbefa53f8d61e13))
|
||||
- *(deps)* Update rust crate comrak to 0.35.0 (#169) - ([4042ded](https://codeberg.org/ThetaDev/artifactview/commit/4042ded5aee3763c293ffd264cb2428eb4266845))
|
||||
- *(deps)* Update rust crate insta to v1.42.1 (#170) - ([0c49fe7](https://codeberg.org/ThetaDev/artifactview/commit/0c49fe751a833ca684bfc39d19e2f1eb7ea269f5))
|
||||
- *(deps)* Update rust crate axum to 0.8.0 (#157) - ([2c2893d](https://codeberg.org/ThetaDev/artifactview/commit/2c2893da218737572e3943e2b72f7cec4ca6798f))
|
||||
|
||||
|
||||
## [v0.4.7](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.6..v0.4.7) - 2024-10-12
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(deps)* Update rust crate serde_json to v1.0.121 (#29) - ([df805bf](https://codeberg.org/ThetaDev/artifactview/commit/df805bfe8394dd148ded1d4d3af901eb97593885))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.122 (#32) - ([db67487](https://codeberg.org/ThetaDev/artifactview/commit/db67487abdfc15fe55854fcb233e0bb876b603b3))
|
||||
- *(deps)* Update rust crate regex to v1.10.6 (#33) - ([7c2a976](https://codeberg.org/ThetaDev/artifactview/commit/7c2a97666d98d4959affbb8ece93c4ba162a760d))
|
||||
- *(deps)* Update rust crate serde-env to 0.2.0 (#37) - ([6b7d107](https://codeberg.org/ThetaDev/artifactview/commit/6b7d107387ff3e52e62e4ed19c64e63f8048c478))
|
||||
- *(deps)* Update rust crate serde to v1.0.205 (#38) - ([f9698b5](https://codeberg.org/ThetaDev/artifactview/commit/f9698b5a7f9c7f3748d4d7aa38f7dc4c0f5f2029))
|
||||
- *(deps)* Update rust crate serde to v1.0.206 (#39) - ([ed86f30](https://codeberg.org/ThetaDev/artifactview/commit/ed86f30cf4a736eeb4a3d471e81b8e7f7344b53b))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.124 (#40) - ([cc6a495](https://codeberg.org/ThetaDev/artifactview/commit/cc6a4959983205ae2f40d81c9a40c8514165c0bb))
|
||||
- *(deps)* Update rust crate serde to v1.0.207 (#41) - ([0c2b39a](https://codeberg.org/ThetaDev/artifactview/commit/0c2b39a68a1adb567a1582f0c1b9e024fda9ed53))
|
||||
- *(deps)* Update rust crate serde to v1.0.208 (#43) - ([8073e90](https://codeberg.org/ThetaDev/artifactview/commit/8073e90f685d80565db81e23769841c16c2af261))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.125 (#44) - ([4b3639a](https://codeberg.org/ThetaDev/artifactview/commit/4b3639aea7beed4ebc421fdfe26823be164d5c1c))
|
||||
- *(deps)* Update rust crate comrak to 0.27.0 (#46) - ([3cef317](https://codeberg.org/ThetaDev/artifactview/commit/3cef3175767170824f604fcccdc912bf09745bf9))
|
||||
- *(deps)* Update rust crate comrak to 0.28.0 (#47) - ([a88a3c6](https://codeberg.org/ThetaDev/artifactview/commit/a88a3c6103e776a4d10b3f7e6e9a37a2c672cfba))
|
||||
- *(deps)* Update rust crate quick_cache to v0.6.6 (#50) - ([73959c0](https://codeberg.org/ThetaDev/artifactview/commit/73959c00f2c54b682c3db8640ca12319ce4ee37d))
|
||||
- *(deps)* Update rust crate reqwest to v0.12.7 (#51) - ([22d5626](https://codeberg.org/ThetaDev/artifactview/commit/22d5626bf025783a127cd99faa0052778e0253b1))
|
||||
- *(deps)* Update rust crate serde to v1.0.210 (#52) - ([f8c9d6f](https://codeberg.org/ThetaDev/artifactview/commit/f8c9d6f7cb475f4642f5e4f11108c4d053cc8c7e))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.128 (#57) - ([a48e23b](https://codeberg.org/ThetaDev/artifactview/commit/a48e23beceefc1b4c51910dc7114ab62abfd189c))
|
||||
- *(deps)* Update rust crate quick_cache to v0.6.9 (#59) - ([4eb2b22](https://codeberg.org/ThetaDev/artifactview/commit/4eb2b22a8f1c2b1b28f72303d364708d04790eca))
|
||||
- *(deps)* Update rust crate tower-http to 0.6.0 (#61) - ([1d03f5b](https://codeberg.org/ThetaDev/artifactview/commit/1d03f5b4b09596a68893126d8b177226b62fb38a))
|
||||
- *(deps)* Update rust crate axum to v0.7.6 (#62) - ([61f65e5](https://codeberg.org/ThetaDev/artifactview/commit/61f65e54db431b3e94d21188920ae88233c44d3b))
|
||||
- *(deps)* Update rust crate quick-xml to v0.36.2 (#64) - ([de4459f](https://codeberg.org/ThetaDev/artifactview/commit/de4459f646444a949c390394524f284a1944a0da))
|
||||
- *(deps)* Update rust crate axum-extra to v0.9.4 (#63) - ([6619ef6](https://codeberg.org/ThetaDev/artifactview/commit/6619ef60e44832dd8839bcaf82d43707965b772a))
|
||||
- *(deps)* Update rust crate thiserror to v1.0.64 (#66) - ([923f97f](https://codeberg.org/ThetaDev/artifactview/commit/923f97f8e9d0855ff97685496221a180018ae686))
|
||||
- *(deps)* Update rust crate tower-http to v0.6.1 (#68) - ([ca0734d](https://codeberg.org/ThetaDev/artifactview/commit/ca0734d47072d555ba07b2f512975b9379305a58))
|
||||
- *(deps)* Update rust crate secrecy to 0.10.0 (#60) - ([72d0cde](https://codeberg.org/ThetaDev/artifactview/commit/72d0cde37075220cc6a938840ad30781ecdcbaa7))
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- *(deps)* Update rust crate zip to v2.1.6 (#31) - ([7e0aaa8](https://codeberg.org/ThetaDev/artifactview/commit/7e0aaa8362005b56526ed5a6114f473893a5cf46))
|
||||
- *(deps)* Update rust crate flate2 to v1.0.31 (#34) - ([01e6a9c](https://codeberg.org/ThetaDev/artifactview/commit/01e6a9c8ad1f7c7dd5307a02a4a2b3c381aeacd6))
|
||||
- *(deps)* Update rust crate rstest to 0.22.0 (#35) - ([b9d0a29](https://codeberg.org/ThetaDev/artifactview/commit/b9d0a29741138a4dd7b758417b003c9bddc35f3e))
|
||||
- *(deps)* Update rust crate scraper to 0.20.0 (#36) - ([ca174a3](https://codeberg.org/ThetaDev/artifactview/commit/ca174a3aa21d0466930c2aa3291c2ecbed2ac31f))
|
||||
- *(deps)* Update rust crate axum-test to v15.3.1 (#42) - ([24171c9](https://codeberg.org/ThetaDev/artifactview/commit/24171c9800aa52270c203e5a5fc40f520b6ac74c))
|
||||
- *(deps)* Update rust crate tokio to v1.39.3 (#45) - ([63978d7](https://codeberg.org/ThetaDev/artifactview/commit/63978d79f9c3e276e59d7f3a558cec5f8f88e17e))
|
||||
- *(deps)* Update rust crate flate2 to v1.0.33 (#48) - ([980e596](https://codeberg.org/ThetaDev/artifactview/commit/980e5968eaa909c9d7a72d78156d3465c4599abe))
|
||||
- *(deps)* Update rust crate tokio-util to v0.7.12 (#49) - ([78179fd](https://codeberg.org/ThetaDev/artifactview/commit/78179fd73791c47cd3a60a37e704472109b50c15))
|
||||
- *(deps)* Update rust crate insta to v1.40.0 (#54) - ([03597d1](https://codeberg.org/ThetaDev/artifactview/commit/03597d10e58eca8a56e4708971cac1750e7707f4))
|
||||
- *(deps)* Update rust crate tokio to v1.40.0 (#55) - ([97b9610](https://codeberg.org/ThetaDev/artifactview/commit/97b9610f308c8ad0a083f6522c8b661c4b2c1e4f))
|
||||
- *(deps)* Update rust crate zip to v2.2.0 (#56) - ([3f719ac](https://codeberg.org/ThetaDev/artifactview/commit/3f719ac939612722b82b8bad2744b4570ff40df7))
|
||||
- *(deps)* Update rust crate once_cell to v1.20.0 (#58) - ([f8a95c8](https://codeberg.org/ThetaDev/artifactview/commit/f8a95c82e4a627d10906330327e94cd829d6f4c8))
|
||||
- *(deps)* Update rust crate axum-test to v15.7.1 (#53) - ([7a92941](https://codeberg.org/ThetaDev/artifactview/commit/7a92941452b0e2f59e0ceda49a378f0ef43784cb))
|
||||
- *(deps)* Update rust crate axum-test to v15.7.3 (#65) - ([82ca6dd](https://codeberg.org/ThetaDev/artifactview/commit/82ca6dd6bff9d8cb87a349cc8edb46f42a9721fc))
|
||||
- *(deps)* Update rust crate axum-test to v16 (#69) - ([dbcee49](https://codeberg.org/ThetaDev/artifactview/commit/dbcee4945c0be57534bdd2d7d98d85767e0cf92c))
|
||||
- *(deps)* Update rust crate flate2 to v1.0.34 (#70) - ([6f3544e](https://codeberg.org/ThetaDev/artifactview/commit/6f3544e3d8051697053cad5a751df6a1b4bc658b))
|
||||
- *(deps)* Update rust crate axum to v0.7.7 (#71) - ([01c494c](https://codeberg.org/ThetaDev/artifactview/commit/01c494c2773dc67f922beed7e84aa2ff59fb575f))
|
||||
- *(deps)* Update rust crate axum-test to v16.0.1 (#72) - ([2367512](https://codeberg.org/ThetaDev/artifactview/commit/23675124bdb15e01f037a6380f97f4d2921a34eb))
|
||||
- *(deps)* Update rust crate once_cell to v1.20.1 (#73) - ([484f113](https://codeberg.org/ThetaDev/artifactview/commit/484f1136469f5459b1d464944621e9db450d2f6a))
|
||||
- *(deps)* Update rust crate axum-test to v16.1.0 (#74) - ([2ed0cdc](https://codeberg.org/ThetaDev/artifactview/commit/2ed0cdc4a372c0a40de2ddc70a14b658a3619eec))
|
||||
- *(deps)* Update rust crate regex to v1.11.0 (#75) - ([e436f77](https://codeberg.org/ThetaDev/artifactview/commit/e436f77c3e4969d83c42d45201c15f0375d90ad0))
|
||||
- *(deps)* Update rust crate rstest to 0.23.0 (#76) - ([7c684eb](https://codeberg.org/ThetaDev/artifactview/commit/7c684eb5657eda84668bf3a1aadf38f1e4ac51db))
|
||||
- *(deps)* Update rust crate reqwest to v0.12.8 (#77) - ([a3f028f](https://codeberg.org/ThetaDev/artifactview/commit/a3f028f2ad11d3e599bf20d1f92679bf8b8dafc4))
|
||||
- *(deps)* Update rust crate async-compression to v0.4.13 (#78) - ([7cefbd4](https://codeberg.org/ThetaDev/artifactview/commit/7cefbd4a67e5636f046177f35fce14fff6300cb4))
|
||||
- *(deps)* Update rust crate once_cell to v1.20.2 (#79) - ([8309901](https://codeberg.org/ThetaDev/artifactview/commit/8309901a8c658cdf948889df57b731147d77c949))
|
||||
- *(deps)* Update rust crate pin-project to v1.1.6 (#80) - ([6ca7088](https://codeberg.org/ThetaDev/artifactview/commit/6ca7088b9c7ecd001df52f9cb35e86301c231bbb))
|
||||
- *(deps)* Update rust crate axum-test to v16.2.0 (#81) - ([e63baec](https://codeberg.org/ThetaDev/artifactview/commit/e63baec2490e069953f63d158f9af212f154055b))
|
||||
- *(deps)* Update rust crate secrecy to v0.10.3 (#82) - ([a2dc40f](https://codeberg.org/ThetaDev/artifactview/commit/a2dc40f4443cb3c3d1c7cf2b9e7178777c4b73e7))
|
||||
- *(deps)* Update rust crate async-compression to v0.4.14 (#83) - ([51f098f](https://codeberg.org/ThetaDev/artifactview/commit/51f098f4ada63ddc550774a60a81eb3d55697b44))
|
||||
- *(deps)* Update rust crate comrak to 0.29.0 (#84) - ([5da4074](https://codeberg.org/ThetaDev/artifactview/commit/5da4074bb9e87c9d17ed70669b6e47a3d57b1e8f))
|
||||
|
||||
|
||||
## [v0.4.6](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.5..v0.4.6) - 2024-07-28
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(deps)* Update rust crate serde_json to v1.0.120 (#14) - ([06f9c27](https://codeberg.org/ThetaDev/artifactview/commit/06f9c278a857a272580ee1c4f8e58078556accda))
|
||||
- *(deps)* Update rust crate quick_cache to 0.6.0 (#15) - ([2e06266](https://codeberg.org/ThetaDev/artifactview/commit/2e0626667e5fc344df9870cd8c924b9dd60886bb))
|
||||
- *(deps)* Update rust crate serde to v1.0.204 (#16) - ([1321386](https://codeberg.org/ThetaDev/artifactview/commit/13213861ba0ea30504caa50da2a99af567876e5c))
|
||||
- *(deps)* Update rust crate quick-xml to 0.36.0 (#19) - ([5f94794](https://codeberg.org/ThetaDev/artifactview/commit/5f94794d24f300762da2ab162f4336508b516eda))
|
||||
- *(deps)* Update rust crate async-compression to v0.4.12 (#22) - ([88c635c](https://codeberg.org/ThetaDev/artifactview/commit/88c635cbad535eb902ea54a314e8511965a792b4))
|
||||
- *(deps)* Update rust crate quick-xml to v0.36.1 (#23) - ([c5c9f85](https://codeberg.org/ThetaDev/artifactview/commit/c5c9f85e4baec58dcc2001ac3a7f005c7f501557))
|
||||
- *(deps)* Update rust crate quick_cache to v0.6.2 (#24) - ([a5d4973](https://codeberg.org/ThetaDev/artifactview/commit/a5d49733fd84ba37e8c258f191bf79f4affb86f9))
|
||||
- *(deps)* Update rust crate thiserror to v1.0.63 (#25) - ([b67b173](https://codeberg.org/ThetaDev/artifactview/commit/b67b1730b1e9c06b4ff99774c37c71391f48f93a))
|
||||
- *(deps)* Update rust crate comrak to 0.26.0 (#27) - ([642930d](https://codeberg.org/ThetaDev/artifactview/commit/642930d397efa106267bd2aff8c413ab4173a5c6))
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- *(deps)* Update rust crate axum-test to v15.3.0 (#17) - ([a88f1ba](https://codeberg.org/ThetaDev/artifactview/commit/a88f1ba91c054fdb267f0edef10aacf14a909694))
|
||||
- *(deps)* Lock file maintenance (#18) - ([f41a922](https://codeberg.org/ThetaDev/artifactview/commit/f41a92243c91086d5d774410b1452303fad64ccf))
|
||||
- *(deps)* Update rust crate env_logger to v0.11.5 (#20) - ([c9db056](https://codeberg.org/ThetaDev/artifactview/commit/c9db0567916e500017034d6a99eb48a25a1671e0))
|
||||
- *(deps)* Update rust crate scraper to v0.19.1 (#21) - ([1a5c056](https://codeberg.org/ThetaDev/artifactview/commit/1a5c056204b488e36ef95145b05a674c661a2154))
|
||||
- *(deps)* Update rust crate tokio to v1.39.1 (#26) - ([057a365](https://codeberg.org/ThetaDev/artifactview/commit/057a365a0ecafe00fa84e53c736272f5db26f0f1))
|
||||
- *(deps)* Update rust crate tokio to v1.39.2 (#28) - ([3ae7f88](https://codeberg.org/ThetaDev/artifactview/commit/3ae7f8813e19818098a6b67d0c6770db8a79defe))
|
||||
- *(deps)* Update rust crate zip to v2 (#9) - ([a7160fa](https://codeberg.org/ThetaDev/artifactview/commit/a7160fadde6c95c6c03c90c5d2301738c8e559c2))
|
||||
|
||||
|
||||
## [v0.4.5](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.4..v0.4.5) - 2024-07-01
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- Update PR comment format - ([197eeea](https://codeberg.org/ThetaDev/artifactview/commit/197eeea75baa8ba44d27ec46c5f552028052869b))
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(deps)* Update rust crate serde_json to v1.0.118 (#5) - ([fc3b5a1](https://codeberg.org/ThetaDev/artifactview/commit/fc3b5a1530985012ff8364a8fa676626e7544eaf))
|
||||
- *(deps)* Update rust crate quick-xml to 0.34.0 (#8) - ([595a9d0](https://codeberg.org/ThetaDev/artifactview/commit/595a9d0f4115faf5056653406b6d05bf671dc2b3))
|
||||
- *(deps)* Update rust crate mime_guess to v2.0.5 (#10) - ([94191f8](https://codeberg.org/ThetaDev/artifactview/commit/94191f878d774bef165cca850fcdf00fde16d662))
|
||||
- *(deps)* Update rust crate quick-xml to 0.35.0 (#11) - ([7ebe881](https://codeberg.org/ThetaDev/artifactview/commit/7ebe8815462f3e704a79af038b9b1850ed4677ed))
|
||||
- *(deps)* Update rust crate serde_json to v1.0.119 (#12) - ([2525022](https://codeberg.org/ThetaDev/artifactview/commit/2525022df76b3c16951983c14a55fa9617114a8e))
|
||||
- Swap crc and size column (#3) - ([7d2c686](https://codeberg.org/ThetaDev/artifactview/commit/7d2c68630ec6e75061c050a4c8b035edb472d150))
|
||||
|
||||
### 📚 Documentation
|
||||
|
||||
- Make example CI step compatible with GitHub+Forgejo - ([39f0019](https://codeberg.org/ThetaDev/artifactview/commit/39f0019455cc23f1b8c39b77d2aaa5af278731a9))
|
||||
- Update README - ([40ae3a7](https://codeberg.org/ThetaDev/artifactview/commit/40ae3a7f557c63a0bb2abcd595218c8ec1095fe7))
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- *(deps)* Update rust crate proptest to v1.5.0 (#6) - ([797fc0c](https://codeberg.org/ThetaDev/artifactview/commit/797fc0c04c2a51811a24cfc431496e6e5dbf0bea))
|
||||
- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([cec3aa3](https://codeberg.org/ThetaDev/artifactview/commit/cec3aa3fc02e6a871d9c221f61c3f2d8828f9f63))
|
||||
- *(deps)* Lock file maintenance (#13) - ([9767167](https://codeberg.org/ThetaDev/artifactview/commit/9767167661e22775614cea7b888a19ee16c17d65))
|
||||
|
||||
|
||||
## [v0.4.4](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.3..v0.4.4) - 2024-06-22
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- Use forge aliases for PR comment links - ([3690b02](https://codeberg.org/ThetaDev/artifactview/commit/3690b0244cf47d0d73511f5f69f5d12abe0f1837))
|
||||
|
||||
|
||||
## [v0.4.3](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.2..v0.4.3) - 2024-06-22
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- 404 error on GitHub comment creation - ([d8c3ab4](https://codeberg.org/ThetaDev/artifactview/commit/d8c3ab4f36727f118b31683db87d287d9945ee14))
|
||||
|
||||
|
||||
## [v0.4.2](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.1..v0.4.2) - 2024-06-22
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
|
1589
Cargo.lock
generated
1589
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
26
Cargo.toml
26
Cargo.toml
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "artifactview"
|
||||
version = "0.4.2"
|
||||
version = "0.4.8"
|
||||
edition = "2021"
|
||||
authors = ["ThetaDev <thetadev@magenta.de>"]
|
||||
license = "MIT"
|
||||
|
@ -21,7 +21,7 @@ async_zip = { path = "crates/async_zip", features = [
|
|||
"tokio-fs",
|
||||
"deflate",
|
||||
] }
|
||||
axum = { version = "0.7.5", default-features = false, features = [
|
||||
axum = { version = "0.8.0", default-features = false, features = [
|
||||
"http1",
|
||||
"http2",
|
||||
"json",
|
||||
|
@ -29,13 +29,13 @@ axum = { version = "0.7.5", default-features = false, features = [
|
|||
"tokio",
|
||||
"tracing",
|
||||
] }
|
||||
axum-extra = { version = "0.9.3", features = ["typed-header"] }
|
||||
comrak = { version = "0.24.1", default-features = false }
|
||||
axum-extra = { version = "0.10.0", features = ["typed-header"] }
|
||||
comrak = { version = "0.35.0", default-features = false }
|
||||
dotenvy = "0.15.7"
|
||||
envy = { path = "crates/envy" }
|
||||
flate2 = "1.0.30"
|
||||
futures-lite = "2.3.0"
|
||||
governor = "0.6.3"
|
||||
governor = "0.8.0"
|
||||
headers = "0.4.0"
|
||||
http = "1.1.0"
|
||||
humansize = "2.1.3"
|
||||
|
@ -46,16 +46,16 @@ once_cell = "1.19.0"
|
|||
path_macro = "1.0.0"
|
||||
percent-encoding = "2.3.1"
|
||||
pin-project = "1.1.5"
|
||||
quick_cache = "0.5.1"
|
||||
quick_cache = "0.6.0"
|
||||
rand = "0.8.5"
|
||||
regex = "1.10.4"
|
||||
reqwest = { version = "0.12.4", default-features = false, features = [
|
||||
"json",
|
||||
"stream",
|
||||
] }
|
||||
secrecy = { version = "0.8.0", features = ["serde"] }
|
||||
secrecy = { version = "0.10.0", features = ["serde"] }
|
||||
serde = { version = "1.0.203", features = ["derive"] }
|
||||
serde-env = "0.1.1"
|
||||
serde-env = "0.2.0"
|
||||
serde-hex = "0.1.0"
|
||||
serde_json = "1.0.117"
|
||||
serde_urlencoded = "0.7.1"
|
||||
|
@ -66,11 +66,11 @@ syntect = { version = "5.2.0", default-features = false, features = [
|
|||
"html",
|
||||
"regex-onig",
|
||||
] }
|
||||
thiserror = "1.0.61"
|
||||
thiserror = "2.0.0"
|
||||
time = { version = "0.3.36", features = ["serde-human-readable", "macros"] }
|
||||
tokio = { version = "1.37.0", features = ["macros", "fs", "rt-multi-thread"] }
|
||||
tokio-util = { version = "0.7.11", features = ["io"] }
|
||||
tower-http = { version = "0.5.2", features = ["trace", "set-header"] }
|
||||
tower-http = { version = "0.6.0", features = ["trace", "set-header"] }
|
||||
tracing = "0.1.40"
|
||||
tracing-subscriber = "0.3.18"
|
||||
url = "2.5.0"
|
||||
|
@ -80,13 +80,13 @@ yarte = { version = "0.15.7", features = ["json"] }
|
|||
yarte_helpers = "0.15.8"
|
||||
|
||||
[dev-dependencies]
|
||||
axum-test = "15.0.1"
|
||||
axum-test = "17.0.0"
|
||||
flate2 = "1.0.30"
|
||||
httpdate = "1.0.3"
|
||||
insta = { version = "1.39.0", features = ["json"] }
|
||||
proptest = "1.4.0"
|
||||
rstest = { version = "0.20.0", default-features = false }
|
||||
scraper = "0.19.0"
|
||||
rstest = { version = "0.24.0", default-features = false }
|
||||
scraper = "0.22.0"
|
||||
temp_testdir = "0.2.3"
|
||||
|
||||
[workspace]
|
||||
|
|
19
README.md
19
README.md
|
@ -22,7 +22,8 @@ teammates.
|
|||
- 👁️ Viewer for Markdown, syntax-highlighted code and JUnit test reports
|
||||
- 🐵 Greasemonkey userscript to automatically add a "View artifact" button to
|
||||
GitHub/Gitea/Forgejo
|
||||
- 🦀 Fast and efficient, only extracts files from zip archive if necessary
|
||||
- 🦀 Fast and efficient, only extracts files from zip archive if the client does not support gzip
|
||||
- 🔗 Automatically creates pull request comments with links to all build artifacts
|
||||
|
||||
## How to use
|
||||
|
||||
|
@ -70,8 +71,7 @@ The script adds a "View artifact" link with an eye icon next to every CI artifac
|
|||
both GitHub and Forgejo.
|
||||
|
||||
If you want to give every collaborator to your project easy access to previews, you can
|
||||
use Artifactview to automatically create a pull request comments with links to the
|
||||
artifacts.
|
||||
automatically create a comment with links to the artifacts under every pull request.
|
||||
|
||||

|
||||
|
||||
|
@ -82,7 +82,9 @@ artifacts).
|
|||
- name: 🔗 Artifactview PR comment
|
||||
if: ${{ always() && github.event_name == 'pull_request' }}
|
||||
run: |
|
||||
curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER\", \"pr\": ${{ github.event.number }}}"
|
||||
if [[ "$GITEA_ACTIONS" == "true" ]]; then RUN_NUMBER="$GITHUB_RUN_NUMBER"; else RUN_NUMBER="$GITHUB_RUN_ID"; fi
|
||||
curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" \
|
||||
--data '{"url": "'"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER"'", "pr": ${{ github.event.number }}}'
|
||||
```
|
||||
|
||||
## API
|
||||
|
@ -254,11 +256,12 @@ Example list: `foo;bar`, example map: `foo=>f1;bar=>b1`
|
|||
### Access tokens
|
||||
|
||||
GitHub does not allow downloading artifacts for public repositories for unauthenticated
|
||||
users. So you need to setup an access token to use Artifactview with GitHub. These are
|
||||
the permissions that need to be enabled:
|
||||
users. So you need to setup an access token to use Artifactview with GitHub.
|
||||
|
||||
- Repository access: All repositories
|
||||
- Repository permissions: Pull requests (Read and write)
|
||||
If you are not using the `prComment` feature, you can use a fine-grained access token
|
||||
with the "Public repositories (read-only)" permission. If you want to create pull
|
||||
request comments, you have to use a classic token with the "public_repo" scope enabled
|
||||
(the fine-grained tokens did not work in my test).
|
||||
|
||||
Forgejo does not require access tokens to download artifacts on public repositories, so
|
||||
you only need to create a token if you want to use the `prComment`-API. In this case,
|
||||
|
|
|
@ -37,7 +37,7 @@ rustdoc-args = ["--cfg", "docsrs"]
|
|||
crc32fast = "1"
|
||||
futures-lite = { version = "2.1.0", default-features = false, features = ["std"] }
|
||||
pin-project = "1"
|
||||
thiserror = "1"
|
||||
thiserror = "2"
|
||||
|
||||
async-compression = { version = "0.4.2", default-features = false, features = ["futures-io"], optional = true }
|
||||
chrono = { version = "0.4", default-features = false, features = ["clock"], optional = true }
|
||||
|
@ -49,7 +49,7 @@ tokio-util = { version = "0.7", features = ["compat"], optional = true }
|
|||
tokio = { version = "1", features = ["full"] }
|
||||
tokio-util = { version = "0.7", features = ["compat"] }
|
||||
env_logger = "0.11.2"
|
||||
zip = "0.6.3"
|
||||
zip = "2.2.2"
|
||||
|
||||
# shared across multiple examples
|
||||
# anyhow = "1"
|
||||
|
|
|
@ -51,7 +51,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, R, E> AsyncRead for ZipEntryReader<'a, R, E>
|
||||
impl<R, E> AsyncRead for ZipEntryReader<'_, R, E>
|
||||
where
|
||||
R: AsyncBufRead + Unpin,
|
||||
{
|
||||
|
@ -60,7 +60,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, R, E> ZipEntryReader<'a, R, E>
|
||||
impl<R, E> ZipEntryReader<'_, R, E>
|
||||
where
|
||||
R: AsyncBufRead + Unpin,
|
||||
{
|
||||
|
@ -118,7 +118,7 @@ enum OwnedEntry<'a> {
|
|||
Borrow(&'a ZipEntry),
|
||||
}
|
||||
|
||||
impl<'a> OwnedEntry<'a> {
|
||||
impl OwnedEntry<'_> {
|
||||
pub fn entry(&self) -> &'_ ZipEntry {
|
||||
match self {
|
||||
OwnedEntry::Owned(entry) => entry,
|
||||
|
|
|
@ -17,7 +17,7 @@ pub(crate) enum OwnedReader<'a, R> {
|
|||
Borrow(#[pin] &'a mut R),
|
||||
}
|
||||
|
||||
impl<'a, R> OwnedReader<'a, R>
|
||||
impl<R> OwnedReader<'_, R>
|
||||
where
|
||||
R: AsyncBufRead + Unpin,
|
||||
{
|
||||
|
@ -30,7 +30,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, R> AsyncBufRead for OwnedReader<'a, R>
|
||||
impl<R> AsyncBufRead for OwnedReader<'_, R>
|
||||
where
|
||||
R: AsyncBufRead + Unpin,
|
||||
{
|
||||
|
@ -49,7 +49,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, R> AsyncRead for OwnedReader<'a, R>
|
||||
impl<R> AsyncRead for OwnedReader<'_, R>
|
||||
where
|
||||
R: AsyncBufRead + Unpin,
|
||||
{
|
||||
|
|
|
@ -64,7 +64,7 @@ impl<'b, W: AsyncWrite + Unpin> CompressedAsyncWriter<'b, W> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'b, W: AsyncWrite + Unpin> AsyncWrite for CompressedAsyncWriter<'b, W> {
|
||||
impl<W: AsyncWrite + Unpin> AsyncWrite for CompressedAsyncWriter<'_, W> {
|
||||
fn poll_write(mut self: Pin<&mut Self>, cx: &mut Context, buf: &[u8]) -> Poll<std::result::Result<usize, Error>> {
|
||||
match *self {
|
||||
CompressedAsyncWriter::Stored(ref mut inner) => Pin::new(inner).poll_write(cx, buf),
|
||||
|
|
|
@ -251,7 +251,7 @@ impl<'b, W: AsyncWrite + Unpin> EntryStreamWriter<'b, W> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, W: AsyncWrite + Unpin> AsyncWrite for EntryStreamWriter<'a, W> {
|
||||
impl<W: AsyncWrite + Unpin> AsyncWrite for EntryStreamWriter<'_, W> {
|
||||
fn poll_write(mut self: Pin<&mut Self>, cx: &mut Context, buf: &[u8]) -> Poll<std::result::Result<usize, Error>> {
|
||||
let poll = Pin::new(&mut self.writer).poll_write(cx, buf);
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ fn generate_zip64many_zip() -> std::path::PathBuf {
|
|||
|
||||
let zip_file = std::fs::File::create(&path).unwrap();
|
||||
let mut zip = zip::ZipWriter::new(zip_file);
|
||||
let options = FileOptions::default().compression_method(zip::CompressionMethod::Stored);
|
||||
let options = FileOptions::<()>::default().compression_method(zip::CompressionMethod::Stored);
|
||||
|
||||
for i in 0..2_u32.pow(16) + 1 {
|
||||
zip.start_file(format!("{i}.txt"), options).unwrap();
|
||||
|
|
|
@ -36,7 +36,7 @@ async fn test_write_zip64_file() {
|
|||
let cursor = std::io::Cursor::new(buffer);
|
||||
let mut zip = zip::read::ZipArchive::new(cursor).unwrap();
|
||||
let mut file1 = zip.by_name("file1").unwrap();
|
||||
assert_eq!(file1.extra_data(), &[] as &[u8]);
|
||||
assert_eq!(file1.extra_data(), Some(&[] as &[u8]));
|
||||
let mut buffer = Vec::new();
|
||||
file1.read_to_end(&mut buffer).unwrap();
|
||||
assert_eq!(buffer.as_slice(), &[0, 0, 0, 0]);
|
||||
|
|
|
@ -77,7 +77,7 @@ where
|
|||
|
||||
struct Val(String, String);
|
||||
|
||||
impl<'de> IntoDeserializer<'de, Error> for Val {
|
||||
impl IntoDeserializer<'_, Error> for Val {
|
||||
type Deserializer = Self;
|
||||
|
||||
fn into_deserializer(self) -> Self::Deserializer {
|
||||
|
@ -87,7 +87,7 @@ impl<'de> IntoDeserializer<'de, Error> for Val {
|
|||
|
||||
struct VarName(String);
|
||||
|
||||
impl<'de> IntoDeserializer<'de, Error> for VarName {
|
||||
impl IntoDeserializer<'_, Error> for VarName {
|
||||
type Deserializer = Self;
|
||||
|
||||
fn into_deserializer(self) -> Self::Deserializer {
|
||||
|
@ -248,7 +248,7 @@ struct Deserializer<'de, Iter: Iterator<Item = (String, String)>> {
|
|||
inner: MapDeserializer<'de, Vars<Iter>, Error>,
|
||||
}
|
||||
|
||||
impl<'de, Iter: Iterator<Item = (String, String)>> Deserializer<'de, Iter> {
|
||||
impl<Iter: Iterator<Item = (String, String)>> Deserializer<'_, Iter> {
|
||||
fn new(vars: Iter) -> Self {
|
||||
Deserializer {
|
||||
inner: MapDeserializer::new(Vars(vars)),
|
||||
|
@ -308,7 +308,7 @@ where
|
|||
/// These types are created with with the [prefixed](fn.prefixed.html) module function
|
||||
pub struct Prefixed<'a>(Cow<'a, str>);
|
||||
|
||||
impl<'a> Prefixed<'a> {
|
||||
impl Prefixed<'_> {
|
||||
/// Deserializes a type based on prefixed env variables
|
||||
pub fn from_env<T>(&self) -> Result<T>
|
||||
where
|
||||
|
@ -390,7 +390,7 @@ impl<'a> SplitEscaped<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a> Iterator for SplitEscaped<'a> {
|
||||
impl Iterator for SplitEscaped<'_> {
|
||||
type Item = String;
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
|
|
|
@ -7,8 +7,8 @@ license = "BSD-2-Clause"
|
|||
repository = "https://github.com/borisfaure/junit-parser"
|
||||
|
||||
[dependencies]
|
||||
quick-xml = { version = "0.32.0", features = ["escape-html"] }
|
||||
thiserror = "1.0.61"
|
||||
quick-xml = { version = "0.37.0", features = ["escape-html"] }
|
||||
thiserror = "2.0.0"
|
||||
time = { version = "0.3.36", features = ["parsing", "serde-well-known"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
|
||||
|
|
14
renovate.json
Normal file
14
renovate.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:best-practices",
|
||||
":semanticCommitTypeAll(chore)",
|
||||
":preserveSemverRanges"
|
||||
],
|
||||
"automerge": true,
|
||||
"automergeStrategy": "squash",
|
||||
"osvVulnerabilityAlerts": true,
|
||||
"labels": ["dependency-upgrade"],
|
||||
"enabledManagers": ["cargo"],
|
||||
"prHourlyLimit": 5
|
||||
}
|
46
src/app.rs
46
src/app.rs
|
@ -11,12 +11,13 @@ use std::{
|
|||
use async_zip::tokio::read::ZipEntryReader;
|
||||
use axum::{
|
||||
body::Body,
|
||||
extract::{Host, Query as XQuery, Request, State},
|
||||
extract::{Query as XQuery, Request, State},
|
||||
http::{Response, Uri},
|
||||
response::{IntoResponse, Redirect},
|
||||
routing::{any, get, post},
|
||||
Json, RequestExt, Router,
|
||||
};
|
||||
use axum_extra::extract::Host;
|
||||
use futures_lite::AsyncReadExt as LiteAsyncReadExt;
|
||||
use governor::{Quota, RateLimiter};
|
||||
use headers::{ContentType, HeaderMapExt};
|
||||
|
@ -175,7 +176,7 @@ impl App {
|
|||
.route("/.well-known/api/prComment", post(Self::pr_comment))
|
||||
// Prevent access to the .well-known folder since it enables abuse
|
||||
// (e.g. SSL certificate registration by an attacker)
|
||||
.route("/.well-known/*path", any(|| async { Error::Inaccessible }))
|
||||
.route("/.well-known/{*path}", any(|| async { Error::Inaccessible }))
|
||||
// Serve artifact pages
|
||||
.route("/", get(Self::get_page))
|
||||
.fallback(get(Self::get_page))
|
||||
|
@ -672,7 +673,7 @@ impl App {
|
|||
.extract::<Json<PrCommentReq>, _>()
|
||||
.await
|
||||
.map_err(|e| Error::BadRequest(e.body_text().into()))?;
|
||||
let query = RunQuery::from_forge_url(&req.url)?;
|
||||
let query = RunQuery::from_forge_url_alias(&req.url, &state.i.cfg.load().site_aliases)?;
|
||||
|
||||
if let Some(limiter) = &state.i.lim_pr_comment {
|
||||
limiter.check_key(&ip).map_err(Error::from)?;
|
||||
|
@ -844,6 +845,11 @@ fn pr_comment_text(p: PrCommentTextParams) -> String {
|
|||
let query = p.query;
|
||||
let mut content = "### ".to_owned();
|
||||
let mut prevln = "- ".to_owned();
|
||||
let a_opts = r#"target="_blank" rel="noopener noreferrer""#;
|
||||
let date_started = p
|
||||
.run
|
||||
.date_started
|
||||
.and_then(|d| d.to_offset(time::UtcOffset::UTC).format(&DATE_FORMAT).ok());
|
||||
|
||||
let mut prev_builds = None;
|
||||
let mut np_content = None;
|
||||
|
@ -866,10 +872,7 @@ fn pr_comment_text(p: PrCommentTextParams) -> String {
|
|||
|
||||
let write_link_icon = |s: &mut String, title: &str, href: &str| {
|
||||
let (title_pfx, title) = util::split_icon_prefix(title);
|
||||
_ = write!(
|
||||
s,
|
||||
r#"{title_pfx}<a href="{href}" target="_blank" rel="noopener noreferrer">{title}</a>"#,
|
||||
);
|
||||
_ = write!(s, r#"{title_pfx}<a href="{href}" {a_opts}>{title}</a>"#,);
|
||||
};
|
||||
|
||||
// Comment title
|
||||
|
@ -877,17 +880,23 @@ fn pr_comment_text(p: PrCommentTextParams) -> String {
|
|||
let artifacts_url = format!("{}/?url={}", p.cfg.main_url(), run_url);
|
||||
write_link_icon(
|
||||
&mut content,
|
||||
p.title.unwrap_or("👁️ Latest build artifacts"),
|
||||
p.title.unwrap_or("Latest build artifacts"),
|
||||
&artifacts_url,
|
||||
);
|
||||
_ = write!(&mut content, " (Run [#{}]({}), ", query.run, run_url);
|
||||
_ = write!(&mut content, "\n\n Run [#{}]({}) · ", query.run, run_url);
|
||||
write_commit(&mut content, &p.run.head_sha);
|
||||
_ = content.write_str(")\n\n");
|
||||
if let Some(date_started) = &date_started {
|
||||
_ = write!(&mut content, " · {} UTC", date_started);
|
||||
}
|
||||
_ = content.write_str("\n\n");
|
||||
|
||||
// Previous run line
|
||||
_ = write!(&mut prevln, "[#{}]({}) [", query.run, run_url);
|
||||
write_commit(&mut prevln, &p.run.head_sha);
|
||||
_ = write!(&mut prevln, "] [Artifacts]({artifacts_url}): ");
|
||||
_ = write!(
|
||||
&mut prevln,
|
||||
"] <a href=\"{artifacts_url}\" {a_opts}>Artifacts</a>: "
|
||||
);
|
||||
|
||||
for a in p.artifacts.iter().filter(|a| !a.expired) {
|
||||
let mut url = p
|
||||
|
@ -910,8 +919,8 @@ fn pr_comment_text(p: PrCommentTextParams) -> String {
|
|||
_ = content.write_str("<br>\n");
|
||||
_ = write!(
|
||||
&mut prevln,
|
||||
r#" <a href="{}" target="_blank" rel="noopener noreferrer">`{}`</a>,"#,
|
||||
url, a.name
|
||||
r#" <a href="{url}" {a_opts}>`{}`</a>,"#,
|
||||
a.name
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -919,15 +928,8 @@ fn pr_comment_text(p: PrCommentTextParams) -> String {
|
|||
prevln.pop();
|
||||
}
|
||||
|
||||
if let Some(date_started) = &p.run.date_started {
|
||||
_ = write!(
|
||||
&mut prevln,
|
||||
" ({} UTC)",
|
||||
date_started
|
||||
.to_offset(time::UtcOffset::UTC)
|
||||
.format(&DATE_FORMAT)
|
||||
.unwrap_or_default()
|
||||
);
|
||||
if let Some(date_started) = &date_started {
|
||||
_ = write!(&mut prevln, " ({} UTC)", date_started);
|
||||
}
|
||||
|
||||
if np_content.is_some() || prev_builds.is_some() {
|
||||
|
|
|
@ -269,6 +269,7 @@ impl ArtifactApi {
|
|||
}
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "error", skip_all)]
|
||||
pub async fn list(&self, query: &RunQuery, cached: bool) -> Result<Vec<Artifact>> {
|
||||
let cache_key = query.cache_key();
|
||||
let fut = async {
|
||||
|
@ -290,6 +291,7 @@ impl ArtifactApi {
|
|||
}
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "error", skip_all)]
|
||||
pub async fn fetch(&self, query: &ArtifactQuery) -> Result<Artifact> {
|
||||
if query.is_github() {
|
||||
self.fetch_github(query).await
|
||||
|
@ -305,6 +307,7 @@ impl ArtifactApi {
|
|||
}
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "error", skip_all)]
|
||||
pub async fn download(&self, artifact: &Artifact, path: &Path) -> Result<()> {
|
||||
if artifact.expired {
|
||||
return Err(Error::Expired);
|
||||
|
@ -416,10 +419,9 @@ impl ArtifactApi {
|
|||
if let Err(e) = resp.error_for_status_ref() {
|
||||
let status = resp.status();
|
||||
let msg = resp.json::<ApiError>().await.ok();
|
||||
Err(Error::HttpClient(
|
||||
msg.map(|msg| msg.message).unwrap_or(e.to_string()).into(),
|
||||
status,
|
||||
))
|
||||
let msg_str = msg.map(|msg| msg.message).unwrap_or(e.to_string()).into();
|
||||
tracing::error!("API error: {msg_str}");
|
||||
Err(Error::HttpClient(msg_str, status))
|
||||
} else {
|
||||
Ok(resp)
|
||||
}
|
||||
|
@ -492,6 +494,7 @@ impl ArtifactApi {
|
|||
.header(header::AUTHORIZATION, format!("token {token}")))
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "error", skip_all)]
|
||||
pub async fn workflow_run(&self, query: &RunQuery) -> Result<WorkflowRun> {
|
||||
if query.is_github() {
|
||||
self.workflow_run_github(query).await
|
||||
|
@ -554,6 +557,7 @@ impl ArtifactApi {
|
|||
Ok(run.into())
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "error", skip_all)]
|
||||
pub async fn add_comment(
|
||||
&self,
|
||||
query: QueryRef<'_>,
|
||||
|
@ -621,8 +625,8 @@ impl ArtifactApi {
|
|||
) -> Result<u64> {
|
||||
if let Some(old_comment_id) = old_comment_id {
|
||||
let url = format!(
|
||||
"https://api.github.com/repos/{}/{}/issues/{}/comments/{}",
|
||||
query.user, query.repo, issue_id, old_comment_id
|
||||
"https://api.github.com/repos/{}/{}/issues/comments/{}",
|
||||
query.user, query.repo, old_comment_id
|
||||
);
|
||||
if recreate {
|
||||
Self::send_api_req_empty(self.req_github(Method::DELETE, url)?).await?;
|
||||
|
@ -650,6 +654,7 @@ impl ArtifactApi {
|
|||
Ok(new_c.id)
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "error", skip_all)]
|
||||
pub async fn find_comment(
|
||||
&self,
|
||||
query: QueryRef<'_>,
|
||||
|
@ -702,6 +707,7 @@ impl ArtifactApi {
|
|||
Ok(None)
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "error", skip_all)]
|
||||
pub async fn get_pr(&self, query: QueryRef<'_>, pr_id: u64) -> Result<PullRequest> {
|
||||
let req = if query.is_github() {
|
||||
self.get_github(format!(
|
||||
|
|
|
@ -5,7 +5,7 @@ use std::{
|
|||
sync::Arc,
|
||||
};
|
||||
|
||||
use secrecy::Secret;
|
||||
use secrecy::SecretString;
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::{
|
||||
|
@ -49,9 +49,9 @@ pub struct ConfigData {
|
|||
/// GitHub API token for downloading GitHub artifacts
|
||||
///
|
||||
/// Using a fine-grained token with public read permissions is recommended.
|
||||
pub github_token: Option<Secret<String>>,
|
||||
pub github_token: Option<SecretString>,
|
||||
/// Forgejo/Gitea API tokens by host
|
||||
pub forgejo_tokens: HashMap<String, Secret<String>>,
|
||||
pub forgejo_tokens: HashMap<String, SecretString>,
|
||||
/// Number of artifact indexes to keep in memory
|
||||
pub mem_cache_size: usize,
|
||||
/// Get the client IP address from a HTTP request header
|
||||
|
|
|
@ -164,8 +164,8 @@ impl RunQuery {
|
|||
.ok_or(Error::BadRequest("no repository".into()))?
|
||||
.to_ascii_lowercase();
|
||||
|
||||
if !path_segs.next().is_some_and(|s| s == "actions")
|
||||
|| !path_segs.next().is_some_and(|s| s == "runs")
|
||||
if path_segs.next().is_none_or(|s| s != "actions")
|
||||
|| path_segs.next().is_none_or(|s| s != "runs")
|
||||
{
|
||||
return Err(Error::BadRequest("invalid Actions URL".into()));
|
||||
}
|
||||
|
@ -402,7 +402,7 @@ impl<'de> Deserialize<'de> for QueryFilterList {
|
|||
{
|
||||
struct QueryFilterListVisitor;
|
||||
|
||||
impl<'de> Visitor<'de> for QueryFilterListVisitor {
|
||||
impl Visitor<'_> for QueryFilterListVisitor {
|
||||
type Value = QueryFilterList;
|
||||
|
||||
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
source: src/app.rs
|
||||
expression: res
|
||||
---
|
||||
### 👁️ <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1" target="_blank" rel="noopener noreferrer">Latest build artifacts</a> (Run [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1), [15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397))
|
||||
### <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1" target="_blank" rel="noopener noreferrer">Latest build artifacts</a>
|
||||
|
||||
Run [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) · [15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397) · 15.06.2024 01:30:00 UTC
|
||||
|
||||
🏠 <a href="https://code-thetadev-de--thetadev--test-actions--1-1.localhost:3000" target="_blank" rel="noopener noreferrer">Hello World ;-)</a><br>
|
||||
<a href="https://code-thetadev-de--thetadev--test-actions--1-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">Test</a><br>
|
||||
<!--NEXT_PREV - [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1): <a href="https://code-thetadev-de--thetadev--test-actions--1-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--1-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 01:30:00 UTC) -->
|
||||
<!--NEXT_PREV - [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1" target="_blank" rel="noopener noreferrer">Artifacts</a>: <a href="https://code-thetadev-de--thetadev--test-actions--1-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--1-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 01:30:00 UTC) -->
|
||||
|
|
|
@ -2,13 +2,15 @@
|
|||
source: src/app.rs
|
||||
expression: res
|
||||
---
|
||||
### 👁️ <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/2" target="_blank" rel="noopener noreferrer">Latest build artifacts</a> (Run [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2), [25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397))
|
||||
### <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/2" target="_blank" rel="noopener noreferrer">Latest build artifacts</a>
|
||||
|
||||
Run [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2) · [25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397) · 15.06.2024 02:30:00 UTC
|
||||
|
||||
🏠 <a href="https://code-thetadev-de--thetadev--test-actions--2-1.localhost:3000" target="_blank" rel="noopener noreferrer">Hello World ;-)</a><br>
|
||||
<a href="https://code-thetadev-de--thetadev--test-actions--2-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">Test</a><br>
|
||||
<details>
|
||||
<summary>Previous builds</summary>
|
||||
|
||||
- [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1): <a href="https://code-thetadev-de--thetadev--test-actions--1-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--1-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 01:30:00 UTC)
|
||||
<!--NEXT_PREV - [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2) [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/2): <a href="https://code-thetadev-de--thetadev--test-actions--2-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--2-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 02:30:00 UTC) -->
|
||||
- [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1" target="_blank" rel="noopener noreferrer">Artifacts</a>: <a href="https://code-thetadev-de--thetadev--test-actions--1-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--1-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 01:30:00 UTC)
|
||||
<!--NEXT_PREV - [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2) [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/2" target="_blank" rel="noopener noreferrer">Artifacts</a>: <a href="https://code-thetadev-de--thetadev--test-actions--2-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--2-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 02:30:00 UTC) -->
|
||||
</details>
|
||||
|
|
|
@ -2,14 +2,16 @@
|
|||
source: src/app.rs
|
||||
expression: res
|
||||
---
|
||||
### 👁️ <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/3" target="_blank" rel="noopener noreferrer">Latest build artifacts</a> (Run [#3](https://code.thetadev.de/thetadev/test-actions/actions/runs/3), [35eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/35eed48a8382513147a949117ef4aa659989d397))
|
||||
### <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/3" target="_blank" rel="noopener noreferrer">Latest build artifacts</a>
|
||||
|
||||
Run [#3](https://code.thetadev.de/thetadev/test-actions/actions/runs/3) · [35eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/35eed48a8382513147a949117ef4aa659989d397) · 15.06.2024 03:30:00 UTC
|
||||
|
||||
🏠 <a href="https://code-thetadev-de--thetadev--test-actions--3-1.localhost:3000" target="_blank" rel="noopener noreferrer">Hello World ;-)</a><br>
|
||||
<a href="https://code-thetadev-de--thetadev--test-actions--3-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">Test</a><br>
|
||||
<details>
|
||||
<summary>Previous builds</summary>
|
||||
|
||||
- [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1): <a href="https://code-thetadev-de--thetadev--test-actions--1-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--1-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 01:30:00 UTC)
|
||||
- [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2) [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/2): <a href="https://code-thetadev-de--thetadev--test-actions--2-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--2-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 02:30:00 UTC)
|
||||
<!--NEXT_PREV - [#3](https://code.thetadev.de/thetadev/test-actions/actions/runs/3) [[35eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/35eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/3): <a href="https://code-thetadev-de--thetadev--test-actions--3-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--3-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 03:30:00 UTC) -->
|
||||
- [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1" target="_blank" rel="noopener noreferrer">Artifacts</a>: <a href="https://code-thetadev-de--thetadev--test-actions--1-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--1-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 01:30:00 UTC)
|
||||
- [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2) [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/2" target="_blank" rel="noopener noreferrer">Artifacts</a>: <a href="https://code-thetadev-de--thetadev--test-actions--2-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--2-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 02:30:00 UTC)
|
||||
<!--NEXT_PREV - [#3](https://code.thetadev.de/thetadev/test-actions/actions/runs/3) [[35eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/35eed48a8382513147a949117ef4aa659989d397)] <a href="https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/3" target="_blank" rel="noopener noreferrer">Artifacts</a>: <a href="https://code-thetadev-de--thetadev--test-actions--3-1.localhost:3000" target="_blank" rel="noopener noreferrer">`Hello`</a>, <a href="https://code-thetadev-de--thetadev--test-actions--3-2.localhost:3000/junit.xml?viewer=1" target="_blank" rel="noopener noreferrer">`Test`</a> (15.06.2024 03:30:00 UTC) -->
|
||||
</details>
|
||||
|
|
|
@ -22,10 +22,10 @@
|
|||
<th><a href="?C=N&O=A">Name</a> <a
|
||||
href="?C=N&O=D"
|
||||
> ↓ </a></th>
|
||||
<th>CRC32</th>
|
||||
<th><a href="?C=S&O=A">Size</a> <a
|
||||
href="?C=S&O=D"
|
||||
> ↓ </a></th>
|
||||
<th>CRC32</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -45,8 +45,8 @@
|
|||
<span class="name">{{name}}</span>
|
||||
</a>
|
||||
</td>
|
||||
<td>{{#if is_dir}}—{{else}}{{size}}{{/if}}</td>
|
||||
<td>{{#if is_dir}}—{{else}}{{crc32}}{{/if}}</td>
|
||||
<td>{{#if is_dir}}—{{else}}{{size}}{{/if}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
|
|
|
@ -242,8 +242,8 @@ fn parse_listing(doc: &Html) -> Vec<FileEntry> {
|
|||
|
||||
FileEntry {
|
||||
name,
|
||||
size: parts.next().expect("size"),
|
||||
crc32: parts.next().expect("crc32"),
|
||||
size: parts.next().expect("size"),
|
||||
}
|
||||
})
|
||||
.collect()
|
||||
|
|
Loading…
Add table
Reference in a new issue