From b1f910b727646e0811da8f505cae43d98540205b Mon Sep 17 00:00:00 2001 From: Meng Zhang Date: Mon, 5 Jun 2023 11:30:52 -0700 Subject: [PATCH] chore: refactor ci (#196) --- .github/workflows/{docker.rust.yml => ci.yml} | 72 +---------------- .github/workflows/docker.yml | 78 +++++++++++++++++++ Dockerfile.rust => Dockerfile | 0 3 files changed, 79 insertions(+), 71 deletions(-) rename .github/workflows/{docker.rust.yml => ci.yml} (55%) create mode 100644 .github/workflows/docker.yml rename Dockerfile.rust => Dockerfile (100%) diff --git a/.github/workflows/docker.rust.yml b/.github/workflows/ci.yml similarity index 55% rename from .github/workflows/docker.rust.yml rename to .github/workflows/ci.yml index 7f50562..d12a53f 100644 --- a/.github/workflows/docker.rust.yml +++ b/.github/workflows/ci.yml @@ -1,18 +1,16 @@ -name: Create and publish docker image (rust) +name: Build and release binaries. on: workflow_dispatch: push: branches: [ "main" ] paths: - - 'Dockerfile.rust' - 'Cargo.toml' - 'Cargo.lock' - 'crates/**' pull_request: branches: ["main" ] paths: - - 'Dockerfile.rust' - 'Cargo.toml' - 'Cargo.lock' - 'crates/**' @@ -40,74 +38,6 @@ jobs: - name: Cargo fmt run: cargo fmt --check - release-docker: - needs: release-binary - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - # This is used to complete the identity challenge - # with sigstore/fulcio when running outside of PRs. - id-token: write - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - submodules: recursive - - # Workaround: https://github.com/docker/build-push-action/issues/461 - - name: Setup Docker buildx - uses: docker/setup-buildx-action@v2.0.0 - - # Login against a Docker registry except on PR - # https://github.com/docker/login-action - - name: Log into GitHub Container registry - if: github.event_name != 'pull_request' - uses: docker/login-action@v2.0.0 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Log into Docker Hub - if: github.event_name != 'pull_request' - uses: docker/login-action@v2.0.0 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Generate image name - run: | - echo "IMAGE_NAME=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV} - - - uses: int128/docker-build-cache-config-action@v1 - id: cache - with: - image: ghcr.io/${{ env.IMAGE_NAME }}/cache - - # Build and push Docker image with Buildx (don't push on PR) - # https://github.com/docker/build-push-action - - name: Build and push Docker image - id: build-and-push - uses: docker/build-push-action@v3.1.1 - with: - file: Dockerfile.rust - context: . - push: ${{ github.event_name != 'pull_request' }} - tags: | - ghcr.io/${{ env.IMAGE_NAME }}:latest - ${{ env.IMAGE_NAME }}:latest - cache-from: ${{ steps.cache.outputs.cache-from }} - cache-to: ${{ steps.cache.outputs.cache-to }} - - - name: Docker Hub Description - uses: peter-evans/dockerhub-description@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - repository: tabbyml/tabby - release-binary: needs: tests runs-on: ${{ matrix.os }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..b929130 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,78 @@ +name: Create and publish docker image + +on: + workflow_dispatch: + schedule: + - cron: '0 20 */1 * *' + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }} + + # If this is enabled it will cancel current running and start latest + cancel-in-progress: true + +jobs: + release-docker: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + # This is used to complete the identity challenge + # with sigstore/fulcio when running outside of PRs. + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + submodules: recursive + + # Workaround: https://github.com/docker/build-push-action/issues/461 + - name: Setup Docker buildx + uses: docker/setup-buildx-action@v2.0.0 + + # Login against a Docker registry except on PR + # https://github.com/docker/login-action + - name: Log into GitHub Container registry + uses: docker/login-action@v2.0.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Log into Docker Hub + uses: docker/login-action@v2.0.0 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Generate image name + run: | + echo "IMAGE_NAME=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV} + + - uses: int128/docker-build-cache-config-action@v1 + id: cache + with: + image: ghcr.io/${{ env.IMAGE_NAME }}/cache + + # Build and push Docker image with Buildx (don't push on PR) + # https://github.com/docker/build-push-action + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@v3.1.1 + with: + file: Dockerfile + context: . + tags: | + ghcr.io/${{ env.IMAGE_NAME }}:latest + ${{ env.IMAGE_NAME }}:latest + cache-from: ${{ steps.cache.outputs.cache-from }} + cache-to: ${{ steps.cache.outputs.cache-to }} + + - name: Docker Hub Description + uses: peter-evans/dockerhub-description@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + repository: tabbyml/tabby + diff --git a/Dockerfile.rust b/Dockerfile similarity index 100% rename from Dockerfile.rust rename to Dockerfile