-
Notifications
You must be signed in to change notification settings - Fork 618
142 lines (136 loc) · 4.26 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
136
137
138
139
140
141
142
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
- name: ""
#if: steps.cache-busybox.outputs.cache-hit != 'true'
run: |
sudo apt-get install gcc-mingw-w64 ncurses-dev
cd ./src/busybox-w32
make mingw64_defconfig
make
cd -
cp ./src/busybox-w32/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/docker/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
- name: "build"
# if: steps.cache-registry.outputs.cache-hit != 'true'
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/docker/distribution/v3/version.version=$VERSION -X github.com/docker/distribution/v3/version.revision=$REVISION -s -w" \
# -o ~/build/registry.exe ./cmd/registry
export GOPATH="${{ github.workspace }}/go"
src="${{ github.workspace }}/go/src/github.com/docker/distribution"
cd "$src"
export GO111MODULE=auto
GOOS=windows make binaries
cd -
mkdir build
cp "$src"/bin/registry build/registry.exe
cp "$src"/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 create --name builder --use
docker 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.exe /registry.exe
COPY ./build/config-dev.yml /config.yml
EXPOSE 5000
ENTRYPOINT ["/registry"]
CMD ["serve", "/config.yml"]
EOF
- name: "Build image"
run: |
ls -lA ./build/
# docker buildx create --name builder --use
docker build --tag registry-windows -f Dockerfile .