Merge pull request #117 from buildpacks/feature/windows-2004

Add Windows dotnet-framework-2004 resources
This commit is contained in:
Javier Romero 2022-04-06 13:16:16 -05:00 committed by GitHub
commit 1c70d79806
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 161 additions and 31 deletions

View File

@ -48,7 +48,7 @@ jobs:
- name: Clean up
run: make clean-linux clean-wine
build-windows:
runs-on: windows-latest
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
- name: Determine download URL for latest pack
@ -74,7 +74,7 @@ jobs:
- name: Set Experimental
run: make set-experimental
- name: Build
run: make build-windows
run: make build-windows-1809
- uses: azure/docker-login@v1
if: (github.event_name == 'repository_dispatch') || (github.event_name == 'push' && github.ref == 'refs/heads/main')
with:
@ -82,6 +82,6 @@ jobs:
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Deploy
if: (github.event_name == 'repository_dispatch') || (github.event_name == 'push' && github.ref == 'refs/heads/main')
run: make deploy-windows
run: make deploy-windows-1809
- name: Clean up
run: make clean-windows

109
Makefile
View File

@ -38,38 +38,38 @@ build-linux-buildpacks: build-buildpacks-alpine build-buildpacks-bionic
build-buildpacks-alpine: build-sample-root
@echo "> Creating 'hello-moon' app using 'alpine' builder..."
$(PACK_CMD) build sample-hello-moon-app:alpine --builder cnbs/sample-builder:alpine --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world --buildpack $(SAMPLES_ROOT)/buildpacks/hello-moon $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-hello-moon-app:alpine -v --builder cnbs/sample-builder:alpine --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world --buildpack $(SAMPLES_ROOT)/buildpacks/hello-moon $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'hello-processes' app using 'alpine' builder..."
$(PACK_CMD) build sample-hello-processes-app:alpine --builder cnbs/sample-builder:alpine --buildpack $(SAMPLES_ROOT)/buildpacks/hello-processes $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-hello-processes-app:alpine -v --builder cnbs/sample-builder:alpine --buildpack $(SAMPLES_ROOT)/buildpacks/hello-processes $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'hello-world' app using 'alpine' builder..."
$(PACK_CMD) build sample-hello-world-app:alpine --builder cnbs/sample-builder:alpine --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-hello-world-app:alpine -v --builder cnbs/sample-builder:alpine --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'java-maven' app using 'alpine' builder..."
$(PACK_CMD) build sample-java-maven-app:alpine --builder cnbs/sample-builder:alpine --path apps/java-maven $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-java-maven-app:alpine -v --builder cnbs/sample-builder:alpine --path apps/java-maven $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'kotlin-gradle' app using 'alpine' builder..."
$(PACK_CMD) build sample-kotlin-gradle-app:alpine --builder cnbs/sample-builder:alpine --path apps/kotlin-gradle $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-kotlin-gradle-app:alpine -v --builder cnbs/sample-builder:alpine --path apps/kotlin-gradle $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
build-buildpacks-bionic: build-sample-root
@echo "> Creating 'hello-moon' app using 'bionic' builder..."
$(PACK_CMD) build sample-hello-moon-app:bionic --builder cnbs/sample-builder:bionic --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world --buildpack $(SAMPLES_ROOT)/buildpacks/hello-moon $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-hello-moon-app:bionic -v --builder cnbs/sample-builder:bionic --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world --buildpack $(SAMPLES_ROOT)/buildpacks/hello-moon $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'hello-processes' app using 'bionic' builder..."
$(PACK_CMD) build sample-hello-processes-app:bionic --builder cnbs/sample-builder:bionic --buildpack $(SAMPLES_ROOT)/buildpacks/hello-processes $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-hello-processes-app:bionic -v --builder cnbs/sample-builder:bionic --buildpack $(SAMPLES_ROOT)/buildpacks/hello-processes $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'hello-world' app using 'bionic' builder..."
$(PACK_CMD) build sample-hello-world-app:bionic --builder cnbs/sample-builder:bionic --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-hello-world-app:bionic -v --builder cnbs/sample-builder:bionic --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'java-maven' app using 'bionic' builder..."
$(PACK_CMD) build sample-java-maven-app:bionic --builder cnbs/sample-builder:bionic --path apps/java-maven $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-java-maven-app:bionic -v --builder cnbs/sample-builder:bionic --path apps/java-maven $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'kotlin-gradle' app using 'bionic' builder..."
$(PACK_CMD) build sample-kotlin-gradle-app:bionic --builder cnbs/sample-builder:bionic --path apps/kotlin-gradle $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-kotlin-gradle-app:bionic -v --builder cnbs/sample-builder:bionic --path apps/kotlin-gradle $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'ruby-bundler' app using 'bionic' builder..."
$(PACK_CMD) build sample-ruby-bundler-app:bionic --builder cnbs/sample-builder:bionic --path apps/ruby-bundler $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-ruby-bundler-app:bionic -v --builder cnbs/sample-builder:bionic --path apps/ruby-bundler $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
build-linux-packages: build-sample-root
@echo "> Creating 'hello-world' buildpack package"
@ -160,14 +160,14 @@ build-builder-wine: build-sample-root
build-wine-apps: build-sample-root
@echo "> Creating 'batch-script' app using 'wine' builder..."
$(PACK_CMD) build sample-batch-script-app:wine --builder cnbs/sample-builder:wine --path apps/batch-script $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-batch-script-app:wine -v --builder cnbs/sample-builder:wine --path apps/batch-script $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
build-buildpacks-wine: build-sample-root
@echo "> Creating 'hello-moon-windows' app using 'wine' builder..."
$(PACK_CMD) build sample-hello-moon-windows-app:wine --builder cnbs/sample-builder:wine --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world-windows --buildpack $(SAMPLES_ROOT)/buildpacks/hello-moon-windows $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-hello-moon-windows-app:wine -v --builder cnbs/sample-builder:wine --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world-windows --buildpack $(SAMPLES_ROOT)/buildpacks/hello-moon-windows $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'hello-world-windows' app using 'wine' builder..."
$(PACK_CMD) build sample-hello-world-windows-app:wine --builder cnbs/sample-builder:wine --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world-windows $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-hello-world-windows-app:wine -v --builder cnbs/sample-builder:wine --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world-windows $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
deploy-wine: deploy-wine-stacks deploy-wine-builders
@ -201,11 +201,19 @@ clean-wine:
## Windows
####################
build-windows: build-windows-stacks build-windows-packages build-windows-builders build-windows-buildpacks
build-windows: build-windows-1809 build-windows-2004
build-windows-1809: build-windows-packages build-nanoserver-1809 build-dotnet-framework-1809
build-windows-2004: build-windows-packages build-dotnet-framework-2004
build-windows-stacks: build-stack-nanoserver-1809 build-stack-dotnet-framework-1809 build-stack-dotnet-framework-2004
build-nanoserver-1809: build-stack-nanoserver-1809 build-builder-nanoserver-1809 build-buildpacks-nanoserver-1809
build-windows-stacks: build-stack-nanoserver-1809 build-stack-dotnet-framework-1809
build-dotnet-framework-1809: build-stack-dotnet-framework-1809 build-builder-dotnet-framework-1809 build-buildpacks-dotnet-framework-1809
build-dotnet-framework-2004: build-stack-dotnet-framework-2004 build-builder-dotnet-framework-2004 build-buildpacks-dotnet-framework-2004
build-stack-nanoserver-1809:
@echo "> Building 'nanoserver-1809' stack..."
@ -215,28 +223,40 @@ build-stack-dotnet-framework-1809:
@echo "> Building 'dotnet-framework-1809' stack..."
bash stacks/build-stack.sh stacks/dotnet-framework-1809
build-windows-builders: build-builder-nanoserver-1809 build-builder-dotnet-framework-1809
build-stack-dotnet-framework-2004:
@echo "> Building 'dotnet-framework-2004' stack..."
bash stacks/build-stack.sh stacks/dotnet-framework-2004
build-builder-nanoserver-1809: build-sample-root build-windows-packages
build-windows-builders: build-builder-nanoserver-1809 build-builder-dotnet-framework-1809 build-builder-dotnet-framework-2004
build-builder-nanoserver-1809: build-windows-packages
@echo "> Building 'nanoserver-1809' builder..."
$(PACK_CMD) builder create cnbs/sample-builder:nanoserver-1809 --config $(SAMPLES_ROOT)/builders/nanoserver-1809/builder.toml $(PACK_FLAGS)
build-builder-dotnet-framework-1809: build-sample-root build-windows-packages
build-builder-dotnet-framework-1809: build-windows-packages
@echo "> Building 'dotnet-framework-1809' builder..."
$(PACK_CMD) builder create cnbs/sample-builder:dotnet-framework-1809 --config $(SAMPLES_ROOT)/builders/dotnet-framework-1809/builder.toml $(PACK_FLAGS)
build-windows-buildpacks: build-buildpacks-nanoserver-1809 build-buildpacks-dotnet-framework-1809
build-builder-dotnet-framework-2004: build-windows-packages
@echo "> Building 'dotnet-framework-2004' builder..."
$(PACK_CMD) builder create cnbs/sample-builder:dotnet-framework-2004 --config $(SAMPLES_ROOT)/builders/dotnet-framework-2004/builder.toml $(PACK_FLAGS)
build-windows-buildpacks: build-buildpacks-nanoserver-1809 build-buildpacks-dotnet-framework-1809 build-buildpacks-dotnet-framework-2004
build-buildpacks-nanoserver-1809: build-sample-root
@echo "> Creating 'hello-moon-windows' app using 'nanoserver-1809' builder..."
$(PACK_CMD) build sample-hello-moon-windows-app:nanoserver-1809 --builder cnbs/sample-builder:nanoserver-1809 --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world-windows --buildpack $(SAMPLES_ROOT)/buildpacks/hello-moon-windows $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-hello-moon-windows-app:nanoserver-1809 -v --builder cnbs/sample-builder:nanoserver-1809 --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world-windows --buildpack $(SAMPLES_ROOT)/buildpacks/hello-moon-windows $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'hello-world-windows' app using 'nanoserver-1809' builder..."
$(PACK_CMD) build sample-hello-world-windows-app:nanoserver-1809 --builder cnbs/sample-builder:nanoserver-1809 --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world-windows $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-hello-world-windows-app:nanoserver-1809 -v --builder cnbs/sample-builder:nanoserver-1809 --buildpack $(SAMPLES_ROOT)/buildpacks/hello-world-windows $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
build-buildpacks-dotnet-framework-1809: build-sample-root
@echo "> Creating 'dotnet-framework' app using 'dotnet-framework-1809' builder..."
$(PACK_CMD) build sample-dotnet-framework-app:dotnet-framework-1809 --builder cnbs/sample-builder:dotnet-framework-1809 --buildpack $(SAMPLES_ROOT)/buildpacks/dotnet-framework --path apps/aspnet $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-dotnet-framework-app:dotnet-framework-1809 -v --builder cnbs/sample-builder:dotnet-framework-1809 --buildpack $(SAMPLES_ROOT)/buildpacks/dotnet-framework --path apps/aspnet $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
build-buildpacks-dotnet-framework-2004: build-sample-root
@echo "> Creating 'dotnet-framework' app using 'dotnet-framework-2004' builder..."
$(PACK_CMD) build sample-dotnet-framework-app:dotnet-framework-2004 -v --builder cnbs/sample-builder:dotnet-framework-2004 --buildpack $(SAMPLES_ROOT)/buildpacks/dotnet-framework --path apps/aspnet $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
build-windows-packages: build-sample-root
@echo "> Creating 'hello-world-windows' buildpack package"
@ -247,35 +267,60 @@ build-windows-packages: build-sample-root
build-windows-apps: build-sample-root
@echo "> Creating 'batch-script' app using 'nanoserver-1809' builder..."
$(PACK_CMD) build sample-batch-script-app:nanoserver-1809 --builder cnbs/sample-builder:nanoserver-1809 --path apps/batch-script $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-batch-script-app:nanoserver-1809 -v --builder cnbs/sample-builder:nanoserver-1809 --path apps/batch-script $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
@echo "> Creating 'aspnet' app using 'dotnet-framework-1809' builder..."
$(PACK_CMD) build sample-aspnet-app:dotnet-framework-1809 --builder cnbs/sample-builder:dotnet-framework-1809 --path apps/aspnet $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
$(PACK_CMD) build sample-aspnet-app:dotnet-framework-1809 -v --builder cnbs/sample-builder:dotnet-framework-1809 --path apps/aspnet $(PACK_FLAGS) $(PACK_BUILD_FLAGS)
deploy-windows: deploy-windows-stacks deploy-windows-builders deploy-windows-packages
deploy-windows: deploy-windows-1809 deploy-windows-2004 deploy-windows-packages
deploy-windows-stacks:
deploy-windows-1809: deploy-windows-stacks-1809 deploy-windows-builders-1809 deploy-windows-packages
deploy-windows-2004: deploy-windows-stacks-2004 deploy-windows-builders-2004 deploy-windows-packages
deploy-windows-stacks-1809: deploy-windows-stacks-nanoserver-1809 deploy-windows-stacks-dotnet-framework-1809
deploy-windows-stacks-2004: deploy-windows-stacks-dotnet-framework-2004
deploy-windows-stacks-nanoserver-1809:
@echo "> Deploying 'nanoserver-1809' stack..."
docker push cnbs/sample-stack-base:nanoserver-1809
docker push cnbs/sample-stack-run:nanoserver-1809
docker push cnbs/sample-stack-build:nanoserver-1809
deploy-windows-stacks-dotnet-framework-1809:
@echo "> Deploying 'dotnet-framework-1809' stack..."
docker push cnbs/sample-stack-run:dotnet-framework-1809
docker push cnbs/sample-stack-build:dotnet-framework-1809
deploy-windows-stacks-dotnet-framework-2004:
@echo "> Deploying 'dotnet-framework-2004' stack..."
docker push cnbs/sample-stack-run:dotnet-framework-2004
docker push cnbs/sample-stack-build:dotnet-framework-2004
deploy-windows-packages:
@echo "> Deploying windows packages..."
docker push cnbs/sample-package:hello-world-windows
docker push cnbs/sample-package:hello-universe-windows
deploy-windows-builders:
deploy-windows-builders: deploy-windows-builders-1809 deploy-windows-builders-2004
deploy-windows-builders-1809: deploy-windows-builders-nanoserver-1809 deploy-windows-builders-dotnet-framework-1809
deploy-windows-builders-2004: deploy-windows-builders-dotnet-framework-2004
deploy-windows-builders-nanoserver-1809:
@echo "> Deploying 'nanoserver-1809' builder..."
docker push cnbs/sample-builder:nanoserver-1809
deploy-windows-builders-dotnet-framework-1809:
@echo "> Deploying 'dotnet-framework-1809' builder..."
docker push cnbs/sample-builder:dotnet-framework-1809
deploy-windows-builders-dotnet-framework-2004:
@echo "> Deploying 'dotnet-framework-2004' builder..."
docker push cnbs/sample-builder:dotnet-framework-2004
clean-windows:
@echo "> Removing 'nanoserver-1809' stack..."
docker rmi cnbs/sample-stack-base:nanoserver-1809 || true
@ -285,10 +330,15 @@ clean-windows:
@echo "> Removing 'dotnet-framework-1809' stack..."
docker rmi cnbs/sample-stack-run:dotnet-framework-1809 || true
docker rmi cnbs/sample-stack-build:dotnet-framework-1809 || true
@echo "> Removing 'dotnet-framework-2004' stack..."
docker rmi cnbs/sample-stack-run:dotnet-framework-2004 || true
docker rmi cnbs/sample-stack-build:dotnet-framework-2004 || true
@echo "> Removing builders..."
docker rmi cnbs/sample-builder:nanoserver-1809 || true
docker rmi cnbs/sample-builder:dotnet-framework-1809 || true
docker rmi cnbs/sample-builder:dotnet-framework-2004 || true
@echo "> Removing 'nanoserver-1809' apps..."
docker rmi sample-hello-moon-windows-app:nanoserver-1809 || true
@ -298,6 +348,9 @@ clean-windows:
@echo "> Removing 'dotnet-framework-1809' apps..."
docker rmi sample-aspnet-app:dotnet-framework-1809 || true
@echo "> Removing 'dotnet-framework-2004' apps..."
docker rmi sample-aspnet-app:dotnet-framework-2004 || true
@echo "> Removing packages..."
docker rmi cnbs/sample-package:hello-world-windows || true
docker rmi cnbs/sample-package:hello-universe-windows || true

