Build & Publish AnythingLLM for ARM64 and x86 (#549) #118
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This Github action is for publishing of the primary image for AnythingLLM | |
# It will publish a linux/amd64 and linux/arm64 image at the same time | |
# This file should ONLY BY USED FOR `master` BRANCH. | |
# TODO: Update `runs-on` for arm64 when GitHub finally supports | |
# native arm environments as QEMU takes around 1 hour to build | |
# ref: https://github.com/actions/runner-images/issues/5631 :( | |
name: Publish AnythingLLM Primary Docker image (amd64/arm64) | |
concurrency: | |
group: build-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: ['master'] # master branch only. Do not modify. | |
paths-ignore: | |
- '*.md' | |
- 'cloud-deployments/*' | |
- 'images/*' | |
- '.vscode/*' | |
- '**/.env.example' | |
jobs: | |
push_multi_platform_to_registries: | |
name: Push Docker multi-platform image to multiple registries | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
contents: read | |
steps: | |
- name: Check out the repo | |
uses: actions/checkout@v4 | |
- name: Parse repository name to lowercase | |
shell: bash | |
run: echo "repo=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT | |
id: lowercase_repo | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Log in to Docker Hub | |
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Log in to the Container registry | |
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Extract metadata (tags, labels) for Docker | |
id: meta | |
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 | |
with: | |
images: | | |
mintplexlabs/anythingllm | |
ghcr.io/${{ github.repository }} | |
- name: Build and push multi-platform Docker image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ./docker/Dockerfile | |
push: true | |
platforms: linux/amd64,linux/arm64 | |
tags: | | |
${{ steps.meta.outputs.tags }} | |
${{ github.ref_name == 'master' && 'mintplexlabs/anythingllm:latest' || '' }} | |
${{ github.ref_name == 'master' && format('ghcr.io/{0}:{1}', steps.lowercase_repo.outputs.repo, 'latest') || '' }} | |
labels: ${{ steps.meta.outputs.labels }} |