Skip to content

Build Development Containers Image #248

Build Development Containers Image

Build Development Containers Image #248

Workflow file for this run

name: Build Development Containers Image
on:
workflow_call:
schedule:
- cron: '30 9 * * *'
env:
LATEST_TAG: jammy
NIGHTLY_TAG: nightly-jammy
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
strategy:
matrix:
version:
- 5.2-focal
- 5.3-focal
- 5.4-focal
- 5.5-focal
- 5.6-focal
- 5.7-jammy
- 5.8-jammy
- 5.9-jammy
- 5.10-jammy
- nightly-5.7-jammy
- nightly-5.8-jammy
- nightly-5.9-jammy
- nightly-5.10-jammy
- nightly-6.0-jammy
- nightly-main-jammy
include:
- version: 5.10-jammy
tag: jammy
- version: nightly-main-jammy
tag: nightly-jammy
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Setup templates via Dev Container CLI
run: |
npm install -g @devcontainers/cli
devcontainer templates apply \
-t ghcr.io/kphrx/swift-devcontainer-template/${{ startsWith(matrix.version, 'nightly-') && 'nightly' || 'stable' }} \
-a '{"imageVariant": "${{ matrix.version }}", "swiftFormatBranch": "${{ matrix.version == 'nightly-main-jammy' && 'main' || 'auto' }}"}' \
-w ./${{ matrix.version }}
- name: Pre-build dev container image
uses: devcontainers/ci@v0.3
with:
imageName: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
subFolder: ${{ matrix.version }}
imageTag: ${{ matrix.version }}
cacheFrom: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.version }}
push: always
- name: Publish alias tag
if: matrix.tag
uses: devcontainers/ci@v0.3
with:
imageName: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
subFolder: ${{ matrix.version }}
imageTag: ${{ matrix.tag }}
cacheFrom: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.version }}
push: always
- name: Publish latest tag
if: matrix.tag == env.LATEST_TAG
uses: devcontainers/ci@v0.3
with:
imageName: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
subFolder: ${{ matrix.version }}
imageTag: latest
cacheFrom: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.version }}
push: always
- name: Publish latest tag
if: matrix.tag == env.NIGHTLY_TAG
uses: devcontainers/ci@v0.3
with:
imageName: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
subFolder: ${{ matrix.version }}
imageTag: nightly
cacheFrom: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.version }}
push: always