mirror of
https://github.com/RayLabsHQ/gitea-mirror.git
synced 2026-04-05 12:38:43 +03:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ce365a706e | ||
|
|
be7daac5fb | ||
|
|
e32b7af5eb |
3
.github/workflows/README.md
vendored
3
.github/workflows/README.md
vendored
@@ -43,6 +43,9 @@ This workflow builds Docker images on pushes and pull requests, and pushes to Gi
|
|||||||
- Skips registry push for fork PRs (avoids package write permission failures)
|
- Skips registry push for fork PRs (avoids package write permission failures)
|
||||||
- Uses build caching to speed up builds
|
- Uses build caching to speed up builds
|
||||||
- Creates multiple tags for each image (latest, semver, sha)
|
- Creates multiple tags for each image (latest, semver, sha)
|
||||||
|
- Auto-syncs `package.json` version from `v*` tags during release builds
|
||||||
|
- Validates release tags use semver format before building
|
||||||
|
- After tag builds succeed, writes the same version back to `main/package.json`
|
||||||
|
|
||||||
### Docker Security Scan (`docker-scan.yml`)
|
### Docker Security Scan (`docker-scan.yml`)
|
||||||
|
|
||||||
|
|||||||
66
.github/workflows/docker-build.yml
vendored
66
.github/workflows/docker-build.yml
vendored
@@ -77,13 +77,34 @@ jobs:
|
|||||||
id: tag_version
|
id: tag_version
|
||||||
run: |
|
run: |
|
||||||
if [[ $GITHUB_REF == refs/tags/v* ]]; then
|
if [[ $GITHUB_REF == refs/tags/v* ]]; then
|
||||||
echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
TAG_VERSION="${GITHUB_REF#refs/tags/}"
|
||||||
echo "Using version tag: ${GITHUB_REF#refs/tags/}"
|
if [[ ! "$TAG_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+([.-][0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$ ]]; then
|
||||||
|
echo "::error::Release tag '${TAG_VERSION}' is invalid. Expected semver tag format like v1.2.3 or v1.2.3-rc.1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
APP_VERSION="${TAG_VERSION#v}"
|
||||||
|
echo "VERSION=${TAG_VERSION}" >> $GITHUB_OUTPUT
|
||||||
|
echo "APP_VERSION=${APP_VERSION}" >> $GITHUB_OUTPUT
|
||||||
|
echo "Using version tag: ${TAG_VERSION}"
|
||||||
else
|
else
|
||||||
echo "VERSION=latest" >> $GITHUB_OUTPUT
|
echo "VERSION=latest" >> $GITHUB_OUTPUT
|
||||||
|
echo "APP_VERSION=dev" >> $GITHUB_OUTPUT
|
||||||
echo "No version tag, using 'latest'"
|
echo "No version tag, using 'latest'"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Keep version files aligned automatically for tag-based releases
|
||||||
|
- name: Sync app version from release tag
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
|
run: |
|
||||||
|
VERSION="${{ steps.tag_version.outputs.APP_VERSION }}"
|
||||||
|
echo "Syncing package.json version to ${VERSION}"
|
||||||
|
|
||||||
|
jq --arg version "${VERSION}" '.version = $version' package.json > package.json.tmp
|
||||||
|
mv package.json.tmp package.json
|
||||||
|
|
||||||
|
echo "Version sync diff (package.json):"
|
||||||
|
git --no-pager diff -- package.json
|
||||||
|
|
||||||
# Extract metadata for Docker
|
# Extract metadata for Docker
|
||||||
- name: Extract Docker metadata
|
- name: Extract Docker metadata
|
||||||
id: meta
|
id: meta
|
||||||
@@ -237,3 +258,44 @@ jobs:
|
|||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
sarif_file: scout-results.sarif
|
sarif_file: scout-results.sarif
|
||||||
|
|
||||||
|
sync-version-main:
|
||||||
|
name: Sync package.json version back to main
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: docker
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout default branch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ github.event.repository.default_branch }}
|
||||||
|
|
||||||
|
- name: Update package.json version on main
|
||||||
|
env:
|
||||||
|
TAG_VERSION: ${{ github.ref_name }}
|
||||||
|
TARGET_BRANCH: ${{ github.event.repository.default_branch }}
|
||||||
|
run: |
|
||||||
|
if [[ ! "$TAG_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+([.-][0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$ ]]; then
|
||||||
|
echo "::error::Release tag '${TAG_VERSION}' is invalid. Expected semver tag format like v1.2.3 or v1.2.3-rc.1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
APP_VERSION="${TAG_VERSION#v}"
|
||||||
|
echo "Syncing ${TARGET_BRANCH}/package.json to ${APP_VERSION}"
|
||||||
|
|
||||||
|
jq --arg version "${APP_VERSION}" '.version = $version' package.json > package.json.tmp
|
||||||
|
mv package.json.tmp package.json
|
||||||
|
|
||||||
|
if git diff --quiet -- package.json; then
|
||||||
|
echo "package.json on ${TARGET_BRANCH} already at ${APP_VERSION}; nothing to commit."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||||
|
git add package.json
|
||||||
|
git commit -m "chore: sync version to ${APP_VERSION}"
|
||||||
|
git push origin "HEAD:${TARGET_BRANCH}"
|
||||||
|
|||||||
@@ -310,26 +310,25 @@ bunx tsc --noEmit
|
|||||||
|
|
||||||
## Release Process
|
## Release Process
|
||||||
|
|
||||||
1. **Update version**:
|
1. **Choose release version** (`X.Y.Z`) and update `CHANGELOG.md`
|
||||||
```bash
|
|
||||||
npm version patch # or minor/major
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **Update CHANGELOG.md**
|
2. **Build and test**:
|
||||||
|
|
||||||
3. **Build and test**:
|
|
||||||
```bash
|
```bash
|
||||||
bun run build
|
bun run build
|
||||||
bun test
|
bun test
|
||||||
```
|
```
|
||||||
|
|
||||||
4. **Create release**:
|
3. **Create release tag** (semver format required):
|
||||||
```bash
|
```bash
|
||||||
git tag vX.Y.Z
|
git tag vX.Y.Z
|
||||||
git push origin vX.Y.Z
|
git push origin vX.Y.Z
|
||||||
```
|
```
|
||||||
|
|
||||||
5. **Create GitHub release**
|
4. **Create GitHub release**
|
||||||
|
|
||||||
|
5. **CI version sync (automatic)**:
|
||||||
|
- On `v*` tags, release CI updates `package.json` version in the build context from the tag (`vX.Y.Z` -> `X.Y.Z`), so Docker release images always report the correct app version.
|
||||||
|
- After the release build succeeds, CI commits the same `package.json` version back to `main` automatically.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "gitea-mirror",
|
"name": "gitea-mirror",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "3.10.1",
|
"version": "3.12.1",
|
||||||
"engines": {
|
"engines": {
|
||||||
"bun": ">=1.2.9"
|
"bun": ">=1.2.9"
|
||||||
},
|
},
|
||||||
|
|||||||
16
www/pnpm-lock.yaml
generated
16
www/pnpm-lock.yaml
generated
@@ -1943,8 +1943,8 @@ packages:
|
|||||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
sax@1.4.4:
|
sax@1.5.0:
|
||||||
resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==}
|
resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==}
|
||||||
engines: {node: '>=11.0.0'}
|
engines: {node: '>=11.0.0'}
|
||||||
|
|
||||||
scheduler@0.27.0:
|
scheduler@0.27.0:
|
||||||
@@ -2012,8 +2012,8 @@ packages:
|
|||||||
style-to-object@1.0.14:
|
style-to-object@1.0.14:
|
||||||
resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
|
resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
|
||||||
|
|
||||||
svgo@4.0.0:
|
svgo@4.0.1:
|
||||||
resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==}
|
resolution: {integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@@ -3185,7 +3185,7 @@ snapshots:
|
|||||||
semver: 7.7.4
|
semver: 7.7.4
|
||||||
shiki: 3.22.0
|
shiki: 3.22.0
|
||||||
smol-toml: 1.6.0
|
smol-toml: 1.6.0
|
||||||
svgo: 4.0.0
|
svgo: 4.0.1
|
||||||
tinyexec: 1.0.2
|
tinyexec: 1.0.2
|
||||||
tinyglobby: 0.2.15
|
tinyglobby: 0.2.15
|
||||||
tsconfck: 3.1.6(typescript@5.8.3)
|
tsconfck: 3.1.6(typescript@5.8.3)
|
||||||
@@ -4552,7 +4552,7 @@ snapshots:
|
|||||||
'@rollup/rollup-win32-x64-msvc': 4.59.0
|
'@rollup/rollup-win32-x64-msvc': 4.59.0
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
|
|
||||||
sax@1.4.4: {}
|
sax@1.5.0: {}
|
||||||
|
|
||||||
scheduler@0.27.0: {}
|
scheduler@0.27.0: {}
|
||||||
|
|
||||||
@@ -4648,7 +4648,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
inline-style-parser: 0.2.7
|
inline-style-parser: 0.2.7
|
||||||
|
|
||||||
svgo@4.0.0:
|
svgo@4.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
commander: 11.1.0
|
commander: 11.1.0
|
||||||
css-select: 5.2.2
|
css-select: 5.2.2
|
||||||
@@ -4656,7 +4656,7 @@ snapshots:
|
|||||||
css-what: 6.2.2
|
css-what: 6.2.2
|
||||||
csso: 5.0.5
|
csso: 5.0.5
|
||||||
picocolors: 1.1.1
|
picocolors: 1.1.1
|
||||||
sax: 1.4.4
|
sax: 1.5.0
|
||||||
|
|
||||||
tailwind-merge@3.5.0: {}
|
tailwind-merge@3.5.0: {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user