# Copyright © 2023 OpenIM open source community. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. name: Docker Buildx Images CI on: schedule: - cron: '30 1 * * *' push: branches: - release-* tags: - v* workflow_dispatch: jobs: build-ghcr: runs-on: ubuntu-latest steps: - name: Checkout 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 with: install: true - name: Cache Docker layers uses: actions/cache@v4 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Log in to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Log in to AliYun Docker Hub uses: docker/login-action@v3 with: registry: registry.cn-hangzhou.aliyuncs.com username: ${{ secrets.ALIREGISTRY_USERNAME }} password: ${{ secrets.ALIREGISTRY_TOKEN }} ################################################ # build/ # └── docker # ├── openim-api # │ └── Dockerfile # ├── openim-cmdutils # │ └── Dockerfile # ├── openim-crontask # │ └── Dockerfile # ├── openim-msggateway # │ └── Dockerfile # ├── openim-msgtransfer # │ └── Dockerfile # ├── openim-push # │ └── Dockerfile # ├── openim-rpc-auth # │ └── Dockerfile # ├── openim-rpc-conversation # │ └── Dockerfile # ├── openim-rpc-friend # │ └── Dockerfile # ├── openim-rpc-group # │ └── Dockerfile # ├── openim-rpc-msg # │ └── Dockerfile # ├── openim-rpc-third # │ └── Dockerfile # └── openim-rpc-user # └── Dockerfile ############################################# - name: Extract metadata (tags, labels) for Docker openim-api id: meta1 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-api openim/openim-api registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-api tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-api uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-api/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta1.outputs.tags }} labels: ${{ steps.meta1.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-cmdutils id: meta2 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-cmdutils openim/openim-cmdutils registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-cmdutils tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-cmdutils uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-cmdutils/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta2.outputs.tags }} labels: ${{ steps.meta2.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-crontask id: meta3 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-crontask openim/openim-crontask registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-crontask tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-crontask uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-crontask/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta3.outputs.tags }} labels: ${{ steps.meta3.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-msggateway id: meta4 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-msggateway openim/openim-msggateway registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-msggateway tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-msggateway uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-msggateway/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta4.outputs.tags }} labels: ${{ steps.meta4.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-msgtransfer id: meta5 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-msgtransfer openim/openim-msgtransfer registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-msgtransfer tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-msgtransfer uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-msgtransfer/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta5.outputs.tags }} labels: ${{ steps.meta5.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-push id: meta6 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-push openim/openim-push registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-push tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-push uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-push/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta6.outputs.tags }} labels: ${{ steps.meta6.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-rpc-auth id: meta7 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-rpc-auth openim/openim-rpc-auth registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-auth tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-rpc-auth uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-rpc-auth/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta7.outputs.tags }} labels: ${{ steps.meta7.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-rpc-conversation id: meta8 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-rpc-conversation openim/openim-rpc-conversation registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-conversation tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-rpc-conversation uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-rpc-conversation/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta8.outputs.tags }} labels: ${{ steps.meta8.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-rpc-friend id: meta9 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-rpc-friend openim/openim-rpc-friend registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-friend tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-rpc-friend uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-rpc-friend/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta9.outputs.tags }} labels: ${{ steps.meta9.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-rpc-group id: meta10 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-rpc-group openim/openim-rpc-group registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-group tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-rpc-group uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-rpc-group/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta10.outputs.tags }} labels: ${{ steps.meta10.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-rpc-msg id: meta11 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-rpc-msg openim/openim-rpc-msg registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-msg tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-rpc-msg uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-rpc-msg/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta11.outputs.tags }} labels: ${{ steps.meta11.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-rpc-third id: meta12 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-rpc-third openim/openim-rpc-third registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-third tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-rpc-third uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-rpc-third/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta12.outputs.tags }} labels: ${{ steps.meta12.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Extract metadata (tags, labels) for Docker openim-rpc-user id: meta13 uses: docker/metadata-action@v5.5.1 with: images: | ghcr.io/openimsdk/openim-rpc-user openim/openim-rpc-user registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-user tags: | type=ref,event=tag type=schedule type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern=v{{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha - name: Build and push Docker image for openim-rpc-user uses: docker/build-push-action@v5 with: context: . file: ./build/images/openim-rpc-user/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta13.outputs.tags }} labels: ${{ steps.meta13.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache