-
Notifications
You must be signed in to change notification settings - Fork 618
135 lines (129 loc) · 4.1 KB
/
test-images-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
131
132
133
134
135
name: prep
on:
push:
branches:
- main
- 'release/**'
pull_request:
paths-ignore:
- '**.md'
env:
GO_VERSION: 1.23.x
REGISTRY: ghcr.io
BUSYBOX_VERSION: 5ad83957fa74aafd061afbfb8da14ce3220659a9
REGISTRY_VERSION: v2.8.3
jobs:
build-busybox:
name: busybox
runs-on: ubuntu-24.04
steps:
- id: cache-busybox
uses: actions/cache@v2
with:
path: ~/busybox.exe
key: cache-busybox-${{ env.BUSYBOX_VERSION }}
- uses: actions/checkout@v4
if: steps.cache-busybox.outputs.cache-hit != 'true'
with:
repository: rmyorston/busybox-w32
ref: ${{ env.BUSYBOX_VERSION }}
fetch-depth: 1
path: ./src/busybox-w32
- if: steps.cache-busybox.outputs.cache-hit != 'true'
working-directory: ./src/busybox-w32
run: |
sudo apt-get install gcc-mingw-w64 ncurses-dev
pwd
make mingw64_defconfig
make
cp busybox.exe ~/
build-registry:
name: registry
runs-on: ubuntu-24.04
steps:
- id: cache-registry
uses: actions/cache@v2
with:
path: ~/build
key: cache-registry-${{ env.REGISTRY_VERSION }}
- uses: actions/checkout@v4
if: steps.cache-registry.outputs.cache-hit != 'true'
with:
repository: distribution/distribution
ref: ${{ env.REGISTRY_VERSION }}
path: "${{ github.workspace }}/go/src/github.com/distribution/distribution"
fetch-depth: 1
- uses: actions/setup-go@v5
if: steps.cache-registry.outputs.cache-hit != 'true'
with:
go-version: ${{ env.GO_VERSION }}
check-latest: true
cache: true
- if: steps.cache-registry.outputs.cache-hit != 'true'
working-directory: "${{ github.workspace }}/go/src/github.com/distribution/distribution"
run: |
#mkdir ~/build
#VERSION=$(git describe --match 'v[0-9]*' --dirty='.m' --always --tags)
#REVISION=$(git rev-parse HEAD)
#GOOS=windows go build \
# -trimpath \
# -ldflags "-X github.com/distribution/distribution/v3/version.version=$VERSION -X github.com/distribution/distribution/v3/version.revision=$REVISION -s -w" \
# -o ~/build/registry ./cmd/registry
export GO111MODULE=auto
make binaries
cp ./bin/registry ~/build
cp ./cmd/registry/config-dev.yml ~/build
image-busybox:
name: image-busybox
runs-on: windows-2022
needs: build-busybox
defaults:
run:
shell: bash
steps:
- id: cache-busybox
uses: actions/cache@v2
with:
path: busybox.exe
key: cache-busybox-${{ env.BUSYBOX_VERSION }}
- name: "Prep busybox image"
run: |
cat <<EOF > Dockerfile
FROM mcr.microsoft.com/windows/nanoserver:ltsc2022
COPY busybox.exe C:\
RUN mkdir C:\tmp && mkdir C:\bin \
&& setx /M PATH "C:\bin;%PATH%" \
&& powershell C:\busybox.exe --list ^|%{$nul = cmd /c mklink C:\bin\$_.exe C:\busybox.exe}
CMD ["sh"]
EOF
- name: "Build image"
run: |
docker buildx build create --name builder --use
docker buildx build --tag busybox-windows -f Dockerfile .
image-registry:
name: image-registry
runs-on: windows-2022
needs: build-registry
defaults:
run:
shell: bash
steps:
- id: cache-registry
uses: actions/cache@v2
with:
path: ./build
key: cache-registry-${{ env.REGISTRY_VERSION }}
- name: "Prep registry image"
run: |
cat <<EOF > Dockerfile
FROM mcr.microsoft.com/windows/nanoserver:ltsc2022
COPY ./build/registry /registry
COPY ./build/config-dev.yml /config.yml
EXPOSE 5000
ENTRYPOINT ["/registry"]
CMD ["serve", "/config.yml"]
EOF
- name: "Build image"
run: |
docker buildx build create --name builder --use
docker buildx build --tag registry-windows -f Dockerfile .