From 8155bd15e3380b1f238e88184726a34f61f7c74f Mon Sep 17 00:00:00 2001 From: Leo Wang Date: Thu, 27 Feb 2025 02:05:46 +0800 Subject: [PATCH 1/5] feat: Add GitHub Actions and Cloudflare deployment configuration - Create Wrangler configuration for preview and production deployments - Add GitHub Actions workflow for preview deployments - Update README files with detailed deployment instructions and Cloudflare credential setup --- .github/workflows/preview.yml | 34 ++++++++++++++++++++++++++++++++++ README.md | 25 +++++++++++++++++-------- README_zh.md | 26 ++++++++++++++++++-------- wrangler.toml | 6 ++++++ 4 files changed, 75 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/preview.yml create mode 100644 wrangler.toml diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml new file mode 100644 index 0000000..b60e1b2 --- /dev/null +++ b/.github/workflows/preview.yml @@ -0,0 +1,34 @@ +name: Deploy Preview + +on: + push: + branches-ignore: + - main + +jobs: + deploy: + runs-on: ubuntu-latest + name: Deploy Preview + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 9 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Deploy to Cloudflare Workers with Preview + uses: cloudflare/wrangler-action@v3 + with: + apiToken: ${{ secrets.CF_API_TOKEN }} + command: deploy --env preview + env: + CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }} diff --git a/README.md b/README.md index 69ea880..fdacfd9 100644 --- a/README.md +++ b/README.md @@ -158,17 +158,26 @@ pnpm test ## Deployment -1. Login to Cloudflare +This project uses GitHub Actions to automatically deploy to Cloudflare Workers: -```bash -pnpm dlx wrangler login -``` +- Commits to non-main branches create preview deployments +- Commits to main branch deploy to production -2. Deploy Worker +### Setup GitHub Secrets -```bash -pnpm deploy -``` +To enable automatic deployments, you need to add the following secrets to your GitHub repository: + +1. Go to your repository on GitHub +2. Navigate to Settings > Secrets and variables > Actions +3. Add the following secrets: + - `CF_API_TOKEN`: Your Cloudflare API token with Workers permissions + +### How to get Cloudflare credentials + +1. **Cloudflare API Token**: + - Go to the [Cloudflare dashboard](https://dash.cloudflare.com/) + - Navigate to My Profile > API Tokens + - Create a new token with "Edit Workers" permissions ## Tech Stack diff --git a/README_zh.md b/README_zh.md index 1a4bc06..b9ab7ec 100644 --- a/README_zh.md +++ b/README_zh.md @@ -158,17 +158,27 @@ pnpm test ## 部署 -1. 登录到 Cloudflare +本项目使用 GitHub Actions 自动部署到 Cloudflare Workers: -```bash -pnpm dlx wrangler login -``` +- 向非主分支提交代码会创建预览部署 +- 向主分支提交代码会部署到生产环境 -2. 部署 Worker +### 设置 GitHub Secrets -```bash -pnpm deploy -``` +要启用自动部署,您需要在 GitHub 仓库中添加以下密钥: + +1. 前往您的 GitHub 仓库 +2. 导航到 Settings > Secrets and variables > Actions +3. 添加以下密钥: + - `CF_API_TOKEN`:您的 Cloudflare API 令牌(需要 Workers 权限) + +### 如何获取 Cloudflare 凭据 + +1. **Cloudflare API 令牌**: + + - 前往 [Cloudflare 控制面板](https://dash.cloudflare.com/) + - 导航到 My Profile > API Tokens + - 创建一个具有"Edit Workers"权限的新令牌 ## 技术栈 diff --git a/wrangler.toml b/wrangler.toml new file mode 100644 index 0000000..b50b3ef --- /dev/null +++ b/wrangler.toml @@ -0,0 +1,6 @@ +name = "github-achievements-api" +main = "src/index.ts" +compatibility_date = "2025-02-27" + +[env.preview] +name = "github-achievements-api-preview" \ No newline at end of file From 66e7d01d6b3b234930c299f37179ff3dab90e3a9 Mon Sep 17 00:00:00 2001 From: Leo Wang Date: Thu, 27 Feb 2025 02:26:01 +0800 Subject: [PATCH 2/5] feat: Add production deployment GitHub Actions workflow - Create deploy.yml for automatic production deployments - Update preview.yml to include deployment URL and commit comment - Add comment generation for deployment links in both workflows - Update wrangler.toml with a preview environment comment --- .github/workflows/deploy.yml | 53 +++++++++++++++++++++++++++++++++++ .github/workflows/preview.yml | 23 +++++++++++++-- wrangler.toml | 3 +- 3 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..fb8aaba --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,53 @@ +name: Deploy Production + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: ubuntu-latest + name: Deploy Production + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 9 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Deploy to Cloudflare Workers + id: deploy-production + uses: cloudflare/wrangler-action@v3 + with: + apiToken: ${{ secrets.CF_API_TOKEN }} + command: deploy + + - name: Get deployment URL + id: deployment-url + run: | + PRODUCTION_URL=$(echo '${{ steps.deploy-production.outputs.deployedUrl }}') + if [ -z "$PRODUCTION_URL" ]; then + PRODUCTION_URL="https://github-achievements-api.wangrunlin.workers.dev" + fi + echo "url=$PRODUCTION_URL" >> $GITHUB_OUTPUT + + - name: Comment on commit + uses: peter-evans/commit-comment@v2 + with: + body: | + 🚀 Production deployment is ready! + + 🔗 [Production Link](${{ steps.deployment-url.outputs.url }}) + + Branch: ${{ github.ref_name }} + Commit: ${{ github.sha }} diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index b60e1b2..ae37485 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -26,9 +26,28 @@ jobs: run: pnpm install - name: Deploy to Cloudflare Workers with Preview + id: deploy-preview uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CF_API_TOKEN }} command: deploy --env preview - env: - CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }} + + - name: Get deployment URL + id: deployment-url + run: | + PREVIEW_URL=$(echo '${{ steps.deploy-preview.outputs.deployedUrl }}') + if [ -z "$PREVIEW_URL" ]; then + PREVIEW_URL="https://github-achievements-api-preview.wangrunlin.workers.dev" + fi + echo "url=$PREVIEW_URL" >> $GITHUB_OUTPUT + + - name: Comment on commit + uses: peter-evans/commit-comment@v2 + with: + body: | + 🚀 Preview deployment is ready! + + 🔗 [Preview Link](${{ steps.deployment-url.outputs.url }}) + + Branch: ${{ github.ref_name }} + Commit: ${{ github.sha }} diff --git a/wrangler.toml b/wrangler.toml index b50b3ef..735f3a1 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -3,4 +3,5 @@ main = "src/index.ts" compatibility_date = "2025-02-27" [env.preview] -name = "github-achievements-api-preview" \ No newline at end of file +name = "github-achievements-api-preview" +# Asegúrate de que el entorno de vista previa tenga la misma configuración que el entorno principal \ No newline at end of file From cbbc84dcbb190f5bdfe59cf24cabf45d3b6383aa Mon Sep 17 00:00:00 2001 From: Leo Wang Date: Thu, 27 Feb 2025 02:30:13 +0800 Subject: [PATCH 3/5] chore: Update GitHub Actions commit comment action to v3 --- .github/workflows/deploy.yml | 2 +- .github/workflows/preview.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fb8aaba..07d5000 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -42,7 +42,7 @@ jobs: echo "url=$PRODUCTION_URL" >> $GITHUB_OUTPUT - name: Comment on commit - uses: peter-evans/commit-comment@v2 + uses: peter-evans/commit-comment@v3 with: body: | 🚀 Production deployment is ready! diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index ae37485..fdb7659 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -42,7 +42,7 @@ jobs: echo "url=$PREVIEW_URL" >> $GITHUB_OUTPUT - name: Comment on commit - uses: peter-evans/commit-comment@v2 + uses: peter-evans/commit-comment@v3 with: body: | 🚀 Preview deployment is ready! From d7213083acffe1bec7069d1c88f34996caf799b6 Mon Sep 17 00:00:00 2001 From: Leo Wang Date: Thu, 27 Feb 2025 02:53:37 +0800 Subject: [PATCH 4/5] chore: Simplify GitHub Actions deployment workflows --- .github/workflows/deploy.yml | 21 --------------------- .github/workflows/preview.yml | 21 --------------------- wrangler.toml | 3 +-- 3 files changed, 1 insertion(+), 44 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 07d5000..7d36e41 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -26,28 +26,7 @@ jobs: run: pnpm install - name: Deploy to Cloudflare Workers - id: deploy-production uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CF_API_TOKEN }} command: deploy - - - name: Get deployment URL - id: deployment-url - run: | - PRODUCTION_URL=$(echo '${{ steps.deploy-production.outputs.deployedUrl }}') - if [ -z "$PRODUCTION_URL" ]; then - PRODUCTION_URL="https://github-achievements-api.wangrunlin.workers.dev" - fi - echo "url=$PRODUCTION_URL" >> $GITHUB_OUTPUT - - - name: Comment on commit - uses: peter-evans/commit-comment@v3 - with: - body: | - 🚀 Production deployment is ready! - - 🔗 [Production Link](${{ steps.deployment-url.outputs.url }}) - - Branch: ${{ github.ref_name }} - Commit: ${{ github.sha }} diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index fdb7659..58515eb 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -26,28 +26,7 @@ jobs: run: pnpm install - name: Deploy to Cloudflare Workers with Preview - id: deploy-preview uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CF_API_TOKEN }} command: deploy --env preview - - - name: Get deployment URL - id: deployment-url - run: | - PREVIEW_URL=$(echo '${{ steps.deploy-preview.outputs.deployedUrl }}') - if [ -z "$PREVIEW_URL" ]; then - PREVIEW_URL="https://github-achievements-api-preview.wangrunlin.workers.dev" - fi - echo "url=$PREVIEW_URL" >> $GITHUB_OUTPUT - - - name: Comment on commit - uses: peter-evans/commit-comment@v3 - with: - body: | - 🚀 Preview deployment is ready! - - 🔗 [Preview Link](${{ steps.deployment-url.outputs.url }}) - - Branch: ${{ github.ref_name }} - Commit: ${{ github.sha }} diff --git a/wrangler.toml b/wrangler.toml index 735f3a1..fc6ea76 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -3,5 +3,4 @@ main = "src/index.ts" compatibility_date = "2025-02-27" [env.preview] -name = "github-achievements-api-preview" -# Asegúrate de que el entorno de vista previa tenga la misma configuración que el entorno principal \ No newline at end of file +name = "github-achievements-api-preview" \ No newline at end of file From b7be5dd0d7e7d975e92490402a1ad94f5631640e Mon Sep 17 00:00:00 2001 From: Leo Wang Date: Thu, 27 Feb 2025 03:05:34 +0800 Subject: [PATCH 5/5] docs: Update README files with improved link references and TypeScript version --- README.md | 116 +++++++++++++++++++++++++-------------------------- README_zh.md | 116 +++++++++++++++++++++++++-------------------------- 2 files changed, 116 insertions(+), 116 deletions(-) diff --git a/README.md b/README.md index fdacfd9..e4ae9e6 100644 --- a/README.md +++ b/README.md @@ -4,31 +4,31 @@ Pull Shark Achievement

