Skip to content

Build and Publish the Production OneDocker Image #2065

Build and Publish the Production OneDocker Image

Build and Publish the Production OneDocker Image #2065

name: Build and Publish the Production OneDocker Image
on:
workflow_dispatch:
inputs:
tags_csv:
description: A list of tags to add to the docker image in CSV form (eg. latest,1234,rc)
required: true
type: string
tracker_hash:
description: "[Internal usage] Used for tracking workflow job status within Meta infra"
required: false
type: str
env:
REGISTRY: ghcr.io
GH_REGISTRY_IMAGE_NAME: ghcr.io/${{ github.repository }}/prod/onedocker
jobs:
build_and_publish_image:
name: Build Image
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
steps:
- name: Checkout Repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Print Tracker Hash
run: echo ${{ github.event.inputs.tracker_hash }}
- name: Set Up Docker Tags
id: set_up_tags
run: |
unformatted_tags=${{ inputs.tags_csv }}
formatted_tags=${{ env.GH_REGISTRY_IMAGE_NAME }}:${{ github.sha }},${{ env.GH_REGISTRY_IMAGE_NAME }}:${unformatted_tags/,/,${{ env.GH_REGISTRY_IMAGE_NAME }}:}
echo $formatted_tags
echo "docker_tags=$formatted_tags" >> $GITHUB_OUTPUT
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Image
uses: docker/build-push-action@v3
with:
context: docker/onedocker/prod
file: docker/onedocker/prod/Dockerfile.ubuntu
tags: ${{ steps.set_up_tags.outputs.docker_tags}}
push: true
cache-from: type=gha,scope=$GITHUB_REF_NAME-onedocker-prod
cache-to: type=gha,mode=max,scope=$GITHUB_REF_NAME-onedocker-prod