Build CLI from Docker instead of source codes, add alpine based Docker image (#65)
This commit is contained in:
parent
1308d3c0ae
commit
8eceb1166f
|
|
@ -60,9 +60,8 @@ jobs:
|
|||
timeout-minutes: 60
|
||||
strategy:
|
||||
matrix:
|
||||
java-version: [ 8, 11, 12, 13, 14, 15, 16 ]
|
||||
java-version: [ 8, 11, 12, 13, 14, 15, 16, 17 ]
|
||||
env:
|
||||
BASE_IMAGE: adoptopenjdk/openjdk${{ matrix.java-version }}:alpine
|
||||
TAG: ${{ github.sha }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ Release Notes.
|
|||
|
||||
* Support `Transaction` and fix duplicated methods enhancements for `jedis-2.x` plugin.
|
||||
* Add ConsumerWrapper/FunctionWrapper to support CompletableFuture.x.thenAcceptAsync/thenApplyAsync.
|
||||
* Build CLI from Docker instead of source codes, add alpine based Docker image.
|
||||
|
||||
#### Documentation
|
||||
|
||||
|
|
|
|||
81
Dockerfile
81
Dockerfile
|
|
@ -16,84 +16,9 @@
|
|||
|
||||
ARG BASE_IMAGE='adoptopenjdk/openjdk8:alpine-jre'
|
||||
|
||||
FROM $BASE_IMAGE as cli
|
||||
ARG SKYWALKING_CLI_VERSION
|
||||
|
||||
WORKDIR /skywalking
|
||||
|
||||
ARG SKYWALKING_CLI_VERSION=0.7.0
|
||||
ENV SKYWALKING_CLI_TGZ=skywalking-cli-$SKYWALKING_CLI_VERSION-bin.tgz
|
||||
ENV SKYWALKING_CLI_ASC=${SKYWALKING_CLI_TGZ}.asc
|
||||
ENV SKYWALKING_CLI_SHA512=${SKYWALKING_CLI_TGZ}.sha512
|
||||
|
||||
ENV SKYWALKING_CLI_TGZ_URLS \
|
||||
https://www.apache.org/dyn/closer.cgi?action=download&filename=skywalking/cli/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_TGZ \
|
||||
# if the version is outdated, we might have to pull from the dist/archive :/
|
||||
https://www-us.apache.org/dist/skywalking/cli/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_TGZ \
|
||||
https://www.apache.org/dist/skywalking/cli/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_TGZ \
|
||||
https://archive.apache.org/dist/skywalking/cli/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_TGZ
|
||||
|
||||
ENV SKYWALKING_CLI_ASC_URLS \
|
||||
https://www.apache.org/dyn/closer.cgi?action=download&filename=skywalking/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_ASC \
|
||||
# if the version is outdated, we might have to pull from the dist/archive :/
|
||||
https://www-us.apache.org/dist/skywalking/cli/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_ASC \
|
||||
https://www.apache.org/dist/skywalking/cli/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_ASC \
|
||||
https://archive.apache.org/dist/skywalking/cli/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_ASC
|
||||
|
||||
ENV SKYWALKING_CLI_SHA512_URLS \
|
||||
https://www.apache.org/dyn/closer.cgi?action=download&filename=skywalking/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_SHA512 \
|
||||
# if the version is outdated, we might have to pull from the dist/archive :/
|
||||
https://www-us.apache.org/dist/skywalking/cli/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_SHA512 \
|
||||
https://www.apache.org/dist/skywalking/cli/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_SHA512 \
|
||||
https://archive.apache.org/dist/skywalking/cli/$SKYWALKING_CLI_VERSION/$SKYWALKING_CLI_SHA512
|
||||
|
||||
|
||||
RUN set -eux; \
|
||||
\
|
||||
apk add --no-cache --virtual .fetch-deps \
|
||||
gnupg \
|
||||
ca-certificates \
|
||||
openssl \
|
||||
; \
|
||||
\
|
||||
wget --timeout=20 -O KEYS https://downloads.apache.org/skywalking/KEYS; \
|
||||
gpg --import KEYS; \
|
||||
\
|
||||
success=; \
|
||||
for url in $SKYWALKING_CLI_TGZ_URLS; do \
|
||||
if wget --timeout=20 -O ${SKYWALKING_CLI_TGZ} "$url"; then \
|
||||
success=1; \
|
||||
break; \
|
||||
fi; \
|
||||
done; \
|
||||
[ -n "$success" ]; \
|
||||
\
|
||||
success=; \
|
||||
for url in $SKYWALKING_CLI_SHA512_URLS; do \
|
||||
if wget --timeout=20 -O ${SKYWALKING_CLI_SHA512} "$url"; then \
|
||||
success=1; \
|
||||
break; \
|
||||
fi; \
|
||||
done; \
|
||||
[ -n "$success" ]; \
|
||||
\
|
||||
sha512sum -c ${SKYWALKING_CLI_SHA512}; \
|
||||
\
|
||||
success=; \
|
||||
for url in $SKYWALKING_CLI_ASC_URLS; do \
|
||||
if wget --timeout=20 -O ${SKYWALKING_CLI_ASC} "$url"; then \
|
||||
success=1; \
|
||||
break; \
|
||||
fi; \
|
||||
done; \
|
||||
[ -n "$success" ]; \
|
||||
\
|
||||
gpg --batch --verify ${SKYWALKING_CLI_ASC} ${SKYWALKING_CLI_TGZ}; \
|
||||
tar -xvf ${SKYWALKING_CLI_TGZ}; \
|
||||
mkdir "bin/"; \
|
||||
mv skywalking-cli-${SKYWALKING_CLI_VERSION}-bin/bin/swctl-${SKYWALKING_CLI_VERSION}-linux-amd64 bin/swctl; \
|
||||
chmod 755 bin/*; \
|
||||
command -v gpgconf && gpgconf --kill all || :; \
|
||||
ls -la .;
|
||||
FROM apache/skywalking-cli:$SKYWALKING_CLI_VERSION as cli
|
||||
|
||||
FROM $BASE_IMAGE
|
||||
|
||||
|
|
@ -109,4 +34,4 @@ WORKDIR /skywalking
|
|||
|
||||
ADD $DIST /skywalking/agent
|
||||
|
||||
COPY --from=cli /skywalking/bin/swctl /usr/bin/swctl
|
||||
COPY --from=cli /swctl /usr/bin/swctl
|
||||
|
|
|
|||
35
Makefile
35
Makefile
|
|
@ -20,6 +20,7 @@ HUB ?= skywalking
|
|||
NAME ?= skywalking-java
|
||||
TAG ?= latest
|
||||
AGENT_PACKAGE ?= skywalking-agent
|
||||
CLI_VERSION ?= 0.9.0 # CLI version inside agent image should always use an Apache released artifact.
|
||||
|
||||
.PHONY: build
|
||||
build:
|
||||
|
|
@ -33,21 +34,35 @@ dist: build
|
|||
|
||||
# Docker build
|
||||
|
||||
JAVA_VERSIONS := 8 11 12 13 14 15 16
|
||||
JAVA_VERSION = $(word 1, $@)
|
||||
base.adopt := java8 java11 java12 java13 java14 java15 java16
|
||||
base.temurin := java17
|
||||
|
||||
.PHONY: $(JAVA_VERSIONS:%=java%)
|
||||
$(JAVA_VERSIONS:%=docker.java%): skywalking-agent
|
||||
docker build --no-cache --build-arg BASE_IMAGE=adoptopenjdk/openjdk$(JAVA_VERSION:docker.java%=%):alpine-jre --build-arg DIST=$(AGENT_PACKAGE) . -t $(HUB)/$(NAME):$(TAG)-$(JAVA_VERSION:docker.%=%)
|
||||
base.all := alpine $(base.adopt) $(base.temurin)
|
||||
base.each = $(word 1, $@)
|
||||
|
||||
base.image.alpine := alpine:3
|
||||
base.image.java8 := adoptopenjdk/openjdk8:alpine-jre
|
||||
base.image.java11 := adoptopenjdk/openjdk11:alpine-jre
|
||||
base.image.java12 := adoptopenjdk/openjdk12:alpine-jre
|
||||
base.image.java13 := adoptopenjdk/openjdk13:alpine-jre
|
||||
base.image.java14 := adoptopenjdk/openjdk14:alpine-jre
|
||||
base.image.java15 := adoptopenjdk/openjdk15:alpine-jre
|
||||
base.image.java16 := adoptopenjdk/openjdk16:alpine-jre
|
||||
base.image.java17 := eclipse-temurin:17-alpine
|
||||
|
||||
.PHONY: $(base.all)
|
||||
$(base.all:%=docker.%): BASE_IMAGE=$($(base.each:docker.%=base.image.%))
|
||||
$(base.all:%=docker.%): docker.%: skywalking-agent
|
||||
docker build --no-cache --build-arg BASE_IMAGE=$(BASE_IMAGE) --build-arg DIST=$(AGENT_PACKAGE) --build-arg SKYWALKING_CLI_VERSION=$(CLI_VERSION) . -t $(HUB)/$(NAME):$(TAG)-$(base.each:docker.%=%)
|
||||
|
||||
.PHONY: docker
|
||||
docker: $(JAVA_VERSIONS:%=docker.java%)
|
||||
docker: $(base.all:%=docker.%)
|
||||
|
||||
# Docker push
|
||||
|
||||
.PHONY: $(JAVA_VERSIONS:%=docker.push.java%)
|
||||
$(JAVA_VERSIONS:%=docker.push.java%): $(JAVA_VERSIONS:%=docker.java%)
|
||||
docker push $(HUB)/$(NAME):$(TAG)-$(JAVA_VERSION:docker.push.%=%)
|
||||
.PHONY: $(base.all:%=docker.push.%)
|
||||
$(base.all:%=docker.push.%): docker.push.%: docker.%
|
||||
docker push $(HUB)/$(NAME):$(TAG)-$(base.each:docker.push.%=%)
|
||||
|
||||
.PHONY: docker.push
|
||||
docker.push: $(JAVA_VERSIONS:%=docker.java%)
|
||||
docker.push: $(base.all:%=docker.%)
|
||||
|
|
|
|||
|
|
@ -20,3 +20,30 @@ The agent binary package is generated in `skywalking-agent` folder.
|
|||
|
||||
Set **Generated Source Codes**(`grpc-java` and `java` folders in **apm-protocol/apm-network/target/generated-sources/protobuf**)
|
||||
folders if you are using IntelliJ IDE.
|
||||
|
||||
# Building Docker images
|
||||
|
||||
After you have [compiled the project](#compiling-project) and have generated the `skywalking-agent` folder, you can
|
||||
build Docker images. [`make docker`] builds the agent Docker images based on `alpine` image and `java8 ~ java 17`
|
||||
images by default. If you want to only build part of the images, add suffix `.alpine` or `.java<x>` to the `make`
|
||||
target, for example:
|
||||
|
||||
- Build Docker images based on alpine, Java 8 and Java 11.
|
||||
```shell
|
||||
make docker.alpine docker.java8 docker.java11
|
||||
```
|
||||
|
||||
You can also customize the Docker registry and Docker image names by specifying the variable `HUB`, `NAME`.
|
||||
|
||||
- Set private Docker registry to `gcr.io/skywalking` and custom name to `sw-agent`.
|
||||
```shell
|
||||
make docker.alpine HUB=gcr.io/skywalking NAME=sw-agent
|
||||
```
|
||||
This will name the Docker image to `gcr.io/skywalking/sw-agent:latest-alpine`
|
||||
|
||||
If you want to push the Docker images, add suffix to the make target `docker.`, for example:
|
||||
|
||||
- Build and push images based on alpine, Java 8 and Java 11.
|
||||
```shell
|
||||
make docker.push.alpine docker.push.java8 docker.push.java11
|
||||
```
|
||||
|
|
|
|||
|
|
@ -276,7 +276,7 @@ export NAME=skywalking-java-agent
|
|||
export HUB=apache
|
||||
export TAG=$SW_VERSION
|
||||
|
||||
make docker.push.java8 docker.push.java11
|
||||
make docker.push.alpine docker.push.java8 docker.push.java11 docker.push.java17
|
||||
```
|
||||
|
||||
## Clean up the old releases
|
||||
|
|
|
|||
Loading…
Reference in New Issue