Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 0 additions & 16 deletions .github/workflows/release-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -232,22 +232,6 @@ jobs:
export PATH=$PATH:~/go/bin
nfpm --version

- name: Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1

- name: Build Docker Image
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
file: scripts/packages/packager/Dockerfile
tags: build-signed-packager:1.0.0
context: '.'
push: false
load: true
cache-from: type=gha,scope=build-signed-packager
cache-to: type=gha,scope=build-signed-packager,mode=max
build-args: |
package_type=signed-package

- name: Set the VERSION environment variable
run: echo VERSION=v${{ inputs.packageVersion }} >> $GITHUB_ENV

Expand Down
4 changes: 2 additions & 2 deletions .nfpm.yaml
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# this is the base "template" for the package
name: nginx-agent
description: NGINX Agent
arch: ${ARCH}
arch: ^ARCH^ # substituted in Makefile.packaging
version: ${VERSION}
priority: optional
vendor: NGINX Software, Inc.
maintainer: NGINX Inc. <[email protected]>
homepage: https://github.com/nginx/agent
license: Apache 2.0
contents:
- src: ./build/nginx-agent
- src: ^BUILD_PATH^/nginx-agent # substituted in Makefile.packaging
dst: /usr/bin/nginx-agent
- src: nginx-agent.conf
dst: /etc/nginx-agent/nginx-agent.conf
Expand Down
94 changes: 62 additions & 32 deletions Makefile.packaging
Original file line number Diff line number Diff line change
Expand Up @@ -35,83 +35,113 @@ $(PACKAGES_DIR):
@mkdir -p $(PACKAGES_DIR)/deb && mkdir -p $(PACKAGES_DIR)/rpm && mkdir -p $(PACKAGES_DIR)/apk

.PHONY: package
package: gpg-key $(PACKAGES_DIR) #### Create final packages for all supported distros
# Create deb packages
package: $(PACKAGES_DIR) #### Create final packages for all supported distros

# Build binaries for all supported architectures
@for arch in $(DEB_ARCHS); do \
mkdir -p $(BUILD_DIR)/$${arch}; \
cp .nfpm.yaml .nfpm.$${arch}.yaml; \
sed -i.bak "s/\^ARCH\^/$${arch}/g" ".nfpm.$${arch}.yaml"; \
sed -i.bak "s/\^BUILD_PATH\^/\.\/build\/$${arch}/g" ".nfpm.$${arch}.yaml"; \
echo "Building linux/$${arch}"; \
GOWORK=off CGO_ENABLED=0 GOARCH=$${arch} GOOS=linux \
go build -pgo=auto -ldflags=${LDFLAGS} \
-o $(BUILD_DIR)/$${arch}/$(BINARY_NAME) \
$(PROJECT_DIR)/$(PROJECT_FILE); \
rm -f .nfpm.$$arch.yaml.bak; \
ls -la "$(BUILD_DIR)/$${arch}/$(BINARY_NAME)"; \
done; \

# Create deb packages
@for arch in $(DEB_ARCHS); do \
GOWORK=off CGO_ENABLED=0 GOARCH=$${arch} GOOS=linux go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE); \
for distro in $(DEB_DISTROS); do \
deb_codename=`echo $$distro | cut -d- -f 2`; \
VERSION=$(PACKAGE_VERSION)~$${deb_codename} ARCH=$${arch} nfpm pkg --config .nfpm.yaml --packager deb --target ${PACKAGES_DIR}/deb/${PACKAGE_PREFIX}_$(PACKAGE_VERSION)~$${deb_codename}_$${arch}.deb; \
deb_codename=`echo $${distro} | cut -d- -f 2`; \
VERSION=$(PACKAGE_VERSION)~$${deb_codename} \
nfpm pkg --config .nfpm.$${arch}.yaml \
--packager deb \
--target ${PACKAGES_DIR}/deb/${PACKAGE_PREFIX}_$(PACKAGE_VERSION)~$${deb_codename}_$${arch}.deb; \
done; \
rm -rf $(BINARY_PATH); \
done; \

# Create rpm packages
@GOWORK=off CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE)
# Create rpm packages
@for distro in $(RPM_DISTROS); do \
rpm_distro=`echo $$distro | cut -d- -f 1`; \
rpm_major=`echo $$distro | cut -d- -f 2`; \
rpm_codename='na'; \
if [ "$$rpm_distro" = "suse" ]; then rpm_codename="sles$$rpm_major"; \
fi; \
if [ "$$rpm_codename" != "na" ]; then \
VERSION=$(PACKAGE_VERSION) ARCH=amd64 nfpm pkg --config .nfpm.yaml --packager rpm --target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.${RPM_ARCH}.rpm; \
VERSION=$(PACKAGE_VERSION) ARCH=amd64 \
nfpm pkg --config .nfpm.amd64.yaml \
--packager rpm \
--target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.${RPM_ARCH}.rpm; \
fi; \
done; \
rm -rf $(BINARY_PATH)