View File

@ -0,0 +1,23 @@
# Sample .NET Framework 2004 Builder
### Prerequisites
* Docker with Windows Containers and support for 2004 images
### Usage
#### Creating the builder
```bash
pack builder create cnbs/sample-builder:dotnet-framework-2004 --config builder.toml
```
#### Build app with builder
```bash
pack build sample-app --builder cnbs/sample-builder:dotnet-framework-2004 --trust-builder --path ../../apps/aspnet
```
#### Run built app
```
docker run --rm -it -p 8080:80 sample-app
```

View File

@ -0,0 +1,17 @@
# Buildpacks to include in builder
[[buildpacks]]
id = "samples/dotnet-framework"
version = "0.0.1"
uri = "../../buildpacks/dotnet-framework"
# Order used for detection
[[order]]
[[order.group]]
id = "samples/dotnet-framework"
version = "0.0.1"
# Stack that will be used by the builder
[stack]
id = "io.buildpacks.samples.stacks.dotnet-framework-2004"
run-image = "cnbs/sample-stack-run:dotnet-framework-2004"
build-image = "cnbs/sample-stack-build:dotnet-framework-2004"

View File

@ -7,3 +7,6 @@ api = "0.2"
[[stacks]]
id = "io.buildpacks.samples.stacks.dotnet-framework-1809"
[[stacks]]
id = "io.buildpacks.samples.stacks.dotnet-framework-2004"

