Skip to content

Commit

Permalink
Change build path for linux binaries to match GOARCH.
Browse files Browse the repository at this point in the history
  • Loading branch information
jefchien committed Jan 14, 2022
1 parent a849204 commit fced26f
Show file tree
Hide file tree
Showing 8 changed files with 118 additions and 155 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,8 @@ jobs:
- name: Build RPM
if: steps.cached_rpms.outputs.cache-hit != 'true'
run: |
ARCH=x86_64 DEST=$PACKAGING_ROOT/linux/amd64 tools/packaging/linux/create_rpm.sh
ARCH=aarch64 DEST=$PACKAGING_ROOT/linux/arm64 tools/packaging/linux/create_rpm.sh
ARCH=x86_64 TARGET_SUPPORTED_ARCH=amd64 DEST=$PACKAGING_ROOT/linux/amd64 tools/packaging/linux/create_rpm.sh
ARCH=aarch64 TARGET_SUPPORTED_ARCH=arm64 DEST=$PACKAGING_ROOT/linux/arm64 tools/packaging/linux/create_rpm.sh
- name: Download Package Signing GPG key
if: steps.cached_rpms.outputs.cache-hit != 'true'
Expand Down Expand Up @@ -307,8 +307,8 @@ jobs:
- name: Build Debs
if: steps.cached_debs.outputs.cache-hit != 'true'
run: |
ARCH=amd64 TARGET_SUPPORTED_ARCH=x86_64 DEST=$PACKAGING_ROOT/debian/amd64 tools/packaging/debian/create_deb.sh
ARCH=arm64 TARGET_SUPPORTED_ARCH=aarch64 DEST=$PACKAGING_ROOT/debian/arm64 tools/packaging/debian/create_deb.sh
ARCH=amd64 DEST=$PACKAGING_ROOT/debian/amd64 tools/packaging/debian/create_deb.sh
ARCH=arm64 DEST=$PACKAGING_ROOT/debian/arm64 tools/packaging/debian/create_deb.sh
- name: Download Package Signing GPG key
if: steps.cached_debs.outputs.cache-hit != 'true'
Expand Down
15 changes: 4 additions & 11 deletions .github/workflows/PR-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ jobs:
with:
go-version: 1.17


- uses: actions/checkout@v2
if: ${{ needs.changes.outputs.changed == 'true' }}

Expand All @@ -76,34 +75,29 @@ jobs:
~/.cache/go-build
key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.sum') }}


# Unit Test and attach test coverage badge
- name: Unit Test
if: ${{ needs.changes.outputs.changed == 'true' }}
run: make test


- name: Upload Coverage report to CodeCov
uses: codecov/codecov-action@v2
if: ${{ needs.changes.outputs.changed == 'true' }}
with:
file: ./coverage.txt


# Build and archive binaries into cache.
- name: Build Binaries
if: ${{ needs.changes.outputs.changed == 'true' }}
run: make build


- name: Cache binaries
uses: actions/cache@v2
if: ${{ needs.changes.outputs.changed == 'true' }}
with:
key: "cached_binaries_${{ github.run_id }}"
path: build


# upload the binaries to artifact as well because cache@v2 hasn't support windows
- name: Upload
uses: actions/upload-artifact@v2
Expand All @@ -112,7 +106,6 @@ jobs:
name: binary_artifacts
path: build


packaging-msi:
runs-on: windows-latest
needs: [changes, build]
Expand Down Expand Up @@ -156,8 +149,8 @@ jobs:

- name: Build RPM
run: |
ARCH=x86_64 DEST=build/packages/linux/amd64 tools/packaging/linux/create_rpm.sh
ARCH=aarch64 DEST=build/packages/linux/arm64 tools/packaging/linux/create_rpm.sh
ARCH=x86_64 TARGET_SUPPORTED_ARCH=amd64 DEST=build/packages/linux/amd64 tools/packaging/linux/create_rpm.sh
ARCH=aarch64 TARGET_SUPPORTED_ARCH=arm64 DEST=build/packages/linux/arm64 tools/packaging/linux/create_rpm.sh
if: ${{ needs.changes.outputs.changed == 'true' }}

packaging-deb:
Expand All @@ -177,8 +170,8 @@ jobs:

