name: "Build and Push Playground Image" env: IMAGE_NAME: "jland/llama-stack-playground" IMAGE_TAG_LATEST: "latest" REGISTRY_URL: "quay.io" # Replace with your registry URL REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} on: pull_request: paths: - 'llama_stack/distribution/ui/**' push: paths: - 'llama_stack/distribution/ui/**' tags: - '*' jobs: ######################################## #### Validate Code and Image Builds #### ######################################## validate-code: name: Validate Playground Code runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.9' - name: "Validate Code" id: validate_code run: | cd llama_stack/distribution/ui pip install -r requirements.txt nohup streamlit run app.py & sleep 10 curl -f http://localhost:8501 || exit 1 ######################################## #### Validate Code and Image Builds #### ######################################## validate-image: name: Validate Playground Image Build runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: - name: Checkout code uses: actions/checkout@v4 # Build and Push image to registry with tag matching the Git Tag and latest - name: Build and push uses: docker/build-push-action@v6 with: context: ./llama_stack/distribution/ui/ file: ./llama_stack/distribution/ui/Containerfile push: false tags: ${{ env.REGISTRY_URL }}/${{ env.IMAGE_NAME }}:local ulimit: nofile=4096 validate-and-deploy-image: name: Validate and Deploy Playground Image runs-on: ubuntu-latest needs: validate-code if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') steps: - name: Checkout code uses: actions/checkout@v4 - name: Login to Image Registry uses: docker/login-action@v3 with: username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} registry: ${{ env.REGISTRY_URL }} # Build and Push image to registry with tag matching the Git Tag and latest - name: Build and push uses: docker/build-push-action@v6 with: context: ./llama_stack/distribution/ui/ file: ./llama_stack/distribution/ui/Containerfile push: true tags: ${{ env.REGISTRY_URL }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}, ${{ env.REGISTRY_URL }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG_LATEST }} ulimit: nofile=4096