A simple expression calculator that supports +, -, *, / operators.
Project description
CI-CD-Test
git commit格式
规范格式:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
对于大部分提交,我们只需要关心第一行 header 部分:<type>(<scope>): <subject>。
type(类型):必填,说明这次提交的性质。常用的type包括:feat: 新功能 (feature)fix: 修复 bugdocs: 只修改了文档 (documentation)style: 代码格式修改,不影响代码逻辑 (空格、格式化、缺少分号等)refactor: 代码重构,既不是修复 bug 也不是新增功能test: 增加或修改测试chore: 构建过程或辅助工具的变动 (比如修改 CI 流程)ci: 对 CI 配置或脚本的修改
scope(范围):选填,说明本次提交影响的范围。例如(api),(db),(calc)。subject(主题):必填,简短描述本次提交的目的,不超过 50 个字符。- 以动词开头,使用第一人称现在时,比如
change而不是changed或changes。 - 第一个字母小写。
- 末尾不加句号 (
.)。
- 以动词开头,使用第一人称现在时,比如
示例:
-
好的示例:
feat(parser): add support for parentheses fix: correct calculation for division by zero docs: update README with setup instructions chore: upgrade pytest to version 8.5.0 -
不好的示例:
fixed the bug Update WIP
1. name
name: Node.js CI/CD Pipeline
- 作用:定义工作流的名称。这个名字会显示在你的 GitHub 仓库的 "Actions" 标签页中,方便识别。
2. on
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
- 作用:定义触发工作流的事件。
push: 当有代码被推送到指定分支时触发。这里我们指定了main分支。pull_request: 当有人创建一个指向main分支的 Pull Request 或更新该 PR 时触发。这对于在合并代码前进行检查非常重要。
3. permissions
permissions:
contents: read
packages: write
pages: write
id-token: write
- 作用:设置
GITHUB_TOKEN的权限范围,遵循最小权限原则,提高安全性。 contents: read: 允许actions/checkout拉取代码。packages: write: 允许向 GitHub Container Registry 推送 Docker 镜像。pages: write和id-token: write: 部署到 GitHub Pages 所需的权限。
4. jobs
工作流由一个或多个 job(任务)组成。默认情况下,所有 job 并行运行,但我们可以通过 needs 关键字定义依赖关系。
4.1 build-and-test Job
这是CI阶段的核心任务。
runs-on: ubuntu-latest:指定任务运行在 GitHub 托管的最新版 Ubuntu 虚拟机上。steps:定义该任务按顺序执行的步骤。uses: actions/checkout@v4:这是一个官方的 Action,作用是检出你的仓库代码到虚拟机中,以便后续步骤可以访问它。uses: actions/setup-node@v4:设置指定的 Node.js 环境。with: cache: 'npm'会缓存依赖,如果package-lock.json没有变化,下次运行时会快很多。run: npm ci:执行 shell 命令。npm ci会根据package-lock.json文件精确安装依赖,比npm install更适合 CI 环境。run: npm run build和run: npm test:执行你在package.json中定义的构建和测试脚本。uses: actions/upload-artifact@v4:将文件或目录打包成一个 "产物" (artifact)。产物可以在不同的job之间共享。这里我们将构建结果上传,以便deploy-to-pages任务可以使用它。
4.2 build-and-push-docker Job
这是CD阶段的一部分,负责容器化。
needs: build-and-test:关键! 这表示此任务必须等待build-and-test任务成功完成后才能开始。if: github.event_name == 'push' && github.ref == 'refs/heads/main':关键! 这是一个条件判断。它确保这个部署任务只在代码被直接推送到main分支时运行,而不会在 Pull Request 中运行。docker/login-action@v3:登录到容器镜像仓库。这里我们使用ghcr.io(GitHub 自己的镜像仓库),并使用自动生成的secrets.GITHUB_TOKEN进行身份验证。docker/metadata-action@v5:智能地为你的 Docker 镜像生成标签。例如,基于 Git 标签、分支名或 commit SHA。docker/build-push-action@v5:构建 Dockerfile 并将其推送到指定的仓库。
4.3 deploy-to-pages Job
这是CD阶段的另一部分,负责部署到静态网站托管。
needs和if的作用同上,确保在正确的时间和条件下执行。actions/download-artifact@v4:下载之前build-and-test任务上传的产物。actions/configure-pages@v5,actions/upload-pages-artifact@v3,actions/deploy-pages@v4:这是部署到 GitHub Pages 的标准三步曲。它们会配置环境,将你的文件打包成 Pages 接受的格式,然后完成部署。
- 提交代码:将上述所有文件提交到你的 GitHub 仓库。
- 启用 GitHub Pages:
- 进入你的仓库 ->
Settings->Pages。 - 在
Build and deployment下的Source选择GitHub Actions。
- 进入你的仓库 ->
- 触发 CI:
- 创建一个新的分支,做一些修改,然后创建一个 Pull Request 指向
main分支。 - 进入仓库的
Actions标签页,你会看到build-and-test任务正在运行。但部署任务会因为if条件而被跳过。
- 创建一个新的分支,做一些修改,然后创建一个 Pull Request 指向
- 触发 CD:
- 将你的 Pull Request 合并到
main分支。 - 再次进入
Actions标签页,你会看到工作流被再次触发。这次,在build-and-test成功后,build-and-push-docker和deploy-to-pages任务也会被执行。
- 将你的 Pull Request 合并到
- 验证结果:
- Docker 镜像:在你的个人主页或组织主页的
Packages标签页中,可以看到新推送的容器镜像。 - GitHub Pages:稍等片刻,访问你的 GitHub Pages URL (通常是
https://<你的用户名>.github.io/<仓库名>/),应该能看到部署的内容。
- Docker 镜像:在你的个人主页或组织主页的
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_expression_calculator_ltcsz-1.0.0.tar.gz.
File metadata
- Download URL: py_expression_calculator_ltcsz-1.0.0.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a3864afe9c00a41bfc565d659586bf536cff705284ccf2824357dd9be4a4d3b
|
|
| MD5 |
28b637eef436c5add1ce8f0434a48f6e
|
|
| BLAKE2b-256 |
c11984299966c9be90b46fc2b9fc96b1e9406c90a90decf67c07298c72bb4829
|
File details
Details for the file py_expression_calculator_ltcsz-1.0.0-py3-none-any.whl.
File metadata
- Download URL: py_expression_calculator_ltcsz-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d07fc3a3a5f7605f373df635493f48cd7836c464b2d7aaae9ecdc3b250a7691e
|
|
| MD5 |
303a4c78aa7e19cd1cf858d2999d5a32
|
|
| BLAKE2b-256 |
afa6f2cc81b6bd59901118be75282196fa6fbcee0a2bc0d2d5b8edcdb9e92643
|