httpbin-rs 0.1.0

使用 Rust 实现 httpbin
# 集成 GitHub Action 构建

## 创建 GitHub Action 配置文件

在项目根目录下创建 `.github/workflows` 目录,并在该目录下创建 `docker-build.yml` 文件,内容如下:

```yaml
name: docker-build

env:
  IMAGE: httpbin-rs
  TAG: latest
on:
  push:
    paths:
      - "src/**"
      - "Cargo.toml"
      - "Cargo.lock"
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    environment: default # 利用 Environment(default) 中配置的 Secrets 和 Variables
    steps:
      - uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ vars.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Login to Aliyun ACR
        uses: docker/login-action@v3
        with:
          registry: ${{ vars.ALIYUNACR_REGISTRY }}
          username: ${{ vars.ALIYUNACR_USERNAME }}
          password: ${{ secrets.ALIYUNACR_TOKEN }}

      - name: Build and push
        uses: docker/build-push-action@v6
        with:
          platforms: linux/amd64,linux/arm64
          context: .
          file: Dockerfile
          push: true
          tags: ${{ vars.DOCKERHUB_USERNAME }}/${{ env.IMAGE }}:${{ env.TAG }},${{ vars.ALIYUNACR_REGISTRY }}/${{ vars.ALIYUNACR_NAMESPACE }}/${{ env.IMAGE }}:${{ env.TAG }}
```

当目录下的 `src` 目录、`Cargo.toml` 或 `Cargo.lock` 文件发生变化时,触发构建;也可以手动触发构建。

## 配置 GitHub Secrets

在项目的 `Settings` -> `Environments` -> `New environment` 中创建一个环境。

1. 配置 Environment secrets:

- `DOCKERHUB_TOKEN`:Docker Hub Token
- `ALIYUNACR_TOKEN`:阿里云 ACR Token

2. 配置 Environment variables:

- `DOCKERHUB_USERNAME`:Docker Hub 用户
- `ALIYUNACR_REGISTRY`:阿里云 ACR Registry
- `ALIYUNACR_USERNAME`:阿里云 ACR 用户名
- `ALIYUNACR_NAMESPACE`:阿里云 ACR 命名空间

## 提交代码

提交代码,之后每次代码提交,符合条件时会触发构建。

可能本次提交,由于 src 目录以及 Cargo.toml 或 Cargo.lock 文件未发生变化,不会触发构建。此时我们可以手动触发构建。