Build Development Containers Image #245
This file contains 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 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 |