feat: smark update group and token api to select field #980
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
push: | |
branches: | |
- "**" | |
tags: | |
- "v*.*.*" | |
paths-ignore: | |
- "**/*.md" | |
- "**/*.yaml" | |
pull_request: | |
branches: | |
- "**" | |
paths-ignore: | |
- "**/*.md" | |
- "**/*.yaml" | |
env: | |
DOCKERHUB_REPO: ${{ secrets.DOCKERHUB_REPO != '' && secrets.DOCKERHUB_REPO || secrets.DOCKERHUB_USERNAME != '' && format('{0}/{1}', secrets.DOCKERHUB_USERNAME, 'aiproxy') || '' }} | |
GHCR_REPO: ghcr.io/${{ github.repository }} | |
ALIYUN_REGISTRY: ${{ secrets.ALIYUN_REGISTRY }} | |
ALIYUN_REPO: ${{ secrets.ALIYUN_REPO != '' && secrets.ALIYUN_REPO || secrets.ALIYUN_USERNAME != '' && format('{0}/{1}/{2}', secrets.ALIYUN_REGISTRY, secrets.ALIYUN_USERNAME, 'aiproxy') || '' }} | |
jobs: | |
release-web: | |
name: Release Web | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Use Node.js 22 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 22.x | |
- name: Build | |
working-directory: web | |
run: | | |
npm install -g pnpm | |
pnpm install && pnpm run build | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: web | |
path: web/dist | |
release: | |
name: Release AI Proxy | |
runs-on: ubuntu-24.04 | |
needs: release-web | |
permissions: | |
contents: write | |
strategy: | |
fail-fast: false | |
matrix: | |
targets: | |
- GOOS: linux | |
GOARCH: arm64 | |
- GOOS: linux | |
GOARCH: amd64 | |
- GOOS: darwin | |
GOARCH: arm64 | |
- GOOS: darwin | |
GOARCH: amd64 | |
- GOOS: windows | |
GOARCH: amd64 | |
EXT: .exe | |
- GOOS: windows | |
GOARCH: arm64 | |
EXT: .exe | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v5 | |
- uses: actions/download-artifact@v5 | |
with: | |
name: web | |
path: core/public/dist | |
- name: Download tiktoken | |
working-directory: core | |
run: | | |
bash scripts/tiktoken.sh | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: "core/go.mod" | |
- name: Generate Swagger | |
working-directory: core | |
run: | | |
go install github.com/swaggo/swag/cmd/swag@latest | |
bash scripts/swag.sh | |
- name: Build | |
working-directory: core | |
run: | | |
export GOOS=${{ matrix.targets.GOOS }} | |
export GOARCH=${{ matrix.targets.GOARCH }} | |
go build -trimpath -ldflags "-s -w" -o aiproxy-${{ matrix.targets.GOOS }}-${{ matrix.targets.GOARCH }}${{ matrix.targets.EXT }} | |
- name: Get release meta | |
if: ${{ startsWith(github.ref, 'refs/tags/') }} | |
working-directory: core | |
run: | | |
version=${GITHUB_REF/refs\/tags\/v/} | |
echo "version: ${version}" | |
prerelease=$(echo ${version} | grep -E 'rc|beta|alpha' || true) | |
release_name="Version ${version}" | |
echo "release_name: ${release_name}" | |
if [ -n "${prerelease}" ]; then | |
prerelease=true | |
release_name="${release_name} (Prerelease)" | |
fi | |
tag_name="v${version}" | |
echo "prerelease: ${prerelease}" | |
echo "tag_name: ${tag_name}" | |
echo "PRERELEASE=${prerelease}" >> $GITHUB_OUTPUT | |
echo "RELEASE_NAME=${release_name}" >> $GITHUB_OUTPUT | |
echo "TAG_NAME=${tag_name}" >> $GITHUB_OUTPUT | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: ${{ startsWith(github.ref, 'refs/tags/') }} | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
draft: false | |
prerelease: ${{ steps.release_meta.outputs.PRERELEASE }} | |
append_body: false | |
fail_on_unmatched_files: true | |
name: ${{ steps.release_meta.outputs.RELEASE_NAME }} | |
tag_name: ${{ steps.release_meta.outputs.TAG_NAME }} | |
files: | | |
core/aiproxy-${{ matrix.targets.GOOS }}-${{ matrix.targets.GOARCH }}${{ matrix.targets.EXT }} | |
build-docker-images: | |
name: Build Docker Images | |
permissions: | |
packages: write | |
strategy: | |
matrix: | |
include: | |
- arch: amd64 | |
- arch: arm64 | |
runs-on: ubuntu-24.04-arm | |
runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }} | |
steps: | |
- name: Login to GitHub Container Registry | |
if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_REPO }} | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Login to Aliyun Registry | |
uses: docker/login-action@v3 | |
if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.ALIYUN_REGISTRY }} | |
with: | |
registry: ${{ env.ALIYUN_REGISTRY }} | |
username: ${{ secrets.ALIYUN_USERNAME }} | |
password: ${{ secrets.ALIYUN_PASSWORD }} | |
- name: Checkout | |
uses: actions/checkout@v5 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Extract metadata (tags, labels) for Docker | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.DOCKERHUB_REPO }} | |
${{ env.GHCR_REPO }} | |
${{ env.ALIYUN_REPO }} | |
- name: Build for ${{ matrix.arch }} | |
id: build | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
labels: ${{ steps.meta.outputs.labels }} | |
platforms: linux/${{ matrix.arch }} | |
outputs: type=image,"name=${{ env.GHCR_REPO }}${{ env.DOCKERHUB_REPO && format(',{0}', env.DOCKERHUB_REPO) }}${{ env.ALIYUN_REPO && format(',{0}', env.ALIYUN_REPO) }}",name-canonical=true,push-by-digest=${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }},push=${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} | |
- name: Export digest | |
working-directory: core | |
run: | | |
mkdir -p ${{ runner.temp }}/digests | |
digest="${{ steps.build.outputs.digest }}" | |
touch "${{ runner.temp }}/digests/${digest#sha256:}" | |
- name: Upload digest | |
uses: actions/upload-artifact@v4 | |
with: | |
name: digests-${{ matrix.arch }} | |
path: ${{ runner.temp }}/digests/* | |
if-no-files-found: error | |
retention-days: 1 | |
release-docker-images: | |
name: Push Docker Images | |
permissions: | |
packages: write | |
needs: build-docker-images | |
runs-on: ubuntu-24.04 | |
if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }} | |
steps: | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
if: ${{ env.DOCKERHUB_REPO }} | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Login to Aliyun Registry | |
uses: docker/login-action@v3 | |
if: ${{ env.ALIYUN_REGISTRY }} | |
with: | |
registry: ${{ env.ALIYUN_REGISTRY }} | |
username: ${{ secrets.ALIYUN_USERNAME }} | |
password: ${{ secrets.ALIYUN_PASSWORD }} | |
- name: Download digests | |
uses: actions/download-artifact@v5 | |
with: | |
path: ${{ runner.temp }}/digests | |
pattern: digests-* | |
merge-multiple: true | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Extract metadata (tags, labels) for Docker | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.DOCKERHUB_REPO }} | |
${{ env.GHCR_REPO }} | |
${{ env.ALIYUN_REPO }} | |
tags: | | |
type=ref,event=branch | |
type=ref,event=pr | |
type=ref,event=tag | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}}.{{minor}} | |
type=semver,pattern={{major}} | |
type=sha | |
- name: Create manifest list and push | |
working-directory: ${{ runner.temp }}/digests | |
run: | | |
for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do | |
docker buildx imagetools create -t $TAG \ | |
$(printf '${{ env.GHCR_REPO }}@sha256:%s ' *) | |
sleep 5 | |
done | |
- name: Inspect image | |
run: | | |
docker buildx imagetools inspect ${{ env.GHCR_REPO }}:${{ steps.meta.outputs.version }} |