- name: Build Debs
run: |
ARCH=amd64 TARGET_SUPPORTED_ARCH=x86_64 DEST=build/packages/debian/amd64 tools/packaging/debian/create_deb.sh
ARCH=arm64 TARGET_SUPPORTED_ARCH=aarch64 DEST=build/packages/debian/arm64 tools/packaging/debian/create_deb.sh
ARCH=amd64 DEST=build/packages/debian/amd64 tools/packaging/debian/create_deb.sh
ARCH=arm64 DEST=build/packages/debian/arm64 tools/packaging/debian/create_deb.sh
if: ${{ needs.changes.outputs.changed == 'true' }}

get-test-cases:
Expand Down
16 changes: 8 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -78,22 +78,22 @@ all-srcs:
.PHONY: build
build: install-tools lint multimod-verify
GOOS=darwin GOARCH=amd64 $(GOBUILD) $(LDFLAGS) -o ./build/darwin/aoc_darwin_amd64 ./cmd/awscollector
GOOS=linux GOARCH=amd64 $(GOBUILD) $(LDFLAGS) -o ./build/linux/aoc_linux_x86_64 ./cmd/awscollector
GOOS=linux GOARCH=arm64 $(GOBUILD) $(LDFLAGS) -o ./build/linux/aoc_linux_aarch64 ./cmd/awscollector
GOOS=linux GOARCH=amd64 $(GOBUILD) $(LDFLAGS) -o ./build/linux/aoc_linux_amd64 ./cmd/awscollector
GOOS=linux GOARCH=arm64 $(GOBUILD) $(LDFLAGS) -o ./build/linux/aoc_linux_arm64 ./cmd/awscollector
GOOS=windows GOARCH=amd64 $(GOBUILD) $(LDFLAGS) -o ./build/windows/aoc_windows_amd64 ./cmd/awscollector

.PHONY: amd64-build
amd64-build: install-tools lint multimod-verify
GOOS=linux GOARCH=amd64 $(GOBUILD) $(LDFLAGS) -o ./build/linux/aoc_linux_x86_64 ./cmd/awscollector
GOOS=linux GOARCH=amd64 $(GOBUILD) $(LDFLAGS) -o ./build/linux/aoc_linux_amd64 ./cmd/awscollector

.PHONY: arm64-build
arm64-build: install-tools lint multimod-verify
GOOS=linux GOARCH=arm64 $(GOBUILD) $(LDFLAGS) -o ./build/linux/aoc_linux_aarch64 ./cmd/awscollector
GOOS=linux GOARCH=arm64 $(GOBUILD) $(LDFLAGS) -o ./build/linux/aoc_linux_arm64 ./cmd/awscollector

# For building container image during development, no lint nor other platforms
.PHONY: amd64-build-only
amd64-build-only:
GOOS=linux GOARCH=amd64 $(GOBUILD) $(LDFLAGS) -o ./build/linux/aoc_linux_x86_64 ./cmd/awscollector
GOOS=linux GOARCH=amd64 $(GOBUILD) $(LDFLAGS) -o ./build/linux/aoc_linux_amd64 ./cmd/awscollector

.PHONY: awscollector
awscollector:
Expand All @@ -102,12 +102,12 @@ awscollector:

.PHONY: package-rpm
package-rpm: build
ARCH=x86_64 DEST=build/packages/linux/amd64 tools/packaging/linux/create_rpm.sh
ARCH=x86_64 TARGET_SUPPORTED_ARCH=amd64 DEST=build/packages/linux/amd64 tools/packaging/linux/create_rpm.sh

.PHONY: package-deb
package-deb: build
ARCH=amd64 TARGET_SUPPORTED_ARCH=x86_64 DEST=build/packages/debian/amd64 tools/packaging/debian/create_deb.sh
ARCH=arm64 TARGET_SUPPORTED_ARCH=aarch64 DEST=build/packages/debian/arm64 tools/packaging/debian/create_deb.sh
ARCH=amd64 DEST=build/packages/debian/amd64 tools/packaging/debian/create_deb.sh
ARCH=arm64 DEST=build/packages/debian/arm64 tools/packaging/debian/create_deb.sh

