[toc] # Overview 從 GitHub Actions 推送 Docker Image 至 GHCR 的配置 ## Action Secrets - **REGISTRY_URL**: `ghcr.io/<username>` 或 `ghcr.io/<organizationName>` - **REGISTRY_USERNAME**: 擁有 token 的使用者名稱 - **REGISTRY_PASSWORD**: Classic token(需具備 packages 的讀寫權限) > [!NOTE] > `docker login "$REGISTRY_URL"` 中的 URL 也可以直接使用 `ghcr.io`,不一定要加上 `/username` ## Example workflow.yml File: `.github/workflows/workflow.yml` ```yaml name: Build Docker Image on: push: branches: - main pull_request: branches: - main workflow_dispatch: jobs: build: runs-on: ubuntu-latest env: REGISTRY_URL: ${{ secrets.REGISTRY_URL }} REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Build Docker Image run: | docker build --progress=plain -t "$REGISTRY_URL/cgit" . - name: Log in to Docker Registry run: echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY_URL" -u "$REGISTRY_USERNAME" --password-stdin - name: Push Docker Image run: docker push "$REGISTRY_URL/cgit"