Skip to content

Commit

Permalink
[dev-base] publish some dev-base images across various specs for ubun…
Browse files Browse the repository at this point in the history
…tu:24.04
  • Loading branch information
dray92 committed Jan 11, 2025
1 parent ec29d7a commit 9674cd5
Show file tree
Hide file tree
Showing 13 changed files with 1,501 additions and 106 deletions.
302 changes: 196 additions & 106 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
@@ -1,112 +1,202 @@
name: '[Docker] Build and Publish Runner Images'

on:
pull_request:
paths:
- "images/ubuntu/**"
push:
branches: [main]
paths:
- ".github/workflows/docker-image.yml"
- "images/ubuntu/**"
workflow_dispatch:
inputs:
release_type:
description: 'Release type (devel/latest)'
required: true
default: 'devel'
pull_request:
paths:
- .github/workflows/**
- images/ubuntu/**
- images.Dev/ubuntu/**
push:
branches:
- main
paths:
- .github/workflows/**
- images/ubuntu/**
- images.Dev/ubuntu/**
workflow_dispatch:
inputs:
release_type:
description: Release type (devel/latest)
required: true
default: devel

jobs:
build-images:
name: Build Ubuntu ${{ matrix.version }}
strategy:
matrix:
version: [22.04, 24.04]
runs-on: ubuntu-xl
permissions:
contents: write
packages: write

steps:
- uses: actions/checkout@v4
build-github-action-runner-images:
name: '[GitHub Actions Runner Image] Build Ubuntu ${{ matrix.version }}'
if: (github.event_name == 'pull_request' && contains(github.event.pull_request.changed_files, 'images/ubuntu/')) || (github.event_name == 'push' && contains(github.event.commits, 'images/ubuntu/'))
strategy:
matrix:
version:
- 22.04
- 24.04
runs-on: ubuntu-xl
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v4
- name: Set date
id: date
run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/#-action@v3
with:
username: '${{ vars.DOCKER_USERNAME }}'
password: '${{ secrets.DOCKER_PASSWORD }}'
- name: Build and push PR
if: github.event_name == 'pull_request'
uses: docker/build-push-action@v5
with:
context: .
file: 'images/ubuntu/dockerfiles/Dockerfile.${{ matrix.version }}'
push: false
cache-from: |
type=registry,ref=devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-cache
tags: |
devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-pr-${{ github.event.pull_request.number }}
outputs: |
type=registry,oci-mediatypes=true,compression=estargz,force-compression=true
- name: Build and push devel
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'devel')
uses: docker/build-push-action@v5
with:
context: .
file: 'images/ubuntu/dockerfiles/Dockerfile.${{ matrix.version }}'
push: true
cache-from: |
type=registry,ref=devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-cache
cache-to: |
type=registry,ref=devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-cache,mode=max
tags: |
devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-devel
devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-devel-${{ steps.date.outputs.date }}
outputs: |
type=registry,oci-mediatypes=true,compression=estargz,force-compression=true
- name: Create devel release
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'devel')
uses: softprops/action-gh-release@v1
with:
name: 'Devel Release ${{ steps.date.outputs.date }}'
tag_name: 'devel-${{ steps.date.outputs.date }}'
prerelease: true
body: |
Docker images available at:
- devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-devel
- devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-devel-${{ steps.date.outputs.date }}
- name: Tag latest release
if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'latest'
uses: docker/build-push-action@v5
with:
context: .
file: 'images/ubuntu/dockerfiles/Dockerfile.${{ matrix.version }}'
push: true
tags: |
devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}
devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-latest
outputs: |
type=registry,oci-mediatypes=true,compression=estargz,force-compression=true
- name: Create latest release
if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'latest'
uses: softprops/action-gh-release@v1
with:
name: 'Latest Release ${{ steps.date.outputs.date }}'
tag_name: 'latest-${{ steps.date.outputs.date }}'
prerelease: false
body: |
Docker images available at:
- devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}
- devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-latest
- name: Set date
id: date
run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
uses: docker/#-action@v3
with:
username: ${{ vars.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build and push PR
if: github.event_name == 'pull_request'
uses: docker/build-push-action@v5
with:
context: .
file: images/ubuntu/dockerfiles/Dockerfile.${{ matrix.version }}
push: false
cache-from: |
type=registry,ref=devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-cache
tags: |
devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-pr-${{ github.event.pull_request.number }}
outputs: |
type=registry,oci-mediatypes=true,compression=estargz,force-compression=true
- name: Build and push devel
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'devel')
uses: docker/build-push-action@v5
with:
context: .
file: images/ubuntu/dockerfiles/Dockerfile.${{ matrix.version }}
push: true
cache-from: |
type=registry,ref=devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-cache
cache-to: |
type=registry,ref=devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-cache,mode=max
tags: |
devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-devel
devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-devel-${{ steps.date.outputs.date }}
outputs: |
type=registry,oci-mediatypes=true,compression=estargz,force-compression=true
- name: Create devel release
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'devel')
uses: softprops/action-gh-release@v1
with:
name: Devel Release ${{ steps.date.outputs.date }}
tag_name: devel-${{ steps.date.outputs.date }}
prerelease: true
body: |
Docker images available at:
- devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-devel
- devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-devel-${{ steps.date.outputs.date }}
- name: Tag latest release
if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'latest'
uses: docker/build-push-action@v5
with:
context: .
file: images/ubuntu/dockerfiles/Dockerfile.${{ matrix.version }}
push: true
tags: |
devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}
devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-latest
outputs: |
type=registry,oci-mediatypes=true,compression=estargz,force-compression=true
- name: Create latest release
if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'latest'
uses: softprops/action-gh-release@v1
with:
name: Latest Release ${{ steps.date.outputs.date }}
tag_name: latest-${{ steps.date.outputs.date }}
prerelease: false
body: |
Docker images available at:
- devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}
- devzeroinc/gha-runner-image-ubuntu:${{ matrix.version }}-latest
build-workspace-base-images:
name: '[DevZero Base Image][${{ matrix.base }}] Build Ubuntu ${{ matrix.version }}'
if: (github.event_name == 'pull_request' && contains(github.event.pull_request.changed_files, 'images.Dev/ubuntu/')) || (github.event_name == 'push' && contains(github.event.commits, 'images.Dev/ubuntu/'))
strategy:
matrix:
version:
- 24.04
base:
- go
- persona-frontend
- persona-platform
- python
runs-on: ubuntu-xl
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v4
- name: Set date
id: date
run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/#-action@v3
with:
username: '${{ vars.DOCKER_USERNAME }}'
password: '${{ secrets.DOCKER_PASSWORD }}'
- name: Build and push PR
if: github.event_name == 'pull_request'
uses: docker/build-push-action@v5
with:
context: .
file: 'images.Dev/ubuntu/dockerfiles/${{ matrix.base }}/Dockerfile.${{ matrix.version }}'
push: false
cache-from: |
type=registry,ref=devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}-cache
tags: |
devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}-pr-${{ github.event.pull_request.number }}
outputs: |
type=registry,oci-mediatypes=true,compression=estargz,force-compression=true
- name: Build and push devel
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'devel')
uses: docker/build-push-action@v5
with:
context: .
file: 'images.Dev/ubuntu/dockerfiles/${{ matrix.base }}/Dockerfile.${{ matrix.version }}'
push: true
cache-from: |
type=registry,ref=devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}-cache
cache-to: |
type=registry,ref=devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}-cache,mode=max
tags: |
devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}-devel
devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}-devel-${{ steps.date.outputs.date }}
outputs: |
type=registry,oci-mediatypes=true,compression=estargz,force-compression=true
- name: Create devel release
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'devel')
uses: softprops/action-gh-release@v1
with:
name: '[${{ matrix.base }}] Devel Release ${{ steps.date.outputs.date }}'
tag_name: 'devel-${{ matrix.base }}-${{ steps.date.outputs.date }}'
prerelease: true
body: |
Docker images available at:
- devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}-devel
- devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}-devel-${{ steps.date.outputs.date }}
- name: Tag latest release
if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'latest'
uses: docker/build-push-action@v5
with:
context: .
file: 'images.Dev/ubuntu/dockerfiles/${{ matrix.base }}/Dockerfile.${{ matrix.version }}'
push: true
tags: |
devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}
devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}-latest
outputs: |
type=registry,oci-mediatypes=true,compression=estargz,force-compression=true
- name: Create latest release
if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_type == 'latest'
uses: softprops/action-gh-release@v1
with:
name: '[${{ matrix.base }}] Latest Release ${{ steps.date.outputs.date }}'
tag_name: 'latest-${{ matrix.base }}-${{ steps.date.outputs.date }}'
prerelease: false
body: |
Docker images available at:
- devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}
- devzeroinc/dev-base-ubuntu:${{ matrix.version }}-${{ matrix.base }}-latest
Loading

0 comments on commit 9674cd5

Please # to comment.