From 7601f650ffd610811860ecffd269c0ccc8afec74 Mon Sep 17 00:00:00 2001 From: Sven Dolderer Date: Tue, 26 Nov 2024 17:40:27 +0100 Subject: [PATCH] Debian packaging added - create script completed - release workflow extended --- .../workflows/release-client-server-pds.yml | 521 ++++++++++-------- sechub-cli/script/build-debian-packages.sh | 75 ++- 2 files changed, 336 insertions(+), 260 deletions(-) diff --git a/.github/workflows/release-client-server-pds.yml b/.github/workflows/release-client-server-pds.yml index 597799531..cf87f0fa1 100644 --- a/.github/workflows/release-client-server-pds.yml +++ b/.github/workflows/release-client-server-pds.yml @@ -166,159 +166,159 @@ jobs: - name: Build Client run: ./gradlew :sechub-cli:buildGo :sechub-cli:testGo - # ---------------------- - # Build SecHub Server + PDS - # ---------------------- - - name: Build Server and PDS artifacts - run: ./gradlew ensureLocalhostCertificate build generateOpenapi buildDeveloperAdminUI -x :sechub-cli:build - - # ---------------------- - # Build API Java publish - # ---------------------- - - name: Generate and build Java projects related to SecHub Java API - run: ./gradlew :sechub-api-java:build :sechub-systemtest:build :sechub-pds-tools:buildPDSToolsCLI -Dsechub.build.stage=api-necessary - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token - - # ---------------------- - # Integration test - # ---------------------- - - name: Integration test - run: ./gradlew :sechub-integrationtest:startIntegrationTestInstances :sechub-systemtest:integrationtest :sechub-integrationtest:integrationtest :sechub-integrationtest:stopIntegrationTestInstances -Dsechub.build.stage=all - - - name: Create combined test report - if: always() - run: ./gradlew createCombinedTestReport -Dsechub.build.stage=all - - # To identifiy parts not in git history and leading to "-dirty-$commitId" markern in documentation - - name: Collect GIT status - if: always() - run: | - # restore reduced-openapi3.json - git restore sechub-api-java/src/main/resources/reduced-openapi3.json - git status > build/reports/git-status.txt - - # ----------------------------------------- - # Upload Build Artifacts - # ----------------------------------------- - - name: Archive combined test report - if: always() - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 - with: - name: combined-sechub-testreport - path: build/reports/combined-report - retention-days: 14 - - - name: Archive GIT status - if: always() - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 - with: - name: git-status.txt - path: build/reports/git-status.txt - retention-days: 14 - - - name: Archive sechub server artifacts - if: always() - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 - with: - name: sechub-server - path: sechub-server/build/libs - retention-days: 14 - - - name: Archive pds server artifacts - if: always() - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 - with: - name: sechub-pds - path: sechub-pds/build/libs - - - name: Archive developer tools artifacts - if: always() - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 - with: - name: sechub-developertools - path: sechub-developertools/build/libs - retention-days: 14 - - - name: Archive sechub client artifacts - if: always() - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 - with: - name: sechub-client - path: sechub-cli/build/go - retention-days: 14 - - - name: Install graphviz (asciidoc diagrams) - run: sudo apt-get --assume-yes install graphviz - - # ----------------------------------------- - # Build Documentation - # ----------------------------------------- - - name: Create documentation - run: ./gradlew documentation-with-pages - - # ----------------------------------------- - # Upload documentation - # ----------------------------------------- - - name: Archive documentation HTML - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 - with: - name: sechub-docs-html - path: sechub-doc/build/docs/final-html/ - retention-days: 14 - - - name: Archive documentation PDF - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 - with: - name: sechub-docs-pdf - path: sechub-doc/build/docs/asciidoc/*.pdf - retention-days: 14 - - - name: Archive openAPI3 JSON files - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 - with: - name: sechub-api-spec - path: sechub-doc/build/api-spec/ - retention-days: 14 - - # ----------------------------------------- - # Update and commit release documentation for https://mercedes-benz.github.io/sechub/ - # ----------------------------------------- - - name: Update release documentation - run: | - git reset --hard - sechub-doc/helperscripts/publish+git-add-releasedocs.sh - git commit -m "docs update by SecHub release job @github-actions" - - # ----------------------------------------- - # Create pull request for release documentation - # ----------------------------------------- - - name: Create pull request for release documentation - id: pr_release_documentation - uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f - with: - branch: release-documentation - branch-suffix: short-commit-hash - delete-branch: true - title: '1 - Release documentation [auto-generated]' - body: | - Release of SecHub documentation - - -> Please review and merge **before** publishing the release. - - - name: Print PR infos - run: | - echo "Pull Request Number - ${{ steps.pr_release_documentation.outputs.pull-request-number }}" - echo "Pull Request URL - ${{ steps.pr_release_documentation.outputs.pull-request-url }}" - - # ----------------------------------------- - # Assert releaseable, so no dirty flags on releases - # even when all artifact creation parts are done! - # ----------------------------------------- - - name: Assert releasable - run: | - git status - ./gradlew assertReleaseable + # # ---------------------- + # # Build SecHub Server + PDS + # # ---------------------- + # - name: Build Server and PDS artifacts + # run: ./gradlew ensureLocalhostCertificate build generateOpenapi buildDeveloperAdminUI -x :sechub-cli:build + + # # ---------------------- + # # Build API Java publish + # # ---------------------- + # - name: Generate and build Java projects related to SecHub Java API + # run: ./gradlew :sechub-api-java:build :sechub-systemtest:build :sechub-pds-tools:buildPDSToolsCLI -Dsechub.build.stage=api-necessary + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + + # # ---------------------- + # # Integration test + # # ---------------------- + # - name: Integration test + # run: ./gradlew :sechub-integrationtest:startIntegrationTestInstances :sechub-systemtest:integrationtest :sechub-integrationtest:integrationtest :sechub-integrationtest:stopIntegrationTestInstances -Dsechub.build.stage=all + + # - name: Create combined test report + # if: always() + # run: ./gradlew createCombinedTestReport -Dsechub.build.stage=all + + # # To identifiy parts not in git history and leading to "-dirty-$commitId" markern in documentation + # - name: Collect GIT status + # if: always() + # run: | + # # restore reduced-openapi3.json + # git restore sechub-api-java/src/main/resources/reduced-openapi3.json + # git status > build/reports/git-status.txt + + # # ----------------------------------------- + # # Upload Build Artifacts + # # ----------------------------------------- + # - name: Archive combined test report + # if: always() + # uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 + # with: + # name: combined-sechub-testreport + # path: build/reports/combined-report + # retention-days: 14 + + # - name: Archive GIT status + # if: always() + # uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 + # with: + # name: git-status.txt + # path: build/reports/git-status.txt + # retention-days: 14 + + # - name: Archive sechub server artifacts + # if: always() + # uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 + # with: + # name: sechub-server + # path: sechub-server/build/libs + # retention-days: 14 + + # - name: Archive pds server artifacts + # if: always() + # uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 + # with: + # name: sechub-pds + # path: sechub-pds/build/libs + + # - name: Archive developer tools artifacts + # if: always() + # uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 + # with: + # name: sechub-developertools + # path: sechub-developertools/build/libs + # retention-days: 14 + + # - name: Archive sechub client artifacts + # if: always() + # uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 + # with: + # name: sechub-client + # path: sechub-cli/build/go + # retention-days: 14 + + # - name: Install graphviz (asciidoc diagrams) + # run: sudo apt-get --assume-yes install graphviz + + # # ----------------------------------------- + # # Build Documentation + # # ----------------------------------------- + # - name: Create documentation + # run: ./gradlew documentation-with-pages + + # # ----------------------------------------- + # # Upload documentation + # # ----------------------------------------- + # - name: Archive documentation HTML + # uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 + # with: + # name: sechub-docs-html + # path: sechub-doc/build/docs/final-html/ + # retention-days: 14 + + # - name: Archive documentation PDF + # uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 + # with: + # name: sechub-docs-pdf + # path: sechub-doc/build/docs/asciidoc/*.pdf + # retention-days: 14 + + # - name: Archive openAPI3 JSON files + # uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 + # with: + # name: sechub-api-spec + # path: sechub-doc/build/api-spec/ + # retention-days: 14 + + # # ----------------------------------------- + # # Update and commit release documentation for https://mercedes-benz.github.io/sechub/ + # # ----------------------------------------- + # - name: Update release documentation + # run: | + # git reset --hard + # sechub-doc/helperscripts/publish+git-add-releasedocs.sh + # git commit -m "docs update by SecHub release job @github-actions" + + # # ----------------------------------------- + # # Create pull request for release documentation + # # ----------------------------------------- + # - name: Create pull request for release documentation + # id: pr_release_documentation + # uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f + # with: + # branch: release-documentation + # branch-suffix: short-commit-hash + # delete-branch: true + # title: '1 - Release documentation [auto-generated]' + # body: | + # Release of SecHub documentation + + # -> Please review and merge **before** publishing the release. + + # - name: Print PR infos + # run: | + # echo "Pull Request Number - ${{ steps.pr_release_documentation.outputs.pull-request-number }}" + # echo "Pull Request URL - ${{ steps.pr_release_documentation.outputs.pull-request-url }}" + + # # ----------------------------------------- + # # Assert releaseable, so no dirty flags on releases + # # even when all artifact creation parts are done! + # # ----------------------------------------- + # - name: Assert releasable + # run: | + # git status + # ./gradlew assertReleaseable # ****************************************** # S E R V E R release @@ -495,76 +495,109 @@ jobs: # ****************************************** # C l i e n t release # ****************************************** - - name: Create client release ${{ inputs.client-version }} - id: create_client_release - if: inputs.client-version != '' - uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token - with: - tag_name: v${{ inputs.client-version }}-client - commitish: master - release_name: Client Version ${{ inputs.client-version }} - body: | - Changes in this Release - - Some minor changes on client implementation - - For more details please look at [Milestone ${{inputs.client-milestone-number}}]( https://github.com/mercedes-benz/sechub/milestone/${{inputs.client-milestone-number}}?closed=1) - draft: true - prerelease: false - - - name: Create client release asset sechub-cli-${{ inputs.client-version }}.zip + - name: Create client binary release asset sechub-cli-${{ inputs.client-version }}.zip if: inputs.client-version != '' run: | cd sechub-cli/build/go zip -r sechub-cli.zip platform sha256sum sechub-cli.zip > sechub-cli.zip.sha256 - - name: Upload Client release asset sechub-cli-${{ inputs.client-version }}.zip - if: inputs.client-version != '' - uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_client_release.outputs.upload_url }} - asset_path: ./sechub-cli/build/go/sechub-cli.zip - asset_name: sechub-cli-${{ inputs.client-version }}.zip - asset_content_type: application/zip - - - name: Upload Client release asset sechub-cli-${{ inputs.client-version }}.zip.sha256 + - name: Create client Debian packages if: inputs.client-version != '' - uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_client_release.outputs.upload_url }} - asset_path: ./sechub-cli/build/go/sechub-cli.zip.sha256 - asset_name: sechub-cli-${{ inputs.client-version }}.zip.sha256 - asset_content_type: text/plain + shell: bash + run: sechub-cli/script/build-debian-packages.sh ${{ inputs.client-version }} - - name: Upload sechub-client.pdf release asset - id: upload-sechub-doc-client-release-asset + - name: Create client release ${{ inputs.client-version }} if: inputs.client-version != '' - uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 + shell: bash + run: | + set -x + cd sechub-cli/build/ + assets=() + assets+=("-a" "go/sechub-cli.zip#sechub-cli-${{ inputs.client-version }}.zip") + assets+=("-a" "go/sechub-cli.zip.sha256#sechub-cli-${{ inputs.client-version }}.zip.sha256") + for asset in deb-build/*.deb ; do + filename=`basename "$i"` + assets+=("-a" "${asset}#${filename}") + done + tag_name="v${{ inputs.client-version }}-client" + release_title="Client Version ${{ inputs.client-version }}" + cat - < release_message.txt + $release_title + + Changes in this Release + - Some minor changes on client implementation + + For more details please look at [Milestone ${{inputs.client-milestone-number}}]( https://github.com/mercedes-benz/sechub/milestone/${{inputs.client-milestone-number}}?closed=1) + EOF + cat release_message.txt + echo hub release create --draft "${assets[@]}" -F release_message.txt "$tag_name" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_client_release.outputs.upload_url }} - asset_path: ./sechub-doc/build/docs/asciidoc/sechub-client.pdf - asset_name: sechub-client-${{ inputs.client-version }}.pdf - asset_content_type: application/pdf - - name: Create Client ${{ inputs.client-version }} release issue - if: inputs.client-version != '' - uses: dacbd/create-issue-action@main - with: - token: ${{ github.token }} - title: Release Client ${{ inputs.client-version }} - body: | - See [Milestone ${{inputs.client-milestone-number}}]( https://github.com/mercedes-benz/sechub/milestone/${{inputs.client-milestone-number}}?closed=1) for details. - - Please close this issue after the release. - milestone: ${{ inputs.client-milestone-number }} + # - name: Create client release ${{ inputs.client-version }} + # id: create_client_release + # if: inputs.client-version != '' + # uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + # with: + # tag_name: v${{ inputs.client-version }}-client + # commitish: master + # release_name: Client Version ${{ inputs.client-version }} + # body: | + # Changes in this Release + # - Some minor changes on client implementation + + # For more details please look at [Milestone ${{inputs.client-milestone-number}}]( https://github.com/mercedes-benz/sechub/milestone/${{inputs.client-milestone-number}}?closed=1) + # draft: true + # prerelease: false + + # - name: Upload Client release asset sechub-cli-${{ inputs.client-version }}.zip + # if: inputs.client-version != '' + # uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ steps.create_client_release.outputs.upload_url }} + # asset_path: ./sechub-cli/build/go/sechub-cli.zip + # asset_name: sechub-cli-${{ inputs.client-version }}.zip + # asset_content_type: application/zip + + # - name: Upload Client release asset sechub-cli-${{ inputs.client-version }}.zip.sha256 + # if: inputs.client-version != '' + # uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ steps.create_client_release.outputs.upload_url }} + # asset_path: ./sechub-cli/build/go/sechub-cli.zip.sha256 + # asset_name: sechub-cli-${{ inputs.client-version }}.zip.sha256 + # asset_content_type: text/plain + + # - name: Upload sechub-client.pdf release asset + # id: upload-sechub-doc-client-release-asset + # if: inputs.client-version != '' + # uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ steps.create_client_release.outputs.upload_url }} + # asset_path: ./sechub-doc/build/docs/asciidoc/sechub-client.pdf + # asset_name: sechub-client-${{ inputs.client-version }}.pdf + # asset_content_type: application/pdf + + # - name: Create Client ${{ inputs.client-version }} release issue + # if: inputs.client-version != '' + # uses: dacbd/create-issue-action@main + # with: + # token: ${{ github.token }} + # title: Release Client ${{ inputs.client-version }} + # body: | + # See [Milestone ${{inputs.client-milestone-number}}]( https://github.com/mercedes-benz/sechub/milestone/${{inputs.client-milestone-number}}?closed=1) for details. + + # Please close this issue after the release. + # milestone: ${{ inputs.client-milestone-number }} # ****************************************** @@ -656,39 +689,39 @@ jobs: ./20-push-image.sh $DOCKER_REGISTRY $VERSION_TAG yes - # ----------------------------------------- - # Create a pull request for merging back `master` into `develop` - # ----------------------------------------- - - name: pull-request master to develop - id: pr_master_to_develop - continue-on-error: true - uses: repo-sync/pull-request@7e79a9f5dc3ad0ce53138f01df2fad14a04831c5 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - source_branch: "master" - destination_branch: "develop" - pr_allow_empty: true # should allow an empty PR, but seems not to work - pr_title: '2 - After release: Merge master back into develop [auto-generated]' - pr_body: | - After SecHub release - - Client '${{ inputs.client-version }}' - - Server '${{ inputs.server-version }}' - - PDS '${{ inputs.pds-version }}' - - Merge master branch back into develop - - -> Please merge **after** the release has been published. - - - name: Print PR infos if PR was created - if: steps.pr_master_to_develop.outcome == 'success' - run: | - echo "Pull Request Number - ${{ steps.pr_master_to_develop.outputs.pr_number }}" - echo "Pull Request URL - ${{ steps.pr_master_to_develop.outputs.pr_url }}" - - - name: Print info if no PR was created - if: steps.pr_master_to_develop.outcome != 'success' - run: | - echo "Nothing to merge - no pull request necessary." + # # ----------------------------------------- + # # Create a pull request for merging back `master` into `develop` + # # ----------------------------------------- + # - name: pull-request master to develop + # id: pr_master_to_develop + # continue-on-error: true + # uses: repo-sync/pull-request@7e79a9f5dc3ad0ce53138f01df2fad14a04831c5 + # with: + # github_token: ${{ secrets.GITHUB_TOKEN }} + # source_branch: "master" + # destination_branch: "develop" + # pr_allow_empty: true # should allow an empty PR, but seems not to work + # pr_title: '2 - After release: Merge master back into develop [auto-generated]' + # pr_body: | + # After SecHub release + # - Client '${{ inputs.client-version }}' + # - Server '${{ inputs.server-version }}' + # - PDS '${{ inputs.pds-version }}' + + # Merge master branch back into develop + + # -> Please merge **after** the release has been published. + + # - name: Print PR infos if PR was created + # if: steps.pr_master_to_develop.outcome == 'success' + # run: | + # echo "Pull Request Number - ${{ steps.pr_master_to_develop.outputs.pr_number }}" + # echo "Pull Request URL - ${{ steps.pr_master_to_develop.outputs.pr_url }}" + + # - name: Print info if no PR was created + # if: steps.pr_master_to_develop.outcome != 'success' + # run: | + # echo "Nothing to merge - no pull request necessary." build-pds-solutions: diff --git a/sechub-cli/script/build-debian-packages.sh b/sechub-cli/script/build-debian-packages.sh index 4be5e6baf..3bd7d52f8 100755 --- a/sechub-cli/script/build-debian-packages.sh +++ b/sechub-cli/script/build-debian-packages.sh @@ -2,25 +2,37 @@ # SPDX-License-Identifier: MIT set -e -# This script creates Debian packages of the SecHub client for Linux -# It is meant to be used for SecHub client releases - # Debian packaging data DEB_PACKAGE_NAME="sechub-client" DEB_SECTION="misc" DEB_MAINTAINER="SecHub FOSS team " DEB_HOMEPAGE="https://github.com/mercedes-benz/sechub" DEB_DESCRIPTION="The SecHub command line client. See $DEB_HOMEPAGE" -DEB_PATH="usr/bin" # Where to place the SecHub client executable on install +DEB_BIN_PATH="usr/bin" # Where to place the SecHub client executable on install # Hardware architectures we build Debian packages for -ARCHITECTURE_LIST="amd64 i386 arm arm64" # space separated list +ARCHITECTURE_LIST="amd64 386 arm arm64" # space separated list BUILD_DIR="build" DEBIAN_BUILD_DIR="deb-build" GO_BUILD_DIR="go/platform" MANDATORY_EXECUTABLES="dpkg-deb fakeroot" # space separated list +function usage { + cat - < + +This script creates Debian packages of the SecHub client for Linux +It is meant to be used for SecHub client releases + +Mandatory argument is the version tag in format .. with an optional appendix. +Examples: +- 1.10.0 +- 1.10.0-gh-build +- 1.10.0-9 +EOF +} function check_executable_is_installed { executable="$1" @@ -31,19 +43,36 @@ function check_executable_is_installed { fi } -function prepare_package_build { +function get_debian_architecture { + local deb_architecture + # Special case for i386 architecture + if [ "$1" = "386" ] ; then + deb_architecture="i386" + else + deb_architecture="$architecture" + fi + echo $deb_architecture +} + +function build_deb_package { local architecture="$1" - local deb_dir="$DEBIAN_BUILD_DIR/$architecture" + local deb_architecture=`get_debian_architecture $architecture` + local deb_package_name="sechub-client_${SECHUB_CLIENT_VERSION}_${deb_architecture}" + local deb_dir="$DEBIAN_BUILD_DIR/$deb_package_name" local size - mkdir -p "$deb_dir/DEBIAN" "$deb_dir/$DEB_PATH" - cp "$GO_BUILD_DIR/linux-$architecture/sechub" "$deb_dir/$DEB_PATH" + echo "### Building Debian package $deb_package_name.deb" + # create dirs + mkdir -p "$deb_dir/DEBIAN" "$deb_dir/$DEB_BIN_PATH" + # copy executable into destination dir + cp "$GO_BUILD_DIR/linux-$architecture/sechub" "$deb_dir/$DEB_BIN_PATH" # determine file size in bytes - size=`cat "$deb_dir/$DEB_PATH/sechub" | wc --bytes` + size=`cat "$deb_dir/$DEB_BIN_PATH/sechub" | wc --bytes` + # Create Debian package meta data cat - < "$deb_dir/DEBIAN/control" Package: $DEB_PACKAGE_NAME Version: $SECHUB_CLIENT_VERSION Section: $DEB_SECTION -Architecture: $architecture +Architecture: $deb_architecture Priority: optional Essential: no Installed-Size: $size @@ -51,27 +80,41 @@ Homepage: $DEB_HOMEPAGE Maintainer: $DEB_MAINTAINER Description: $DEB_DESCRIPTION EOF + # Create Debian package + fakeroot dpkg-deb --build "$deb_dir" } - ################ -SECHUB_CLIENT_VERSION="$1" -echo "ToDo: verify" # Check prepreqs for i in $MANDATORY_EXECUTABLES ; do check_executable_is_installed $i done -cd `dirname $0/..` +SECHUB_CLIENT_VERSION=$1 + +FAILED=false +if [ -z "$SECHUB_CLIENT_VERSION" ] ; then + echo "Please provide a version tag as 1st argument" + FAILED=true +elif [[ ! "$SECHUB_CLIENT_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+ ]]; then + echo "Provided version tag is invalid" + FAILED=true +fi + +cd `dirname $0`/.. if [ ! -d "$BUILD_DIR/$GO_BUILD_DIR" ] ; then echo "Please build the SecHub client executables first. './gradlew buildGo testGo'" + FAILED=true +fi + +if $FAILED ; then + usage exit 1 fi cd "$BUILD_DIR" mkdir -p "$DEBIAN_BUILD_DIR" for arch in $ARCHITECTURE_LIST ; do - prepare_package_build $arch build_deb_package $arch done