live/pipelines: Create scope pipeline scaffold #8
Workflow file for this run
This file contains hidden or 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
| name: Build ai-runner noop docker image | |
| on: | |
| pull_request: | |
| paths: | |
| - "runner/docker/Dockerfile.live-*" | |
| - "runner/app/**" | |
| - "runner/images/**" | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - '*' | |
| paths: | |
| - "runner/docker/Dockerfile.live-*" | |
| - "runner/app/**" | |
| - "runner/images/**" | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: ${{ !((github.ref_type == 'branch' && github.ref_name == 'main') || github.ref_type == 'tag') }} | |
| jobs: | |
| build-common-base: | |
| name: Build common live base image | |
| permissions: | |
| pull-requests: read | |
| outputs: | |
| digest: ${{ steps.build-base.outputs.digest }} | |
| runs-on: [self-hosted, linux, amd64] | |
| steps: | |
| - name: Check out code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 50 | |
| ref: ${{ github.event.pull_request.head.sha }} | |
| - name: Get changed files | |
| id: changed-files | |
| uses: tj-actions/changed-files@823fcebdb31bb35fdf2229d9f769b400309430d0 # v46.0.3 | |
| with: | |
| files: | | |
| runner/docker/Dockerfile.live-base | |
| - name: Check if build needed | |
| id: check_build | |
| if: | | |
| github.event_name == 'workflow_dispatch' || | |
| github.event_name == 'push' || | |
| ( | |
| github.event_name == 'pull_request' && | |
| github.event.pull_request.head.repo.full_name == github.repository && | |
| steps.changed-files.outputs.any_changed == 'true' | |
| ) | |
| run: echo "should_build=true" >> $GITHUB_OUTPUT | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.CI_DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.CI_DOCKERHUB_TOKEN }} | |
| - name: Build and push live-base image | |
| uses: docker/build-push-action@v6 | |
| id: build-base | |
| if: steps.check_build.outputs.should_build == 'true' | |
| with: | |
| context: "{{defaultContext}}:runner" | |
| platforms: linux/amd64 | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: livepeer/ai-runner:live-base | |
| file: docker/Dockerfile.live-base | |
| cache-from: type=registry,ref=livepeer/ai-runner:live-base-dockerbuildcache | |
| cache-to: type=registry,ref=livepeer/ai-runner:live-base-dockerbuildcache,mode=max | |
| build-noop: | |
| name: Build pipeline image (noop) | |
| needs: build-common-base | |
| runs-on: ubuntu-latest | |
| permissions: | |
| pull-requests: read | |
| steps: | |
| - name: Check out code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha }} | |
| - name: Get changed files | |
| id: changed-files | |
| uses: tj-actions/changed-files@823fcebdb31bb35fdf2229d9f769b400309430d0 # v46.0.3 | |
| with: | |
| files: | | |
| runner/docker/Dockerfile.live-app-noop | |
| runner/app/** | |
| - name: Check if build needed | |
| id: check_build | |
| if: | | |
| github.event_name == 'workflow_dispatch' || | |
| github.event_name == 'push' || | |
| ( | |
| github.event_name == 'pull_request' && | |
| github.event.pull_request.head.repo.full_name == github.repository && | |
| steps.changed-files.outputs.any_changed == 'true' | |
| ) | |
| run: echo "should_build=true" >> $GITHUB_OUTPUT | |
| - name: Cleanup hosted runner | |
| uses: ./.github/actions/cleanup-runner | |
| if: steps.check_build.outputs.should_build == 'true' | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.CI_DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.CI_DOCKERHUB_TOKEN }} | |
| - name: Extract metadata for Docker | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: livepeer/ai-runner | |
| tags: | | |
| type=raw,value=live-app-noop,enable={{is_default_branch}} | |
| type=sha,prefix=live-app-noop- | |
| type=ref,event=pr,prefix=live-app-noop- | |
| type=ref,event=tag,prefix=live-app-noop- | |
| type=raw,value=latest,enable={{is_default_branch}},prefix=live-app-noop- | |
| - name: Get version information (for docker build tag) | |
| id: version | |
| run: | | |
| echo "version=$(bash runner/print_version.sh)" >> "$GITHUB_OUTPUT" | |
| - name: Build and push noop image | |
| uses: docker/build-push-action@v6 | |
| if: steps.check_build.outputs.should_build == 'true' | |
| with: | |
| context: "{{defaultContext}}:runner" | |
| build-args: | | |
| VERSION=${{ steps.version.outputs.version }} | |
| # only specify base image if we just built it above, otherwise use whatever default is in the Dockerfile | |
| ${{ needs.build-common-base.outputs.digest && format('BASE_IMAGE=livepeer/ai-runner@{0}', needs.build-common-base.outputs.digest) }} | |
| file: docker/Dockerfile.live-app-noop | |
| platforms: linux/amd64 | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| annotations: ${{ steps.meta.outputs.annotations }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=registry,ref=livepeer/ai-runner:live-app-noop-dockerbuildcache | |
| cache-to: type=registry,ref=livepeer/ai-runner:live-app-noop-dockerbuildcache,mode=max |