使用 GitHub Actions 進行可重現構建
目錄
SOURCE_DATE_EPOCH
是一個標準化環境變數,用於指示構建工具生成可重現的輸出。為構建設定此環境變數可使映象索引、配置和檔案元資料中的時間戳反映指定的 Unix 時間。
要在 GitHub Actions 中設定此環境變數,請在構建步驟中使用內建的 env
屬性。
Unix 紀元時間戳
以下示例將 SOURCE_DATE_EPOCH
變數設定為 0,即 Unix 紀元。
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build
uses: docker/build-push-action@v6
with:
tags: user/app:latest
env:
SOURCE_DATE_EPOCH: 0
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build
uses: docker/bake-action@v6
env:
SOURCE_DATE_EPOCH: 0
Git 提交時間戳
以下示例將 SOURCE_DATE_EPOCH
設定為 Git 提交時間戳。
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Get Git commit timestamps
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV
- name: Build
uses: docker/build-push-action@v6
with:
tags: user/app:latest
env:
SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }}
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Get Git commit timestamps
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV
- name: Build
uses: docker/bake-action@v6
env:
SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }}
附加資訊
有關 BuildKit 中 SOURCE_DATE_EPOCH
支援的更多資訊,請參閱BuildKit 文件。