View File

@ -15,5 +15,8 @@ id = "io.buildpacks.samples.stacks.nanoserver-1809"
[[stacks]]
id = "io.buildpacks.samples.stacks.dotnet-framework-1809"
[[stacks]]
id = "io.buildpacks.samples.stacks.dotnet-framework-2004"
[[stacks]]
id = "io.buildpacks.samples.stacks.wine"

View File

@ -11,5 +11,8 @@ homepage = "https://github.com/buildpacks/samples/tree/main/buildpacks/hello-wor
[[stacks]]
id = "io.buildpacks.samples.stacks.nanoserver-1809"
[[stacks]]
id = "io.buildpacks.samples.stacks.dotnet-framework-2004"
[[stacks]]
id = "io.buildpacks.samples.stacks.wine"

View File

@ -0,0 +1,15 @@
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-2004
ARG stack_id
# non-zero sets all user-owned directories to BUILTIN\Users
ARG cnb_uid=1
ARG cnb_gid=1
ENV CNB_USER_ID=${cnb_uid}
ENV CNB_GROUP_ID=${cnb_gid}
LABEL io.buildpacks.stack.id=${stack_id}
ENV CNB_STACK_ID=${stack_id}
USER ContainerAdministrator

View File

@ -0,0 +1,13 @@
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-2004
ARG stack_id
# Create unresolved symlink from c:\inetpub\wwwroot to c:\workspace
RUN Remove-Item -Force -Recurse c:\inetpub\wwwroot ; New-Item -Type Directory c:\workspace ; New-Item -Type SymbolicLink -Path c:\inetpub\wwwroot -Value c:\workspace ; Remove-Item -Force c:\workspace
# launcher requires a non-empty PATH to workaround https://github.com/buildpacks/pack/issues/800
ENV PATH=C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Users\\ContainerAdministrator\\AppData\\Local\\Microsoft\\WindowsApps
LABEL io.buildpacks.stack.id=${stack_id}
USER ContainerAdministrator