From c609cb13b2b59cf46a8cc08dba77bac346b89114 Mon Sep 17 00:00:00 2001 From: CaIon Date: Tue, 28 Apr 2026 14:34:18 +0800 Subject: [PATCH] fix: update logo paths in README --- .github/FUNDING.yml | 12 -- .github/workflows/docker-build.yml | 190 ++++++++++++++++------- .github/workflows/docker-image-arm64.yml | 182 ---------------------- README.en.md | 2 +- README.fr.md | 2 +- README.ja.md | 2 +- README.md | 2 +- README.zh_CN.md | 2 +- README.zh_TW.md | 2 +- 9 files changed, 143 insertions(+), 253 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/workflows/docker-image-arm64.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 87747788..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: ['https://afdian.com/a/new-api'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 4888d1b9..c44cadf7 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -1,89 +1,173 @@ -name: Build and Push Docker Image +name: Publish Docker image (Multi-arch) on: push: branches: - main tags: - - 'v*' + - '*' + - '!nightly*' workflow_dispatch: - -env: - DOCKER_REPO: t0ngyu/new-api-alpha + inputs: + tag: + description: 'Tag name to build (e.g., v0.10.8)' + required: false + type: string jobs: - build-and-push: - runs-on: ubuntu-latest - + build_single_arch: + name: Build & push (${{ matrix.arch }}) + strategy: + fail-fast: false + matrix: + include: + - arch: amd64 + platform: linux/amd64 + runner: ubuntu-latest + - arch: arm64 + platform: linux/arm64 + runner: ubuntu-24.04-arm + runs-on: ${{ matrix.runner }} + outputs: + tag: ${{ steps.version.outputs.tag }} + is_tag: ${{ steps.version.outputs.is_tag }} + + permissions: + packages: write + contents: read + id-token: write + steps: - - name: Checkout code - uses: actions/checkout@v5 + - name: Check out + uses: actions/checkout@v4 + with: + fetch-depth: ${{ github.event_name == 'workflow_dispatch' && 0 || 1 }} + ref: ${{ github.event.inputs.tag || github.ref }} - - name: Save version info + - name: Resolve version + id: version run: | - if [[ "${{ github.ref }}" == refs/tags/* ]]; then - # For tags, use the tag name - echo "${GITHUB_REF#refs/tags/}" > VERSION + IS_TAG=false + if [ -n "${{ github.event.inputs.tag }}" ]; then + TAG="${{ github.event.inputs.tag }}" + if ! git rev-parse "refs/tags/$TAG" >/dev/null 2>&1; then + echo "::error::Tag '$TAG' does not exist" + exit 1 + fi + IS_TAG=true + elif [[ "${GITHUB_REF}" == refs/tags/* ]]; then + TAG="${GITHUB_REF#refs/tags/}" + IS_TAG=true else - # For branches, use date and commit hash - echo "$(date +'%Y%m%d')-$(git rev-parse --short HEAD)" > VERSION + TAG="$(date +'%Y%m%d')-$(git rev-parse --short HEAD)" fi - cat VERSION + echo "TAG=${TAG}" >> $GITHUB_ENV + echo "tag=${TAG}" >> $GITHUB_OUTPUT + echo "is_tag=${IS_TAG}" >> $GITHUB_OUTPUT + echo "${TAG}" > VERSION + echo "Building version: ${TAG} for ${{ matrix.arch }}" - - name: Set up QEMU - uses: docker/setup-qemu-action@v4 + - name: Compute image tags + id: tags + run: | + TAGS="calciumion/new-api:${TAG}-${{ matrix.arch }}" + if [ "${{ steps.version.outputs.is_tag }}" = "true" ]; then + TAGS="${TAGS}"$'\n'"calciumion/new-api:latest-${{ matrix.arch }}" + else + TAGS="${TAGS}"$'\n'"calciumion/new-api:main-${{ matrix.arch }}" + fi + { + echo "tags<> $GITHUB_OUTPUT - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v4 - with: - driver-opts: | - image=moby/buildkit:latest - network=host + uses: docker/setup-buildx-action@v3 - - name: Login to Docker Hub - uses: docker/login-action@v4 + - name: Log in to Docker Hub + uses: docker/login-action@v3 with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Extract metadata + - name: Extract metadata (labels) id: meta - uses: docker/metadata-action@v6 + uses: docker/metadata-action@v5 with: - images: ${{ env.DOCKER_REPO }} - tags: | - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha,prefix={{branch}}- - type=raw,value=latest,enable={{is_default_branch}} + images: calciumion/new-api - - name: Build and push Docker image + - name: Build & push id: build - uses: docker/build-push-action@v7 + uses: docker/build-push-action@v6 with: context: . - file: ./Dockerfile - platforms: linux/amd64 + platforms: ${{ matrix.platform }} push: true - tags: ${{ steps.meta.outputs.tags }} + tags: ${{ steps.tags.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - # Enable BuildKit cache mounts and GHA cache cache-from: type=gha cache-to: type=gha,mode=max - build-args: | - BUILDKIT_INLINE_CACHE=1 + provenance: mode=max + sbom: true + + - name: Install cosign + if: steps.version.outputs.is_tag == 'true' + uses: sigstore/cosign-installer@v3 + + - name: Sign image with cosign + if: steps.version.outputs.is_tag == 'true' + run: cosign sign --yes calciumion/new-api@${{ steps.build.outputs.digest }} - name: Image summary run: | - echo "### Docker Image Built Successfully! 🚀" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "**Tags:**" >> $GITHUB_STEP_SUMMARY + echo "### Docker Image Digest (${{ matrix.arch }})" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY - echo "${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY + echo "calciumion/new-api:${TAG}-${{ matrix.arch }}" >> $GITHUB_STEP_SUMMARY + echo "${{ steps.build.outputs.digest }}" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "**Digest:** \`${{ steps.build.outputs.digest }}\`" >> $GITHUB_STEP_SUMMARY + create_manifests: + name: Create multi-arch manifests + needs: [build_single_arch] + runs-on: ubuntu-latest + + steps: + - name: Set version + run: echo "TAG=${{ needs.build_single_arch.outputs.tag }}" >> $GITHUB_ENV + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Create & push manifest (version) + run: | + docker buildx imagetools create \ + -t calciumion/new-api:${TAG} \ + calciumion/new-api:${TAG}-amd64 \ + calciumion/new-api:${TAG}-arm64 + + - name: Create & push manifest (latest) + if: needs.build_single_arch.outputs.is_tag == 'true' + run: | + docker buildx imagetools create \ + -t calciumion/new-api:latest \ + calciumion/new-api:latest-amd64 \ + calciumion/new-api:latest-arm64 + + - name: Create & push manifest (main) + if: needs.build_single_arch.outputs.is_tag != 'true' + run: | + docker buildx imagetools create \ + -t calciumion/new-api:main \ + calciumion/new-api:main-amd64 \ + calciumion/new-api:main-arm64 + + - name: Manifest summary + run: | + echo "### Multi-arch Manifest" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + docker buildx imagetools inspect calciumion/new-api:${TAG} >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/docker-image-arm64.yml b/.github/workflows/docker-image-arm64.yml deleted file mode 100644 index 83303ee3..00000000 --- a/.github/workflows/docker-image-arm64.yml +++ /dev/null @@ -1,182 +0,0 @@ -name: Publish Docker image (Multi Registries, native amd64+arm64) - -on: - push: - tags: - - '*' - - '!nightly*' - workflow_dispatch: - inputs: - tag: - description: 'Tag name to build (e.g., v0.10.8-alpha.3)' - required: true - type: string - -jobs: - build_single_arch: - name: Build & push (${{ matrix.arch }}) [native] - strategy: - fail-fast: false - matrix: - include: - - arch: amd64 - platform: linux/amd64 - runner: ubuntu-latest - - arch: arm64 - platform: linux/arm64 - runner: ubuntu-24.04-arm - runs-on: ${{ matrix.runner }} - - permissions: - packages: write - contents: read - id-token: write - - steps: - - name: Check out - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - with: - fetch-depth: ${{ github.event_name == 'workflow_dispatch' && 0 || 1 }} - ref: ${{ github.event.inputs.tag || github.ref }} - - - name: Resolve tag & write VERSION - run: | - if [ -n "${{ github.event.inputs.tag }}" ]; then - TAG="${{ github.event.inputs.tag }}" - # Verify tag exists - if ! git rev-parse "refs/tags/$TAG" >/dev/null 2>&1; then - echo "Error: Tag '$TAG' does not exist in the repository" - exit 1 - fi - else - TAG=${GITHUB_REF#refs/tags/} - fi - echo "TAG=$TAG" >> $GITHUB_ENV - echo "$TAG" > VERSION - echo "Building tag: $TAG for ${{ matrix.arch }}" - - -# - name: Normalize GHCR repository -# run: echo "GHCR_REPOSITORY=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 - - - name: Log in to Docker Hub - uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - -# - name: Log in to GHCR -# uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3 -# with: -# registry: ghcr.io -# username: ${{ github.actor }} -# password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (labels) - id: meta - uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5 - with: - images: | - calciumion/new-api -# ghcr.io/${{ env.GHCR_REPOSITORY }} - - - name: Build & push single-arch (to both registries) - id: build - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6 - with: - context: . - platforms: ${{ matrix.platform }} - push: true - tags: | - calciumion/new-api:${{ env.TAG }}-${{ matrix.arch }} - calciumion/new-api:latest-${{ matrix.arch }} -# ghcr.io/${{ env.GHCR_REPOSITORY }}:${{ env.TAG }}-${{ matrix.arch }} -# ghcr.io/${{ env.GHCR_REPOSITORY }}:latest-${{ matrix.arch }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max - provenance: mode=max - sbom: true - - - name: Install cosign - uses: sigstore/cosign-installer@398d4b0eeef1380460a10c8013a76f728fb906ac # v3 - - - name: Sign image with cosign - run: cosign sign --yes calciumion/new-api@${{ steps.build.outputs.digest }} - - - name: Output digest - run: | - echo "### Docker Image Digest (${{ matrix.arch }})" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - echo "calciumion/new-api:${{ env.TAG }}-${{ matrix.arch }}" >> $GITHUB_STEP_SUMMARY - echo "${{ steps.build.outputs.digest }}" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - - create_manifests: - name: Create multi-arch manifests (Docker Hub) - needs: [build_single_arch] - runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' - steps: - - name: Extract tag - run: | - if [ -n "${{ github.event.inputs.tag }}" ]; then - echo "TAG=${{ github.event.inputs.tag }}" >> $GITHUB_ENV - else - echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - fi -# -# - name: Normalize GHCR repository -# run: echo "GHCR_REPOSITORY=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV - - - name: Log in to Docker Hub - uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Create & push manifest (Docker Hub - version) - run: | - docker buildx imagetools create \ - -t calciumion/new-api:${TAG} \ - calciumion/new-api:${TAG}-amd64 \ - calciumion/new-api:${TAG}-arm64 - - - name: Create & push manifest (Docker Hub - latest) - run: | - docker buildx imagetools create \ - -t calciumion/new-api:latest \ - calciumion/new-api:latest-amd64 \ - calciumion/new-api:latest-arm64 - - - name: Output manifest digest - run: | - echo "### Multi-arch Manifest" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - docker buildx imagetools inspect calciumion/new-api:${TAG} >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - - # ---- GHCR ---- -# - name: Log in to GHCR -# uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3 -# with: -# registry: ghcr.io -# username: ${{ github.actor }} -# password: ${{ secrets.GITHUB_TOKEN }} - -# - name: Create & push manifest (GHCR - version) -# run: | -# docker buildx imagetools create \ -# -t ghcr.io/${GHCR_REPOSITORY}:${TAG} \ -# ghcr.io/${GHCR_REPOSITORY}:${TAG}-amd64 \ -# ghcr.io/${GHCR_REPOSITORY}:${TAG}-arm64 -# -# - name: Create & push manifest (GHCR - latest) -# run: | -# docker buildx imagetools create \ -# -t ghcr.io/${GHCR_REPOSITORY}:latest \ -# ghcr.io/${GHCR_REPOSITORY}:latest-amd64 \ -# ghcr.io/${GHCR_REPOSITORY}:latest-arm64 diff --git a/README.en.md b/README.en.md index ff8340dd..cc274eb9 100644 --- a/README.en.md +++ b/README.en.md @@ -1,6 +1,6 @@
-![new-api](/web/public/logo.png) +![new-api](/web/default/public/logo.png) # New API diff --git a/README.fr.md b/README.fr.md index 6b4d0ceb..f7d83997 100644 --- a/README.fr.md +++ b/README.fr.md @@ -1,6 +1,6 @@
-![new-api](/web/public/logo.png) +![new-api](/web/default/public/logo.png) # New API diff --git a/README.ja.md b/README.ja.md index 2b35bdfe..77e3f845 100644 --- a/README.ja.md +++ b/README.ja.md @@ -1,6 +1,6 @@
-![new-api](/web/public/logo.png) +![new-api](/web/default/public/logo.png) # New API diff --git a/README.md b/README.md index 8f23d5dc..cb037a86 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@
-![new-api](/web/public/logo.png) +![new-api](/web/default/public/logo.png) # New API diff --git a/README.zh_CN.md b/README.zh_CN.md index 92e5baa1..725df2b5 100644 --- a/README.zh_CN.md +++ b/README.zh_CN.md @@ -1,6 +1,6 @@
-![new-api](/web/public/logo.png) +![new-api](/web/default/public/logo.png) # New API diff --git a/README.zh_TW.md b/README.zh_TW.md index 63664f0c..9041215e 100644 --- a/README.zh_TW.md +++ b/README.zh_TW.md @@ -1,6 +1,6 @@
-![new-api](/web/public/logo.png) +![new-api](/web/default/public/logo.png) # New API