-
-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (120 loc) · 3.88 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Build Development Containers Image
on:
workflow_call:
schedule:
- cron: '30 9 * * *'
env:
LATEST_TAG: noble
NIGHTLY_TAG: nightly-jammy
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
strategy:
matrix:
version:
# based on ubuntu:focal
- 5.2-focal
- 5.3-focal
- 5.4-focal
- 5.5-focal
- 5.6-focal
- 5.7-focal
- 5.8-focal
- 5.9-focal
- 5.10-focal
- 6.0-focal
- nightly-5.3-focal
- nightly-5.4-focal
- nightly-5.5-focal
- nightly-5.6-focal
- nightly-5.7-focal
- nightly-5.8-focal
- nightly-5.9-focal
- nightly-5.10-focal
- nightly-6.0-focal
- nightly-main-focal
# based on ubuntu:jammy
- 5.7-jammy
- 5.8-jammy
- 5.9-jammy
- 5.10-jammy
- 6.0-jammy
- nightly-5.7-jammy
- nightly-5.8-jammy
- nightly-5.9-jammy
- nightly-5.10-jammy
- nightly-6.0-jammy
- nightly-main-jammy
# based on ubuntu:noble
- 5.10-noble
- 6.0-noble
include:
# based on ubuntu:focal
- version: 6.0-focal
tag: focal
- version: nightly-main-focal
tag: nightly-focal
# based on ubuntu:jammy
- version: 6.0-jammy
tag: jammy
- version: nightly-main-jammy
tag: nightly-jammy
# based on ubuntu:noble
- version: 6.0-noble
tag: noble
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