# Create redhat rpm packages
# Create redhat rpm packages
@for arch in $(REDHAT_ARCHS); do \
goarch=amd64; \
if [ "$$arch" = "aarch64" ]; then goarch="arm64"; fi; \
GOWORK=off CGO_ENABLED=0 GOARCH=$${goarch} GOOS=linux go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE); \
for distro in $(REDHAT_VERSIONS); do \
rpm_distro=`echo $$distro | cut -d- -f 1`; \
rpm_major=`echo $$distro | cut -d- -f 2`; \
rpm_codename="el$$rpm_major"; \
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} nfpm pkg --config .nfpm.yaml --packager rpm --target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} \
nfpm pkg --config .nfpm.$${goarch}.yaml \
--packager rpm \
--target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
done; \
rm -rf $(BINARY_PATH); \
done; \


# Create amazon rpm packages
# Create amazon rpm packages
@for arch in $(AMAZON_ARCHS); do \
goarch=amd64; \
if [ "$$arch" = "aarch64" ]; then goarch="arm64"; fi; \
GOWORK=off CGO_ENABLED=0 GOARCH=$${goarch} GOOS=linux go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE); \
for version in $(AMAZON_VERSIONS); do \
rpm_major=`echo $$version | cut -d- -f 2`; \
rpm_codename="amzn$$rpm_major";\
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} nfpm pkg --config .nfpm.yaml --packager rpm --target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} \
nfpm pkg --config .nfpm.$$goarch.yaml \
--packager rpm \
--target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
done; \
rm -rf $(BINARY_PATH); \
done; \

# Create apk packages
# Create apk packages
@for arch in $(APK_ARCHS); do \
goarch=amd64; \
if [ "$$arch" = "aarch64" ]; then goarch="arm64"; fi; \
GOWORK=off CGO_ENABLED=0 GOARCH=$${goarch} GOOS=linux go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE); \
for version in $(APK_VERSIONS); do \
if [ ! -d "$(PACKAGES_DIR)/apk/v$${version}/$${arch}" ]; then mkdir -p $(PACKAGES_DIR)/apk/v$${version}/$${arch}; fi; \
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} nfpm pkg --config .nfpm.yaml --packager apk --target $(PACKAGES_DIR)/apk/v$${version}/$${arch}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).apk; \
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} \
nfpm pkg --config .nfpm.$$goarch.yaml \
--packager apk \
--target $(PACKAGES_DIR)/apk/v$${version}/$${arch}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).apk; \
done; \
rm -rf $(BINARY_PATH); \
done; \
done;

# Package build complete
# Package build complete
@echo "DEB packages:"; \
find $(PACKAGES_DIR)/deb -type f | grep -E "${BINARY_NAME}[-_]${PACKAGE_VERSION}" | sort;
@echo "RPM packages:"; \
find $(PACKAGES_DIR)/rpm -type f | grep -E "${BINARY_NAME}[-_]${PACKAGE_VERSION}" | sort;
@echo "APK packages:"; \
find $(PACKAGES_DIR)/apk -type f | grep -E "${BINARY_NAME}[-_]${PACKAGE_VERSION}" | sort;

echo "DEB packages:"; \
find $(PACKAGES_DIR)/deb ;\
echo "RPM packages:"; \
find $(PACKAGES_DIR)/rpm ;\
echo "APK packages:"; \
find $(PACKAGES_DIR)/apk ;\
# Clean up temporary nfpm config files
@for arch in $(DEB_ARCHS); do \
rm -f .nfpm.$$arch.yaml; \
done; \

# Create tarball containing all packages
cd $(PACKAGES_DIR) && tar -czvf "./$(TARBALL_NAME)" * && cd ../..; \
# Create tarball containing all packages
@echo "Creating tarball: $(TARBALL_NAME)"; \
rm -f $(PACKAGES_DIR)/$(TARBALL_NAME); \
pushd $(PACKAGES_DIR) > /dev/null; \
tar -czvf "./$(TARBALL_NAME)" *; \
popd > /dev/null; \
ls -la $(PACKAGES_DIR)/$(TARBALL_NAME);

.PHONY: gpg-key
gpg-key: ## Generate GPG public key
Expand Down
28 changes: 0 additions & 28 deletions scripts/packages/packager/Dockerfile

This file was deleted.

51 changes: 0 additions & 51 deletions scripts/packages/packager/local-entrypoint.sh

This file was deleted.

57 changes: 0 additions & 57 deletions scripts/packages/packager/signed-entrypoint.sh

This file was deleted.

Loading