diff --git a/.github/workflows/assertion.yml b/.github/workflows/assertion.yml index 2028cfc48..a41b4a1d4 100644 --- a/.github/workflows/assertion.yml +++ b/.github/workflows/assertion.yml @@ -19,7 +19,7 @@ jobs: id-token: write contents: read env: - GOPROXY: "https://${{ secrets.ARTIFACTORY_USER }}:${{ secrets.ARTIFACTORY_TOKEN }}@azr.artifactory.f5net.com/artifactory/api/go/f5-nginx-go-local-approved-dependency" + GOPROXY: "https://${{ secrets.ARTIFACTORY_USER }}:${{ secrets.ARTIFACTORY_TOKEN }}@${{ secrets.ARTIFACTORY_URL_PROD }}" outputs: agent_binary: ${{ steps.check_binary.outputs.agent_binary }} goversionm: ${{ steps.godeps.outputs.goversionm }} @@ -65,7 +65,7 @@ jobs: - name: Generate Assertion Document id: assertiondoc - uses: nginxinc/compliance-rules/.github/actions/assertion@83e452166aaf0ad8f07caf91a4f1f903b3dea1e6 # v0.3.0 + uses: nginxinc/compliance-rules/.github/actions/assertion@0aab935582c35a00e2c671d8fe25b7fdd72a927b # v0.3.1 with: artifact-name: nginx-agent_${{ env.branch_name }}_${{ matrix.osarch }} artifact-digest: ${{ env.agent-digest }} @@ -84,6 +84,6 @@ jobs: - name: Sign and Store Assertion Document id: sign - uses: nginxinc/compliance-rules/.github/actions/sign@83e452166aaf0ad8f07caf91a4f1f903b3dea1e6 # v0.3.0 + uses: nginxinc/compliance-rules/.github/actions/sign@0aab935582c35a00e2c671d8fe25b7fdd72a927b # v0.3.1 with: assertion-doc: ${{ steps.assertiondoc.outputs.assertion-document-path }} diff --git a/.github/workflows/release-branch.yml b/.github/workflows/release-branch.yml index bb883bc3f..7ce6144d9 100644 --- a/.github/workflows/release-branch.yml +++ b/.github/workflows/release-branch.yml @@ -3,38 +3,36 @@ name: Release Agent on: workflow_dispatch: inputs: - githubRelease: - description: 'Setup release in github' - type: boolean - default: false packageVersion: - description: 'Package version number' - default: "3.0.0" + required: true + description: 'Package version number (3.x.x)' + default: "" type: string packageBuildNo: - description: 'Package Build number' + required: true + description: 'Package build number' default: "1" type: string - uploadAzure: - description: 'Publish packages Azure storage' - default: true - type: boolean - publishPackages: - description: 'Publish packages to nginx repo' - default: true - type: boolean + releaseBranch: + description: 'Release branch to build from (release-3.x.x)' + required: true + type: string tagRelease: - description: 'Add tag to release branch' + description: 'Add tag for release (v3.x.x)' default: false type: boolean + githubRelease: + description: 'Draft release (v3.x.x) on GitHub' + type: boolean + default: false createPullRequest: - description: 'Create pull request back into main' + description: 'Create pull request into main (required if release branch has diverged from main)' + default: false + type: boolean + publishPackages: + description: 'Publish packages to nginx repo' default: false type: boolean - releaseBranch: - description: 'Release branch to build & publish from' - required: true - type: string uploadUrl: description: 'Location to publish packages to' required: false @@ -42,14 +40,14 @@ on: env: NFPM_VERSION: 'v2.35.3' - GOPROXY: "https://${{ secrets.ARTIFACTORY_USER }}:${{ secrets.ARTIFACTORY_TOKEN }}@azr.artifactory.f5net.com/artifactory/api/go/f5-nginx-go-local-approved-dependency" + GOPROXY: "https://${{ secrets.ARTIFACTORY_USER }}:${{ secrets.ARTIFACTORY_TOKEN }}@${{ secrets.ARTIFACTORY_URL_PROD }}" defaults: run: shell: bash concurrency: - group: ${{ github.ref_name }}-v3-release + group: ${{ github.ref_name }}-release cancel-in-progress: true permissions: @@ -60,10 +58,9 @@ jobs: name: Set workflow variables runs-on: ubuntu-22.04 outputs: + tag_release: ${{steps.vars.outputs.tag_release }} github_release: ${{steps.vars.outputs.github_release }} - upload_azure: ${{steps.vars.outputs.upload_azure }} publish_packages: ${{steps.vars.outputs.publish_packages }} - tag_release: ${{steps.vars.outputs.tag_release }} create_pull_request: ${{steps.vars.outputs.create_pull_request }} steps: - name: Checkout Repository @@ -74,10 +71,9 @@ jobs: - name: Set variables id: vars run: | + echo "tag_release=${{ inputs.tagRelease }}" >> $GITHUB_OUTPUT echo "github_release=${{ inputs.githubRelease }}" >> $GITHUB_OUTPUT - echo "upload_azure=${{ inputs.uploadAzure }}" >> $GITHUB_OUTPUT echo "publish_packages=${{ inputs.publishPackages }}" >> $GITHUB_OUTPUT - echo "tag_release=${{ inputs.tagRelease }}" >> $GITHUB_OUTPUT echo "create_pull_request=${{ inputs.createPullRequest }}" >> $GITHUB_OUTPUT cat $GITHUB_OUTPUT @@ -193,6 +189,7 @@ jobs: ref: ${{ inputs.releaseBranch }} - name: Tag release + if: ${{ needs.vars.outputs.tag_release == 'true' }} run: | git config --global user.name 'github-actions' git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com' @@ -210,7 +207,7 @@ jobs: needs: [vars,release-draft,tag-release] permissions: id-token: write - contents: write # Needed to update a github release + contents: write # Needed to update a release steps: - name: Checkout Repository uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 @@ -246,12 +243,6 @@ jobs: echo "$GPG_KEY" | base64 --decode > ${NFPM_SIGNING_KEY_FILE} make package - - name: Install GPG tools - if: ${{ inputs.publishPackages == true }} - run: | - sudo apt-get update - sudo apt-get install -y gpgv1 monkeysphere - - name: Get Id Token if: ${{ inputs.publishPackages == true }} uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 @@ -294,6 +285,7 @@ jobs: head: '${{ inputs.releaseBranch }}', base: 'main', body: [ - 'This PR is auto-generated by the release workflow.' + 'This PR was auto-generated by the release workflow.', + 'NOTE: DO NOT squash commits when merging!!', ].join('\n') }); diff --git a/.github/workflows/upload-release-assets.yml b/.github/workflows/upload-release-assets.yml index a722bc99a..c421ccdc2 100644 --- a/.github/workflows/upload-release-assets.yml +++ b/.github/workflows/upload-release-assets.yml @@ -12,7 +12,7 @@ on: type: string default: "" uploadAzure: - description: 'Publish packages Azure storage' + description: 'Publish packages to Azure blob storage' type: boolean default: false uploadGithub: @@ -25,7 +25,7 @@ defaults: shell: bash permissions: - contents: read + contents: write jobs: vars: @@ -63,31 +63,20 @@ jobs: echo "Checking Packages in ${{inputs.pkgRepo}}/nginx-agent" echo "${{secrets.PUBTEST_CERT}}" > pubtest.crt echo "${{secrets.PUBTEST_KEY}}" > pubtest.key - PKG_REPO=${{inputs.pkgRepo}} CERT=pubtest.crt KEY=pubtest.key DL=1 scripts/packages/package-check.sh ${{inputs.pkgVersion}} - for i in $(find ${{inputs.pkgRepo}}/nginx-agent | grep -e "nginx-agent[_-]${{inputs.pkgVersion}}"); do - if [[ "$i" == *.deb ]]; then - echo "Renaming ${i} to ${i/_/-}" - mv "${i}" "${i/_/-}" - fi - if [[ "$i" == *.apk ]]; then - ver=$(echo "$i" | grep -o -e "v[0-9]*\.[0-9]*") - arch=$(echo "$i" | grep -o -F -e "x86_64" -e "aarch64") - dest="$(dirname "$i")/nginx-agent-${{inputs.pkgVersion}}-$ver-$arch.apk" - echo "Renaming ${i} to ${dest}" - mv "${i}" "${dest}" - fi - done - find ${{inputs.pkgRepo}}/nginx-agent | grep -e "nginx-agent[_-]${{inputs.pkgVersion}}" + + DL=1 PKG_REPO=${{inputs.pkgRepo}} \ + CERT=pubtest.crt KEY=pubtest.key \ + scripts/packages/package-check.sh ${{inputs.pkgVersion}} - name: GitHub Upload - continue-on-error: true if: ${{ needs.vars.outputs.github_release == 'true' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # clobber overwrites existing assets of the same name run: | + gh release list gh release upload --clobber v${{ inputs.pkgVersion }} \ - $(find ${{inputs.pkgRepo}}/nginx-agent | grep -e "nginx-agent[_-]${{inputs.pkgVersion}}") + $(find ${{inputs.pkgRepo}}/nginx-agent | grep -e "nginx-agent[_-]${{inputs.pkgVersion}}" | grep -v "azure") - name: Azure Login if: ${{ inputs.uploadAzure == true }} @@ -100,8 +89,14 @@ jobs: uses: azure/CLI@9f7ce6f37c31b777ec6c6b6d1dfe7db79f497956 # v2.2.0 with: inlineScript: | - for i in $(find ${{inputs.pkgRepo}}/nginx-agent | grep -e "nginx-agent[_-]${{inputs.pkgVersion}}"); do - dest="nginx-agent/${GITHUB_REF##*/}/${i##*/}" + echo "Uploading tarball... nginx-agent/release-${{ inputs.pkgVersion }}/nginx-agent.tar.gz" + az storage blob upload --auth-mode=login -f "${{ inputs.pkgRepo }}/nginx-agent/nginx-agent.tar.gz" \ + -c ${{ secrets.AZURE_CONTAINER_NAME }} \ + --account-name ${{ secrets.AZURE_ACCOUNT_NAME }} --overwrite -n nginx-agent/release-${{ inputs.pkgVersion }}/nginx-agent.tar.gz + + echo "Uploading packages..." + for i in $(find ${{ inputs.pkgRepo }}/nginx-agent | grep -e "nginx-agent[_-]${{ inputs.pkgVersion }}"); do + dest="nginx-agent/release-${{ inputs.pkgVersion }}/${i##*/}" echo "Uploading ${i} to ${dest}" az storage blob upload --auth-mode=login -f "$i" -c ${{ secrets.AZURE_CONTAINER_NAME }} \ --account-name ${{ secrets.AZURE_ACCOUNT_NAME }} --overwrite -n ${dest} diff --git a/Makefile.packaging b/Makefile.packaging index fb33ff86a..a66b6268e 100644 --- a/Makefile.packaging +++ b/Makefile.packaging @@ -35,7 +35,7 @@ $(PACKAGES_DIR): @mkdir -p $(PACKAGES_DIR)/deb && mkdir -p $(PACKAGES_DIR)/rpm && mkdir -p $(PACKAGES_DIR)/apk .PHONY: package -package: $(PACKAGES_DIR) #### Create final packages for all supported distros +package: gpg-key $(PACKAGES_DIR) #### Create final packages for all supported distros # Build binaries for all supported architectures @for arch in $(DEB_ARCHS); do \ @@ -145,7 +145,12 @@ package: $(PACKAGES_DIR) #### Create final packages for all supported distros .PHONY: gpg-key gpg-key: ## Generate GPG public key - $$(gpg --import $(NFPM_SIGNING_KEY_FILE)); \ + @if [ -z "$(NFPM_SIGNING_KEY_FILE)" ]; then \ + echo "NFPM_SIGNING_KEY_FILE is not set. Exiting..."; \ + exit 1; \ + fi + @echo "Generating GPG public key for package signing..."; + @$$(gpg --import $(NFPM_SIGNING_KEY_FILE)); \ keyid=$$(gpg --list-keys NGINX | egrep -A1 "^pub" | egrep -v "^pub" | tr -d '[:space:]'); \ if [ -z "$$keyid" ]; then echo "Error: GPG key not found."; exit 1; fi; \ # Check if the key is expired \ diff --git a/scripts/packages/package-check.sh b/scripts/packages/package-check.sh index 8914cdf44..5cb4ba2d4 100755 --- a/scripts/packages/package-check.sh +++ b/scripts/packages/package-check.sh @@ -1,24 +1,33 @@ #!/bin/bash +# +# package_check.sh +# +# Check for the presence of nginx-agent packages in a given package repository, +# and download them if required. Defaults to packages.nginx.org if no repository is specified. +# +# If DL=1 and files are downloaded, it also prepares the packages for upload to Azure and GitHub Releases by +# modifying paths to match the expected format for each platform. +# # Usage: # # Check package v3.0.0 availability for all platforms, no auth required: # > ./package_check.sh 3.0.0 # # Check pkgs and download if present, with authentication: -# > CERT= KEY= DL=1 ./package_check.sh 3.0.0 +# > DL=1 CERT= KEY= ./package_check.sh 3.5.0 # # Required parameters: # -# version: the version of agent you wish to search for i.e 3.0.0 +# version: the version of agent you wish to search for i.e 3.5.0 # -# Optional parameters: +# Optional env variables: # # PKG_REPO: The root url for the repository you wish to check, defaults to packages.nginx.org # CERT: Path to your cert file # KEY: Path to your key file # DL: Switch to download the package if it is present, set to 1 if download required, defaults to 0 # -# Packages are downloaded to the local directory with the path of its corresponding repo url + uri i.e +# Packages are downloaded to the local directory with the path of its corresponding repo url + uri, i.e # # packages.nginx.org/nginx-agent/debian/pool/agent/n/nginx-agent/nginx-agent_3.0.0~bullseye_arm64.deb # @@ -34,7 +43,7 @@ if [[ ! -z ${CERT} ]] && [[ ! -z ${KEY} ]]; then fi if [[ -z ${PKG_REPO} ]]; then - echo "defaulting to packages.nginx.com" + echo "defaulting to packages.nginx.org" PKG_REPO="packages.nginx.org" fi @@ -44,55 +53,60 @@ if [[ -z $VERSION ]]; then echo "no version provided" exit 1 fi - PKG_DIR="${PKG_REPO}/${PKG_NAME}" PKG_REPO_URL="https://${PKG_DIR}" +DL=${DL:-0} -APK=( - alpine/v3.22/main/aarch64/nginx-agent-$VERSION.apk - alpine/v3.22/main/x86_64/nginx-agent-$VERSION.apk - alpine/v3.21/main/aarch64/nginx-agent-$VERSION.apk - alpine/v3.21/main/x86_64/nginx-agent-$VERSION.apk - alpine/v3.20/main/aarch64/nginx-agent-$VERSION.apk - alpine/v3.20/main/x86_64/nginx-agent-$VERSION.apk - alpine/v3.19/main/aarch64/nginx-agent-$VERSION.apk - alpine/v3.19/main/x86_64/nginx-agent-$VERSION.apk -) -UBUNTU=( - ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~jammy_amd64.deb - ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~noble_arm64.deb - ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~plucky_arm64.deb - ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~jammy_arm64.deb - ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~noble_amd64.deb - ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~plucky_amd64.deb -) -DEBIAN=( - debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION~bullseye_arm64.deb - debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION~bookworm_amd64.deb - debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION~trixie_arm64.deb - debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION~bookworm_arm64.deb - debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION~bullseye_amd64.deb - debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION~trixie_amd64.deb -) -AMZN=( - amzn/2023/aarch64/RPMS/nginx-agent-$VERSION.amzn2023.ngx.aarch64.rpm - amzn/2023/x86_64/RPMS/nginx-agent-$VERSION.amzn2023.ngx.x86_64.rpm +majorVersion=$(echo ${VERSION} | cut -d. -f1) + +# Define package URIs to check for each platform + +APK=() +ALPINE_VERSIONS=("3.22" "3.21" "3.20" "3.19") +ALPINE_ARCH=("x86_64" "aarch64") +for alpine_version in "${ALPINE_VERSIONS[@]}"; do + for arch in ${ALPINE_ARCH[@]}; do + APK+=("alpine/v${alpine_version}/main/${arch}/nginx-agent-${VERSION}.apk") + done +done + +UBUNTU=() +UBUNTU_VERSIONS=("jammy" "noble" "plucky") +DEB_ARCH=("amd64" "arm64") +for ubuntu_version in "${UBUNTU_VERSIONS[@]}"; do + for arch in ${DEB_ARCH[@]}; do + UBUNTU+=("ubuntu/pool/agent/n/nginx-agent/nginx-agent_${VERSION}~${ubuntu_version}_${arch}.deb") + done +done + +DEBIAN=() +DEBIAN_VERSIONS=("bullseye" "bookworm" "trixie") +for deb_version in "${DEBIAN_VERSIONS[@]}"; do + for arch in ${DEB_ARCH[@]}; do + DEBIAN+=("debian/pool/agent/n/nginx-agent/nginx-agent_${VERSION}~${deb_version}_${arch}.deb") + done +done + +CENTOS=() +CENTOS_VERSIONS=("10" "9" "8") +RPM_ARCH=("aarch64" "x86_64") +for centos_version in "${CENTOS_VERSIONS[@]}"; do + for arch in ${RPM_ARCH[@]}; do + CENTOS+=("centos/${centos_version}/${arch}/RPMS/nginx-agent-${VERSION}.el${centos_version}.ngx.${arch}.rpm") + done +done + +AMZN=() +for arch in ${RPM_ARCH[@]}; do + AMZN+=("amzn/2023/${arch}/RPMS/nginx-agent-$VERSION.amzn2023.ngx.${arch}.rpm") + AMZN+=("amzn2/2/${arch}/RPMS/nginx-agent-$VERSION.amzn2.ngx.${arch}.rpm") +done - amzn2/2/aarch64/RPMS/nginx-agent-$VERSION.amzn2.ngx.aarch64.rpm - amzn2/2/x86_64/RPMS/nginx-agent-$VERSION.amzn2.ngx.x86_64.rpm -) SUSE=( sles/15/x86_64/RPMS/nginx-agent-$VERSION.sles15.ngx.x86_64.rpm ) -CENTOS=( - centos/10/aarch64/RPMS/nginx-agent-$VERSION.el10.ngx.aarch64.rpm - centos/10/x86_64/RPMS/nginx-agent-$VERSION.el10.ngx.x86_64.rpm - centos/9/aarch64/RPMS/nginx-agent-$VERSION.el9.ngx.aarch64.rpm - centos/9/x86_64/RPMS/nginx-agent-$VERSION.el9.ngx.x86_64.rpm - centos/8/aarch64/RPMS/nginx-agent-$VERSION.el8.ngx.aarch64.rpm - centos/8/x86_64/RPMS/nginx-agent-$VERSION.el8.ngx.x86_64.rpm -) +# Aggregate all URIs to fetch uris=( ${DEBIAN[@]} ${UBUNTU[@]} @@ -102,8 +116,19 @@ uris=( ${SUSE[@]} ) +if [[ ${majorVersion} == "2" ]]; then + # v2.x supports FreeBSD packages + FREEBSD=( + freebsd/FreeBSD:12:amd64/latest/nginx-agent-$VERSION.pkg + freebsd/FreeBSD:13:amd64/latest/nginx-agent-$VERSION.pkg + ) + uris+=(${FREEBSD[@]}) +fi + +# Functions + ## Check and download if nginx-agent packages are present in the repository -check_pkgs () { +check_pkgs() { for pkg in ${uris[@]}; do echo -n "CHECK: ${PKG_REPO_URL}/${pkg} -> " local ret=$(curl -I -s ${CURL_OPTS} "https://${PKG_DIR}/${pkg}" | head -n1 | awk '{ print $2 }') @@ -116,12 +141,11 @@ check_pkgs () { if [[ ${DL} == 1 ]]; then dl_pkg "${PKG_REPO_URL}/${pkg}" fi - done } ## Download a package -dl_pkg () { +dl_pkg() { local url=${1} echo -n "GET: ${url}... " mkdir -p "${PKG_DIR}/$(dirname ${pkg})" @@ -158,5 +182,115 @@ check_repo() { fi } +# Prepare packages for upload to Azure +prep_deb() { + echo "Preparing deb packages..." + mkdir -p "${PKG_DIR}/azure/deb" + for i in $(find "${PKG_DIR}" | grep -e "nginx-agent[_-]${VERSION}.*\.deb" | grep -v "azure"); do + az_dest="${PKG_DIR}/azure/deb/$(basename "$i")" + # Azure path + # Should be 'nginx-agent_3.5.0~bullseye_arm64.deb' + echo "Copying ${i} to ${az_dest}" + cp "${i}" "${az_dest}" + # GitHub release asset path + # Should be 'nginx-agent-3.5.0.bullseye_arm64.deb' + gh_dest=$(echo ${i} | sed -E "s/_/-/" | sed -E "s/~/./") + echo "Moving ${i} to ${gh_dest}" + mv "${i}" "${gh_dest}" + done +} + +prep_apk() { + echo "Preparing apk packages..." + mkdir -p "${PKG_DIR}/azure/apk" + for i in $(find "${PKG_DIR}/alpine" | grep -e "nginx-agent[_-]${VERSION}.apk"); do + ver=$(echo "$i" | grep -o -e "v[0-9]*\.[0-9]*") + arch=$(echo "$i" | grep -o -F -e "x86_64" -e "aarch64") + dest="$(dirname "$i")/nginx-agent-${VERSION}-$ver-$arch.apk" + az_dest="${PKG_DIR}/azure/apk/$ver/$arch/nginx-agent-${VERSION}.apk" + + # Azure path + mkdir -p "$(dirname "$az_dest")" + echo "Copying ${i} to ${az_dest}" + cp "${i}" "${az_dest}" + + # GitHub release asset path + echo "Moving ${i} to ${dest}" + mv "${i}" "${dest}" + done +} + +prep_rpm() { + echo "Preparing rpm packages..." + mkdir -p "${PKG_DIR}/azure/rpm" + for i in $(find "${PKG_DIR}" | grep -e "nginx-agent-${VERSION}.*.rpm"); do + az_dest="${PKG_DIR}/azure/rpm/$(basename "$i")" + # Azure path + echo "Copying ${i} to ${az_dest}" + mkdir -p "$(dirname "$az_dest")" + cp "${i}" "${az_dest}" + # No path changes needed for GitHub release + done +} + +prep_txz() { + echo "Preparing txz packages..." + mkdir -p "${PKG_DIR}/azure/txz" + for i in $(find "${PKG_DIR}" | grep -e "nginx-agent[_-]${VERSION}.pkg"); do + bsd=$(echo "$i" | grep -e "FreeBSD:[0-9]*") + ver=$(echo "$bsd" | cut -d':' -f2) + arch=$(echo "$i" | grep -o -F -e "amd64" -e "arm64") + + # Azure path + # Should be 'FreeBSD:12:amd64/nginx-agent-2.44.0.pkg' + az_dest="${PKG_DIR}/azure/txz/FreeBSD:$ver:$arch/nginx-agent-${VERSION}.pkg" + echo "Copying ${i} to ${az_dest}" + mkdir -p "$(dirname "$az_dest")" + cp "${i}" "${az_dest}" + + # GitHub release asset path + # Should be 'nginx-agent-2.44.0-FreeBSD.12.amd64.pkg' + dest="$(dirname "$i")/nginx-agent-${VERSION}-FreeBSD.$ver.$arch.pkg" + echo "Moving ${i} to ${dest}" + cp "${i}" "${dest}" + done +} + +prepare_packages() { + echo "Preparing packages for upload..." + prep_deb + prep_apk + prep_rpm + if [[ ${majorVersion} == "2" ]]; then + prep_txz + fi + + echo + echo "Prepared packages for Azure:" + find "${PKG_DIR}/azure" -type f | grep "${VERSION}" | sed "s|${PKG_DIR}/azure/||" | sort + + echo + echo "Prepared packages for GitHub Release v${VERSION}:" + find "${PKG_DIR}" -type f | grep "${VERSION}" | grep -v "/azure/" | awk -F/ '{print $NF}' | sort +} + +create_tarball() { + echo "Creating tarball... " + tar -czvf "${PKG_DIR}/nginx-agent.tar.gz" -C ${PKG_DIR}/azure . + if [[ $? != 0 ]]; then + echo -e "${RED}Failed to create tarball!${NC}" + return + fi + echo "SAVED: ${PKG_DIR}/nginx-agent.tar.gz" +} + +# Main + check_repo check_pkgs + +# Prepare packages for upload +if [[ ${DL} == 1 ]]; then + prepare_packages + create_tarball +fi