mirror of
https://github.com/whyour/qinglong.git
synced 2026-10-16 22:35:32 +08:00
3c61e933a1
* chore(deps): bump the npm_and_yarn group across 1 directory with 8 updates Bumps the npm_and_yarn group with 8 updates in the / directory: | Package | From | To | | --- | --- | --- | | [body-parser](https://github.com/expressjs/body-parser) | `1.20.3` | `1.20.6` | | [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) | `3.0.3` | `3.0.7` | | [js-yaml](https://github.com/nodeca/js-yaml) | `4.1.0` | `4.3.2` | | [multer](https://github.com/expressjs/multer) | `2.3.0` | `2.4.0` | | [nodemailer](https://github.com/nodemailer/nodemailer) | `8.0.1` | `10.0.9` | | [undici](https://github.com/nodejs/undici) | `7.9.0` | `7.29.1` | | [axios](https://github.com/axios/axios) | `1.7.8` | `1.20.0` | | [brace-expansion](https://github.com/juliangruber/brace-expansion) | `1.1.12` | `1.1.21` | Updates `body-parser` from 1.20.3 to 1.20.6 - [Release notes](https://github.com/expressjs/body-parser/releases) - [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md) - [Commits](https://github.com/expressjs/body-parser/compare/1.20.3...1.20.6) Updates `http-proxy-middleware` from 3.0.3 to 3.0.7 - [Release notes](https://github.com/chimurai/http-proxy-middleware/releases) - [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v3.0.7/CHANGELOG.md) - [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v3.0.3...v3.0.7) Updates `js-yaml` from 4.1.0 to 4.3.2 - [Changelog](https://github.com/nodeca/js-yaml/blob/4.3.2/CHANGELOG.md) - [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.3.2) Updates `multer` from 2.3.0 to 2.4.0 - [Release notes](https://github.com/expressjs/multer/releases) - [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md) - [Commits](https://github.com/expressjs/multer/compare/v2.3.0...v2.4.0) Updates `nodemailer` from 8.0.1 to 10.0.9 - [Release notes](https://github.com/nodemailer/nodemailer/releases) - [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md) - [Commits](https://github.com/nodemailer/nodemailer/compare/v8.0.1...v10.0.9) Updates `undici` from 7.9.0 to 7.29.1 - [Release notes](https://github.com/nodejs/undici/releases) - [Commits](https://github.com/nodejs/undici/compare/v7.9.0...v7.29.1) Updates `axios` from 1.7.8 to 1.20.0 - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.7.8...v1.20.0) Updates `brace-expansion` from 1.1.12 to 1.1.21 - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.21) --- updated-dependencies: - dependency-name: axios dependency-version: 1.18.0 dependency-type: direct:development - dependency-name: body-parser dependency-version: 1.20.6 dependency-type: direct:production - dependency-name: brace-expansion dependency-version: 1.1.21 dependency-type: indirect - dependency-name: http-proxy-middleware dependency-version: 3.0.7 dependency-type: direct:production - dependency-name: js-yaml dependency-version: 4.3.2 dependency-type: direct:production - dependency-name: multer dependency-version: 2.3.0 dependency-type: direct:production - dependency-name: nodemailer dependency-version: 9.1.1 dependency-type: direct:production - dependency-name: undici dependency-version: 7.29.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * fix(ci): verify the updated multer runtime version --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: whyour <imwhyour@gmail.com>
137 lines
5.4 KiB
YAML
137 lines
5.4 KiB
YAML
name: Release readiness
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- '.github/workflows/release-readiness.yml'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: release-readiness-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
regression:
|
|
uses: ./.github/workflows/validate.yml
|
|
|
|
static:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
- uses: pnpm/action-setup@v6
|
|
with:
|
|
version: '8.3.1'
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: '20'
|
|
cache: pnpm
|
|
- run: pnpm install --frozen-lockfile
|
|
- run: pnpm build:front && pnpm build:back && pnpm build:info
|
|
- uses: actions/upload-artifact@v6
|
|
with:
|
|
name: release-readiness-static
|
|
path: static/
|
|
include-hidden-files: true
|
|
if-no-files-found: error
|
|
|
|
images:
|
|
needs: [regression, static]
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 60
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- image: alpine
|
|
file: docker/Dockerfile
|
|
cache: alpine
|
|
platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,linux/386
|
|
- image: debian
|
|
file: docker/Dockerfile.debian
|
|
cache: debian
|
|
platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
|
|
- image: alpine-python3.10
|
|
file: docker/Dockerfile.310
|
|
cache: alpine-python3.10
|
|
platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,linux/386
|
|
- image: debian-python3.10
|
|
file: docker/Dockerfile.debian310
|
|
cache: debian-python3.10
|
|
platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
- name: Record source
|
|
id: source
|
|
env:
|
|
SOURCE_URL: ${{ github.event.pull_request.head.repo.clone_url || format('https://github.com/{0}.git', github.repository) }}
|
|
SOURCE_BRANCH: ${{ github.head_ref || github.ref_name }}
|
|
run: |
|
|
echo "sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
|
|
echo "url=$SOURCE_URL" >> "$GITHUB_OUTPUT"
|
|
echo "branch=$SOURCE_BRANCH" >> "$GITHUB_OUTPUT"
|
|
- uses: actions/download-artifact@v7
|
|
with:
|
|
name: release-readiness-static
|
|
path: static/
|
|
- uses: docker/setup-qemu-action@v4
|
|
with:
|
|
cache-image: false
|
|
- uses: docker/setup-buildx-action@v4
|
|
- name: Build every release architecture
|
|
uses: docker/build-push-action@v7
|
|
with:
|
|
context: .
|
|
file: ${{ matrix.file }}
|
|
platforms: ${{ matrix.platforms }}
|
|
build-args: |
|
|
QL_URL=${{ steps.source.outputs.url }}
|
|
QL_BRANCH=${{ steps.source.outputs.branch }}
|
|
SOURCE_COMMIT=${{ steps.source.outputs.sha }}
|
|
push: false
|
|
provenance: false
|
|
sbom: false
|
|
cache-from: type=registry,ref=whyour/qinglong:cache-${{ matrix.cache }}
|
|
- name: Load native image for runtime verification
|
|
uses: docker/build-push-action@v7
|
|
with:
|
|
context: .
|
|
file: ${{ matrix.file }}
|
|
platforms: linux/amd64
|
|
build-args: |
|
|
QL_URL=${{ steps.source.outputs.url }}
|
|
QL_BRANCH=${{ steps.source.outputs.branch }}
|
|
SOURCE_COMMIT=${{ steps.source.outputs.sha }}
|
|
tags: qinglong-readiness:${{ matrix.image }}
|
|
load: true
|
|
push: false
|
|
provenance: false
|
|
sbom: false
|
|
- name: Verify native production runtime without external networking
|
|
run: |
|
|
docker run --rm --network none --entrypoint node \
|
|
qinglong-readiness:${{ matrix.image }} \
|
|
-e 'const assert=require("node:assert/strict"); const {createRequire}=require("node:module"); for(const [name,want] of Object.entries({"@grpc/grpc-js":"1.14.5",compression:"1.8.2",multer:"2.4.0",sequelize:"6.37.8"}))assert.equal(require(name+"/package.json").version,want); const expressRequire=createRequire(require.resolve("express")); assert.equal(expressRequire("proxy-addr/package.json").version,"2.0.8"); const sockRequire=createRequire(require.resolve("sockjs")); assert.equal(sockRequire("websocket-driver/package.json").version,"0.7.5"); require("sqlite3"); require("nodemailer"); require("undici"); console.log("Minimal production patches and runtime imports verified")'
|
|
- name: Export native Debian image for isolated dev validation
|
|
if: matrix.image == 'debian'
|
|
run: |
|
|
docker save qinglong-readiness:debian | gzip -1 > release-readiness-debian-image.tar.gz
|
|
sha256sum release-readiness-debian-image.tar.gz > release-readiness-debian-image.sha256
|
|
docker image inspect qinglong-readiness:debian > release-readiness-debian-image.json
|
|
- uses: actions/upload-artifact@v6
|
|
if: matrix.image == 'debian'
|
|
with:
|
|
name: release-readiness-debian-image
|
|
path: release-readiness-debian-image.*
|
|
compression-level: 0
|
|
if-no-files-found: error
|