From 739e2c4330219e1404c863a3d693e9211abcca80 Mon Sep 17 00:00:00 2001 From: apostasie Date: Sat, 2 Nov 2024 11:18:40 +0100 Subject: [PATCH] Experimental windows images Signed-off-by: apostasie --- .github/workflows/test-images-build.yml | 139 ++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 .github/workflows/test-images-build.yml diff --git a/.github/workflows/test-images-build.yml b/.github/workflows/test-images-build.yml new file mode 100644 index 00000000000..759bbcf81c0 --- /dev/null +++ b/.github/workflows/test-images-build.yml @@ -0,0 +1,139 @@ +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' + 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 + - 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 ./cmd/registry + export GOPATH="${{ github.workspace }}/go" + src="${{ github.workspace }}/go/src/github.com/docker/distribution" + cd "$src" + export GO111MODULE=auto + make binaries + cd - + mkdir build + cp "$src"/bin/registry build + 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 < 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 < 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 create --name builder --use + docker build --tag registry-windows -f Dockerfile .