-[![License](https://img.shields.io/github/license/wangrunlin/github-achievements-api)][1] -[![GitHub package.json version](https://img.shields.io/github/package-json/v/wangrunlin/github-achievements-api)][2] -[![GitHub last commit](https://img.shields.io/github/last-commit/wangrunlin/github-achievements-api)][3] -[![Test Status](https://img.shields.io/github/actions/workflow/status/wangrunlin/github-achievements-api/test.yml?label=test)][4] -[![Node Version](https://img.shields.io/node/v/github-achievements-api)][5] -[![TypeScript](https://img.shields.io/badge/TypeScript-5.5.2-blue.svg)][6] -[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)][7] -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)][8] -[![GitHub stars](https://img.shields.io/github/stars/wangrunlin/github-achievements-api)][9] -[![GitHub forks](https://img.shields.io/github/forks/wangrunlin/github-achievements-api)][10] -[![GitHub issues](https://img.shields.io/github/issues/wangrunlin/github-achievements-api)][11] -[![Visitors](https://visitor-badge.laobi.icu/badge?page_id=wangrunlin.github-achievements-api)][12] -[![Ko-fi](https://img.shields.io/badge/Ko--fi-Support-orange)][13] - -English | [简体中文][14] +[![License](https://img.shields.io/github/license/wangrunlin/github-achievements-api)][license] +[![GitHub package.json version](https://img.shields.io/github/package-json/v/wangrunlin/github-achievements-api)][package-json] +[![GitHub last commit](https://img.shields.io/github/last-commit/wangrunlin/github-achievements-api)][commits] +[![Test Status](https://img.shields.io/github/actions/workflow/status/wangrunlin/github-achievements-api/test.yml?label=test)][actions] +[![Node Version](https://img.shields.io/node/v/github-achievements-api)][nodejs] +[![TypeScript](https://img.shields.io/badge/TypeScript-5.7.3-blue.svg)][typescript] +[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)][prettier] +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)][make-pr] +[![GitHub stars](https://img.shields.io/github/stars/wangrunlin/github-achievements-api)][stars] +[![GitHub forks](https://img.shields.io/github/forks/wangrunlin/github-achievements-api)][forks] +[![GitHub issues](https://img.shields.io/github/issues/wangrunlin/github-achievements-api)][issues] +[![Visitors](https://visitor-badge.laobi.icu/badge?page_id=wangrunlin.github-achievements-api)][repo] +[![Ko-fi](https://img.shields.io/badge/Ko--fi-Support-orange)][kofi] + +English | [简体中文][readme-zh] A simple API service for retrieving GitHub user achievements information. Built with Cloudflare Workers. ## Live Demo -- [https://github-achievements-api.wangrunlin.workers.dev][15] +- [https://github-achievements-api.wangrunlin.workers.dev][demo] ## Deploy to Cloudflare Workers -[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)][16] +[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)][deploy] ## Features @@ -123,13 +123,13 @@ Example error response: Support this project by becoming a sponsor. Your logo will show up here with a link to your website. -[![Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)][17] +[![Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)][kofi-button] -[Other sponsorship options][18] +[Other sponsorship options][sponsor] ## Who's using GitHub Achievements API? -Are you using this API? [Let us know][19] and we'll add your logo here! +Are you using this API? [Let us know][new-issue] and we'll add your logo here! ## Local Development @@ -202,13 +202,13 @@ Issues and Pull Requests are welcome! ## Author -[Leo Wang][20] +[Leo Wang][author] ## Available Achievements Here are all the achievements currently available on GitHub: -[View more details about GitHub Achievements][21] +[View more details about GitHub Achievements][github-achievements] | Achievement | Name | Description | Max Tiers | | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------- | --------- | @@ -226,39 +226,39 @@ Here are all the achievements currently available on GitHub: Thanks to these awesome projects and resources: -- [GitHub][22] - For providing the achievement system -- [Cloudflare Workers][23] - For the serverless platform -- [GitHub Achievements List][24] - For the comprehensive achievements documentation -- [TypeScript][25] - For the typed JavaScript -- [Vitest][26] - For the testing framework -- [Wrangler][27] - For the development & deployment tool -- [pnpm][28] - For the fast package manager - -[1]: https://github.com/wangrunlin/github-achievements-api/blob/main/LICENSE -[2]: https://github.com/wangrunlin/github-achievements-api/blob/main/package.json -[3]: https://github.com/wangrunlin/github-achievements-api/commits -[4]: https://github.com/wangrunlin/github-achievements-api/actions -[5]: https://nodejs.org -[6]: https://www.typescriptlang.org/ -[7]: https://github.com/prettier/prettier -[8]: https://makeapullrequest.com -[9]: https://github.com/wangrunlin/github-achievements-api/stargazers -[10]: https://github.com/wangrunlin/github-achievements-api/network -[11]: https://github.com/wangrunlin/github-achievements-api/issues -[12]: https://github.com/wangrunlin/github-achievements-api -[13]: https://ko-fi.com/wangrunlin -[14]: README_zh.md -[15]: https://github-achievements-api.wangrunlin.workers.dev -[16]: https://deploy.workers.cloudflare.com/?url=https://github.com/wangrunlin/github-achievements-api -[17]: https://ko-fi.com/wangrunlin -[18]: https://alin.run/sponsor -[19]: https://github.com/wangrunlin/github-achievements-api/issues/new -[20]: https://github.com/wangrunlin -[21]: https://github.com/drknzz/GitHub-Achievements -[22]: https://github.com -[23]: https://workers.cloudflare.com -[24]: https://github.com/drknzz/GitHub-Achievements -[25]: https://www.typescriptlang.org -[26]: https://vitest.dev -[27]: https://developers.cloudflare.com/workers/wrangler/ -[28]: https://pnpm.io +- [GitHub][github] - For providing the achievement system +- [Cloudflare Workers][cloudflare-workers] - For the serverless platform +- [GitHub Achievements List][github-achievements-list] - For the comprehensive achievements documentation +- [TypeScript][typescript-site] - For the typed JavaScript +- [Vitest][vitest] - For the testing framework +- [Wrangler][wrangler] - For the development & deployment tool +- [pnpm][pnpm] - For the fast package manager + +[license]: https://github.com/wangrunlin/github-achievements-api/blob/main/LICENSE +[package-json]: https://github.com/wangrunlin/github-achievements-api/blob/main/package.json +[commits]: https://github.com/wangrunlin/github-achievements-api/commits +[actions]: https://github.com/wangrunlin/github-achievements-api/actions +[nodejs]: https://nodejs.org +[typescript]: https://www.typescriptlang.org/ +[prettier]: https://github.com/prettier/prettier +[make-pr]: https://makeapullrequest.com +[stars]: https://github.com/wangrunlin/github-achievements-api/stargazers +[forks]: https://github.com/wangrunlin/github-achievements-api/network +[issues]: https://github.com/wangrunlin/github-achievements-api/issues +[repo]: https://github.com/wangrunlin/github-achievements-api +[kofi]: https://ko-fi.com/wangrunlin +[readme-zh]: README_zh.md +[demo]: https://github-achievements-api.wangrunlin.workers.dev +[deploy]: https://deploy.workers.cloudflare.com/?url=https://github.com/wangrunlin/github-achievements-api +[kofi-button]: https://ko-fi.com/wangrunlin +[sponsor]: https://alin.run/sponsor +[new-issue]: https://github.com/wangrunlin/github-achievements-api/issues/new +[author]: https://github.com/wangrunlin +[github-achievements]: https://github.com/drknzz/GitHub-Achievements +[github]: https://github.com +[cloudflare-workers]: https://workers.cloudflare.com +[github-achievements-list]: https://github.com/drknzz/GitHub-Achievements +[typescript-site]: https://www.typescriptlang.org +[vitest]: https://vitest.dev +[wrangler]: https://developers.cloudflare.com/workers/wrangler/ +[pnpm]: https://pnpm.io diff --git a/README_zh.md b/README_zh.md index b9ab7ec..0254c32 100644 --- a/README_zh.md +++ b/README_zh.md @@ -4,31 +4,31 @@ Pull Shark 成就

-[![License](https://img.shields.io/github/license/wangrunlin/github-achievements-api)][1] -[![GitHub package.json version](https://img.shields.io/github/package-json/v/wangrunlin/github-achievements-api)][2] -[![GitHub last commit](https://img.shields.io/github/last-commit/wangrunlin/github-achievements-api)][3] -[![Test Status](https://img.shields.io/github/actions/workflow/status/wangrunlin/github-achievements-api/test.yml?label=test)][4] -[![Node Version](https://img.shields.io/node/v/github-achievements-api)][5] -[![TypeScript](https://img.shields.io/badge/TypeScript-5.5.2-blue.svg)][6] -[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)][7] -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)][8] -[![GitHub stars](https://img.shields.io/github/stars/wangrunlin/github-achievements-api)][9] -[![GitHub forks](https://img.shields.io/github/forks/wangrunlin/github-achievements-api)][10] -[![GitHub issues](https://img.shields.io/github/issues/wangrunlin/github-achievements-api)][11] -[![Visitors](https://visitor-badge.laobi.icu/badge?page_id=wangrunlin.github-achievements-api)][12] -[![Ko-fi](https://img.shields.io/badge/Ko--fi-Support-orange)][13] - -[English][14] | 简体中文 +[![License](https://img.shields.io/github/license/wangrunlin/github-achievements-api)][license] +[![GitHub package.json version](https://img.shields.io/github/package-json/v/wangrunlin/github-achievements-api)][package-json] +[![GitHub last commit](https://img.shields.io/github/last-commit/wangrunlin/github-achievements-api)][commits] +[![Test Status](https://img.shields.io/github/actions/workflow/status/wangrunlin/github-achievements-api/test.yml?label=test)][actions] +[![Node Version](https://img.shields.io/node/v/github-achievements-api)][nodejs] +[![TypeScript](https://img.shields.io/badge/TypeScript-5.7.3-blue.svg)][typescript] +[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)][prettier] +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)][make-pr] +[![GitHub stars](https://img.shields.io/github/stars/wangrunlin/github-achievements-api)][stars] +[![GitHub forks](https://img.shields.io/github/forks/wangrunlin/github-achievements-api)][forks] +[![GitHub issues](https://img.shields.io/github/issues/wangrunlin/github-achievements-api)][issues] +[![Visitors](https://visitor-badge.laobi.icu/badge?page_id=wangrunlin.github-achievements-api)][repo] +[![Ko-fi](https://img.shields.io/badge/Ko--fi-Support-orange)][kofi] + +[English][readme-en] | 简体中文 一个简单的 API 服务,用于获取 GitHub 用户的成就信息。基于 Cloudflare Workers 构建。 ## 在线使用 -- [https://github-achievements-api.wangrunlin.workers.dev][15] +- [https://github-achievements-api.wangrunlin.workers.dev][demo] ## 部署到 Cloudflare Workers -[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)][16] +[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)][deploy] ## 功能特点 @@ -123,13 +123,13 @@ GET https://.workers.dev/wangrunlin 成为赞助商来支持这个项目。您的 logo 将会出现在这里并链接到您的网站。 -[![Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)][17] +[![Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)][kofi-button] -[其他赞助方式][18] +[其他赞助方式][sponsor] ## 谁在使用 GitHub Achievements API? -您正在使用这个 API 吗?[告诉我们][19],我们会在这里添加您的 logo! +您正在使用这个 API 吗?[告诉我们][new-issue],我们会在这里添加您的 logo! ## 本地开发 @@ -203,13 +203,13 @@ MIT ## 作者 -[Leo Wang][20] +[Leo Wang][author] ## 可获得的成就 以下是目前 GitHub 上可获得的所有成就: -[查看更多 GitHub 成就相关信息][21] +[查看更多 GitHub 成就相关信息][github-achievements] | 成就图标 | 名称 | 描述 | 最高等级 | | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | --------------------------------------- | -------- | @@ -227,39 +227,39 @@ MIT 感谢这些优秀的项目和资源: -- [GitHub][22] - 提供成就系统 -- [Cloudflare Workers][23] - 提供无服务器平台 -- [GitHub Achievements List][24] - 提供完整的成就文档 -- [TypeScript][25] - 提供类型化的 JavaScript -- [Vitest][26] - 提供测试框架 -- [Wrangler][27] - 提供开发和部署工具 -- [pnpm][28] - 提供快速的包管理器 - -[1]: https://github.com/wangrunlin/github-achievements-api/blob/main/LICENSE -[2]: https://github.com/wangrunlin/github-achievements-api/blob/main/package.json -[3]: https://github.com/wangrunlin/github-achievements-api/commits -[4]: https://github.com/wangrunlin/github-achievements-api/actions -[5]: https://nodejs.org -[6]: https://www.typescriptlang.org/ -[7]: https://github.com/prettier/prettier -[8]: https://makeapullrequest.com -[9]: https://github.com/wangrunlin/github-achievements-api/stargazers -[10]: https://github.com/wangrunlin/github-achievements-api/network -[11]: https://github.com/wangrunlin/github-achievements-api/issues -[12]: https://github.com/wangrunlin/github-achievements-api -[13]: https://ko-fi.com/wangrunlin -[14]: README.md -[15]: https://github-achievements-api.wangrunlin.workers.dev -[16]: https://deploy.workers.cloudflare.com/?url=https://github.com/wangrunlin/github-achievements-api -[17]: https://ko-fi.com/wangrunlin -[18]: https://alin.run/sponsor -[19]: https://github.com/wangrunlin/github-achievements-api/issues/new -[20]: https://github.com/wangrunlin -[21]: https://github.com/drknzz/GitHub-Achievements -[22]: https://github.com -[23]: https://workers.cloudflare.com -[24]: https://github.com/drknzz/GitHub-Achievements -[25]: https://www.typescriptlang.org -[26]: https://vitest.dev -[27]: https://developers.cloudflare.com/workers/wrangler/ -[28]: https://pnpm.io +- [GitHub][github] - 提供成就系统 +- [Cloudflare Workers][cloudflare-workers] - 提供无服务器平台 +- [GitHub Achievements List][github-achievements-list] - 提供完整的成就文档 +- [TypeScript][typescript-site] - 提供类型化的 JavaScript +- [Vitest][vitest] - 提供测试框架 +- [Wrangler][wrangler] - 提供开发和部署工具 +- [pnpm][pnpm] - 提供快速的包管理器 + +[license]: https://github.com/wangrunlin/github-achievements-api/blob/main/LICENSE +[package-json]: https://github.com/wangrunlin/github-achievements-api/blob/main/package.json +[commits]: https://github.com/wangrunlin/github-achievements-api/commits +[actions]: https://github.com/wangrunlin/github-achievements-api/actions +[nodejs]: https://nodejs.org +[typescript]: https://www.typescriptlang.org/ +[prettier]: https://github.com/prettier/prettier +[make-pr]: https://makeapullrequest.com +[stars]: https://github.com/wangrunlin/github-achievements-api/stargazers +[forks]: https://github.com/wangrunlin/github-achievements-api/network +[issues]: https://github.com/wangrunlin/github-achievements-api/issues +[repo]: https://github.com/wangrunlin/github-achievements-api +[kofi]: https://ko-fi.com/wangrunlin +[readme-en]: README.md +[demo]: https://github-achievements-api.wangrunlin.workers.dev +[deploy]: https://deploy.workers.cloudflare.com/?url=https://github.com/wangrunlin/github-achievements-api +[kofi-button]: https://ko-fi.com/wangrunlin +[sponsor]: https://alin.run/sponsor +[new-issue]: https://github.com/wangrunlin/github-achievements-api/issues/new +[author]: https://github.com/wangrunlin +[github-achievements]: https://github.com/drknzz/GitHub-Achievements +[github]: https://github.com +[cloudflare-workers]: https://workers.cloudflare.com +[github-achievements-list]: https://github.com/drknzz/GitHub-Achievements +[typescript-site]: https://www.typescriptlang.org +[vitest]: https://vitest.dev +[wrangler]: https://developers.cloudflare.com/workers/wrangler/ +[pnpm]: https://pnpm.io