.PHONY: docker-build
docker-build: amd64-build
Expand Down
10 changes: 4 additions & 6 deletions cmd/awscollector/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,14 @@ RUN apk --update add ca-certificates

WORKDIR /workspace

ARG TARGETPLATFORM
RUN echo "Target platform is $TARGETPLATFORM"
ARG TARGETARCH
RUN echo "Target architecture is $TARGETARCH"

# copy artifacts
# always assume binary is created
COPY build/linux/* /workspace/
COPY build/linux/aoc_linux_$TARGETARCH /workspace/awscollector
COPY config.yaml /workspace/config/otel-config.yaml
COPY config/ /workspace/config/
COPY cmd/awscollector/copy_docker_binary.sh /workspace/copy_binary.sh
RUN ./copy_binary.sh

################################
# Final Stage #
Expand All @@ -27,7 +25,7 @@ RUN ./copy_binary.sh
FROM scratch

COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=build /workspace/build/linux/aoc_linux /awscollector
COPY --from=build /workspace/awscollector /awscollector
COPY --from=build /workspace/config/ /etc/

ENV RUN_IN_CONTAINER="True"
Expand Down
26 changes: 0 additions & 26 deletions cmd/awscollector/copy_docker_binary.sh

This file was deleted.

2 changes: 1 addition & 1 deletion tools/packaging/debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ Section: admin
Depends: libc6
Priority: optional
Maintainer: Amazon.com, Inc.
Description: Amazon AWS Opentelemetry Collector
Description: Amazon AWS OpenTelemetry Collector
118 changes: 58 additions & 60 deletions tools/packaging/debian/create_deb.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#!/usr/bin/env bash

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License").
Expand All @@ -11,93 +13,89 @@
# express or implied. See the License for the specific language governing
# permissions and limitations under the License.

#!/usr/bin/env bash

set -e

echo "****************************************"
echo "Creating deb file for Debian Linux ${ARCH}"
echo "****************************************"

BUILD_ROOT="`pwd`/build/linux/debian"
BUILD_ROOT="$(pwd)/build/linux/debian"
# remove "v" since deb only allow version name with digits.
VERSION=`cat VERSION | sed 's/v//g'`
VERSION=$(sed 's/v//g' < VERSION)
DEB_NAME=aws-otel-collector
AOC_ROOT=${BUILD_ROOT}

echo "BASE_ROOT: ${BUILD_ROOT} agent_version: ${VERSION} AGENT_BIN_DIR_DEB: ${AOC_ROOT}"
echo "BASE_ROOT: ${BUILD_ROOT} agent_version: ${VERSION} AGENT_BIN_DIR_DEB: ${AOC_ROOT}"

echo "Creating debian folders"
mkdir -p ${AOC_ROOT}/opt/aws/aws-otel-collector/logs
mkdir -p ${AOC_ROOT}/opt/aws/aws-otel-collector/bin
mkdir -p ${AOC_ROOT}/opt/aws/aws-otel-collector/etc
mkdir -p ${AOC_ROOT}/opt/aws/aws-otel-collector/var
mkdir -p ${AOC_ROOT}/opt/aws/aws-otel-collector/doc

mkdir -p ${AOC_ROOT}/etc/init
mkdir -p ${AOC_ROOT}/etc/systemd/system/
mkdir -p ${AOC_ROOT}/bin
mkdir -p ${AOC_ROOT}/usr/bin
mkdir -p ${AOC_ROOT}/etc/amazon
mkdir -p ${AOC_ROOT}/var/log/amazon
mkdir -p ${AOC_ROOT}/var/run/amazon
mkdir -p "${AOC_ROOT}/opt/aws/aws-otel-collector/logs"
mkdir -p "${AOC_ROOT}/opt/aws/aws-otel-collector/bin"
mkdir -p "${AOC_ROOT}/opt/aws/aws-otel-collector/etc"
mkdir -p "${AOC_ROOT}/opt/aws/aws-otel-collector/var"
mkdir -p "${AOC_ROOT}/opt/aws/aws-otel-collector/doc"

mkdir -p "${AOC_ROOT}/etc/init"
mkdir -p "${AOC_ROOT}/etc/systemd/system"
mkdir -p "${AOC_ROOT}/bin"
mkdir -p "${AOC_ROOT}/usr/bin"
mkdir -p "${AOC_ROOT}/etc/amazon"
mkdir -p "${AOC_ROOT}/var/log/amazon"
mkdir -p "${AOC_ROOT}/var/run/amazon"

echo "Copying application files"
cp LICENSE ${AOC_ROOT}/opt/aws/aws-otel-collector/
cp VERSION ${AOC_ROOT}/opt/aws/aws-otel-collector/bin/
cp build/linux/aoc_linux_${TARGET_SUPPORTED_ARCH} ${AOC_ROOT}/opt/aws/aws-otel-collector/bin/aws-otel-collector
cp tools/ctl/linux/aws-otel-collector-ctl ${AOC_ROOT}/opt/aws/aws-otel-collector/bin/
cp config.yaml ${AOC_ROOT}/opt/aws/aws-otel-collector/etc
cp .env ${AOC_ROOT}/opt/aws/aws-otel-collector/etc
cp extracfg.txt ${AOC_ROOT}/opt/aws/aws-otel-collector/etc
cp tools/packaging/linux/aws-otel-collector.service ${AOC_ROOT}/etc/systemd/system/
cp tools/packaging/linux/aws-otel-collector.conf ${AOC_ROOT}/etc/init/

chmod ug+rx ${AOC_ROOT}/opt/aws/aws-otel-collector/bin/aws-otel-collector
chmod ug+rx ${AOC_ROOT}/opt/aws/aws-otel-collector/bin/aws-otel-collector-ctl
chmod ug+rx ${AOC_ROOT}/opt/aws/aws-otel-collector/etc/config.yaml
chmod ug+rx ${AOC_ROOT}/opt/aws/aws-otel-collector/etc/.env
chmod ug+rx ${AOC_ROOT}/opt/aws/aws-otel-collector/etc/extracfg.txt
cp LICENSE "${AOC_ROOT}/opt/aws/aws-otel-collector/"
cp VERSION "${AOC_ROOT}/opt/aws/aws-otel-collector/bin/"
cp "build/linux/aoc_linux_${ARCH}" "${AOC_ROOT}/opt/aws/aws-otel-collector/bin/aws-otel-collector"
cp tools/ctl/linux/aws-otel-collector-ctl "${AOC_ROOT}/opt/aws/aws-otel-collector/bin/"
cp config.yaml "${AOC_ROOT}/opt/aws/aws-otel-collector/etc"
cp .env "${AOC_ROOT}/opt/aws/aws-otel-collector/etc"
cp extracfg.txt "${AOC_ROOT}/opt/aws/aws-otel-collector/etc"
cp tools/packaging/linux/aws-otel-collector.service "${AOC_ROOT}/etc/systemd/system/"
cp tools/packaging/linux/aws-otel-collector.conf "${AOC_ROOT}/etc/init/"

chmod ug+rx "${AOC_ROOT}/opt/aws/aws-otel-collector/bin/aws-otel-collector"
chmod ug+rx "${AOC_ROOT}/opt/aws/aws-otel-collector/bin/aws-otel-collector-ctl"
chmod ug+rx "${AOC_ROOT}/opt/aws/aws-otel-collector/etc/config.yaml"
chmod ug+rx "${AOC_ROOT}/opt/aws/aws-otel-collector/etc/.env"
chmod ug+rx "${AOC_ROOT}/opt/aws/aws-otel-collector/etc/extracfg.txt"

echo "Creating symlinks"
# bin
ln -f -s /opt/aws/aws-otel-collector/bin/aws-otel-collector-ctl ${AOC_ROOT}/usr/bin/aws-otel-collector-ctl
ln -f -s /opt/aws/aws-otel-collector/bin/aws-otel-collector-ctl "${AOC_ROOT}/usr/bin/aws-otel-collector-ctl"
# etc
ln -f -s /opt/aws/aws-otel-collector/etc ${AOC_ROOT}/etc/amazon/aws-otel-collector
ln -f -s /opt/aws/aws-otel-collector/etc "${AOC_ROOT}/etc/amazon/aws-otel-collector"
# log
ln -f -s /opt/aws/aws-otel-collector/logs ${AOC_ROOT}/var/log/amazon/aws-otel-collector
ln -f -s /opt/aws/aws-otel-collector/logs "${AOC_ROOT}/var/log/amazon/aws-otel-collector"
# pid
ln -f -s /opt/aws/aws-otel-collector/var ${AOC_ROOT}/var/run/amazon/aws-otel-collector
ln -f -s /opt/aws/aws-otel-collector/var "${AOC_ROOT}/var/run/amazon/aws-otel-collector"

echo "Copying debian build materials"
cp tools/packaging/debian/conffiles ${AOC_ROOT}/
cp tools/packaging/debian/preinst ${AOC_ROOT}/
cp tools/packaging/debian/postinst ${AOC_ROOT}/
cp tools/packaging/debian/prerm ${AOC_ROOT}/
cp tools/packaging/debian/debian-binary ${AOC_ROOT}/
cp tools/packaging/debian/conffiles "${AOC_ROOT}/"
cp tools/packaging/debian/preinst "${AOC_ROOT}/"
cp tools/packaging/debian/postinst "${AOC_ROOT}/"
cp tools/packaging/debian/prerm "${AOC_ROOT}/"
cp tools/packaging/debian/debian-binary "${AOC_ROOT}/"

echo "Constructing the control file"
echo 'Package: aws-otel-collector' > ${AOC_ROOT}/control
echo "Architecture: ${ARCH}" >> ${AOC_ROOT}/control
echo -n 'Version: ' >> ${AOC_ROOT}/control
echo -n ${VERSION} >> ${AOC_ROOT}/control
echo '-1' >> ${AOC_ROOT}/control
cat tools/packaging/debian/control >> ${BUILD_ROOT}/control

echo "Setting permissioning as required by debian"
cd ${AOC_ROOT}/..; find ./debian -type d | xargs chmod 755; cd ~-
# the below permissioning is required by debian
cd ${AOC_ROOT}; tar czf data.tar.gz opt etc usr var --owner=0 --group=0 ; cd ~-
cd ${AOC_ROOT}; tar czf control.tar.gz control conffiles preinst prerm postinst --owner=0 --group=0 ; cd ~-
echo "Package: aws-otel-collector" > "${AOC_ROOT}/control"
echo "Architecture: ${ARCH}" >> "${AOC_ROOT}/control"
echo "Version: ${VERSION}-1" >> "${AOC_ROOT}/control"
cat tools/packaging/debian/control >> "${BUILD_ROOT}/control"

echo "Setting permissions as required by debian"
cd "${AOC_ROOT}/.."; find ./debian -type d | xargs chmod 755; cd ~-
# the following permissions are required by debian
cd "${AOC_ROOT}"; tar czf data.tar.gz opt etc usr var --owner=0 --group=0 ; cd ~-
cd "${AOC_ROOT}"; tar czf control.tar.gz control conffiles preinst prerm postinst --owner=0 --group=0 ; cd ~-

echo "Creating the debian package"
ar r ${AOC_ROOT}/bin/aws-otel-collector-${ARCH}.deb ${AOC_ROOT}/debian-binary
ar r ${AOC_ROOT}/bin/aws-otel-collector-${ARCH}.deb ${AOC_ROOT}/control.tar.gz
ar r ${AOC_ROOT}/bin/aws-otel-collector-${ARCH}.deb ${AOC_ROOT}/data.tar.gz
ar r "${AOC_ROOT}/bin/aws-otel-collector-${ARCH}.deb" "${AOC_ROOT}/debian-binary"
ar r "${AOC_ROOT}/bin/aws-otel-collector-${ARCH}.deb" "${AOC_ROOT}/control.tar.gz"
ar r "${AOC_ROOT}/bin/aws-otel-collector-${ARCH}.deb" "${AOC_ROOT}/data.tar.gz"

echo "Copy debian file to ${DEST}"
mkdir -p ${DEST}
mv ${AOC_ROOT}/bin/aws-otel-collector-${ARCH}.deb ${DEST}/aws-otel-collector.deb
mkdir -p "${DEST}"
mv "${AOC_ROOT}/bin/aws-otel-collector-${ARCH}.deb" "${DEST}/aws-otel-collector.deb"

echo "remove working directory"
rm -rf ${AOC_ROOT}
rm -rf "${AOC_ROOT}"

0 comments on commit fced26f

Please sign in to comment.