name: Build & Publish to Docker Hub on: workflow_call: inputs: base_version: description: 'Base version (latest or develop)' required: true type: string info_version: description: 'Informational version number (e.g. 0.3.7-alpha)' required: true type: string tag_version: description: 'Docker tag version (e.g. v0.3.7)' required: true type: string secrets: docker_hub_username: required: true docker_hub_access_token: required: true jobs: build_and_push: name: Build & Publish runs-on: ubuntu-latest if: contains(github.event.head_commit.message, '[no build]') == false steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Docker Buildx Base uses: docker/setup-buildx-action@v1 id: builder-base - name: Set up Docker Buildx NVIDIA uses: docker/setup-buildx-action@v1 id: builder-nvidia - name: Set up Docker Buildx VAAPI uses: docker/setup-buildx-action@v1 id: builder-vaapi - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.docker_hub_username }} password: ${{ secrets.docker_hub_access_token }} - name: Build and push base uses: docker/build-push-action@v2 with: builder: ${{ steps.builder-base.outputs.name }} context: . file: ./docker/Dockerfile push: true build-args: | INFO_VERSION=${{ inputs.info_version }}-docker tags: | jasongdove/ersatztv:${{ inputs.base_version }} jasongdove/ersatztv:${{ inputs.tag_version }} - name: Build and push nvidia uses: docker/build-push-action@v2 with: builder: ${{ steps.builder-nvidia.outputs.name }} context: . file: ./docker/nvidia/Dockerfile push: true build-args: | INFO_VERSION=${{ inputs.info_version }}-docker-nvidia tags: | jasongdove/ersatztv:${{ inputs.base_version }}-nvidia jasongdove/ersatztv:${{ inputs.tag_version }}-nvidia - name: Build and push vaapi uses: docker/build-push-action@v2 with: builder: ${{ steps.builder-vaapi.outputs.name }} context: . file: ./docker/vaapi/Dockerfile push: true build-args: | INFO_VERSION=${{ inputs.info_version }}-docker-vaapi tags: | jasongdove/ersatztv:${{ inputs.base_version }}-vaapi jasongdove/ersatztv:${{ inputs.tag_version }}-vaapi