diff --git a/.github/workflows/build-assets.yml b/.github/workflows/build-assets.yml index 2e9fd92f236..eae0f556ea5 100644 --- a/.github/workflows/build-assets.yml +++ b/.github/workflows/build-assets.yml @@ -76,16 +76,6 @@ jobs: generateReleaseNotes: false prerelease: ${{ contains(github.ref, '-rc') }} - - name: Release LN - uses: ncipollo/release-action@v1.14.0 - with: - allowUpdates: true - generateReleaseNotes: false - prerelease: ${{ contains(github.ref, '-rc') }} - owner: ${{ secrets.LNB_ACTOR }} - repo: LN - token: ${{ secrets.LNB_TOKEN }} - tag: ${{ steps.vars.outputs.internal_tag }} build-docker: name: Build Docker @@ -95,48 +85,7 @@ jobs: matrix: include: - os: ubuntu-22.04 - - os: ubuntu-22.04 - name: k8s - container: true - - os: ubuntu-22.04 - name: docs - documentation: true - - os: ubuntu-20.04 - - os: centos-8 - - os: centos-7 - cmake_options_extra: "-DVCPKG_TARGET_TRIPLET=x64-centos-7-dynamic" - - os: amazonlinux - cmake_options_extra: "-DVCPKG_TARGET_TRIPLET=x64-amazonlinux-dynamic" - - os: rockylinux-8 - - os: ubuntu-22.04 - name: LN k8s - ln: true - container: true - - os: ubuntu-22.04 - name: LN - ln: true - - os: ubuntu-22.04 - name: Enterprise - ee: true - - os: ubuntu-20.04 - name: LN - ln: true - - os: centos-8 - name: LN - cmake_options_extra: "" - ln: true - - os: centos-7 - name: LN - cmake_options_extra: "-DVCPKG_TARGET_TRIPLET=x64-centos-7-dynamic" - ln: true - - os: rockylinux-8 - name: LN - cmake_options_extra: "" - ln: true - - os: centos-7-rh-python38 - name: LN Python 3.8 - cmake_options_extra: "-DVCPKG_TARGET_TRIPLET=x64-centos-7-dynamic -DCUSTOM_LABEL=_rh_python38" - ln: true + fail-fast: false steps: @@ -475,287 +424,8 @@ jobs: name: ${{ matrix.os }}-${{ matrix.ln }}-${{ matrix.container }}-${{ matrix.documentation }}-logs path: ${{ needs.preamble.outputs.folder_build }}/**/*.log - build-bare-metal: - name: Build Bare Metal - # if: github.repository == 'hpcc-systems/HPCC-Platform' - needs: preamble - strategy: - matrix: - include: - - os: "windows-2022" - mono: "" - sudo: "" - cmake_config_options: '-T host=x64 -A x64 -DUSE_OPTIONAL=OFF -DCLIENTTOOLS_ONLY=ON -DUSE_AZURE=OFF -DUSE_CASSANDRA=OFF -DUSE_PARQUET=OFF -DUSE_JAVA=OFF -DUSE_OPENLDAP=OFF' - cmake_build_options: "--config Release --parallel $NUMBER_OF_PROCESSORS" - - os: "macos-12" - mono: "mono" - sudo: "sudo" - cmake_config_options: "-DCMAKE_BUILD_TYPE=Release -DUSE_OPTIONAL=OFF -DCLIENTTOOLS_ONLY=ON -DUSE_AZURE=OFF -DUSE_CASSANDRA=OFF -DUSE_PARQUET=OFF -DUSE_JAVA=OFF -DUSE_OPENLDAP=OFF" - cmake_build_options: "--parallel $(nproc)" - fail-fast: false - - runs-on: ${{ matrix.os }} - steps: - - name: Print vars - shell: "bash" - run: | - echo ${{ matrix.os }} - echo "${{ toJSON(needs.preamble.outputs) }})" - - - name: OSX Dependencies - if: ${{ contains(matrix.os, 'macos') }} - shell: "bash" - run: | - brew install bison flex pkg-config autoconf autoconf-archive automake libtool cmake openjdk@11 - - - name: "Remove builtin vcpkg (old)" - working-directory: . - shell: "bash" - run: | - ${{ matrix.sudo }} rm -rf "$VCPKG_INSTALLATION_ROOT" - - - name: Checkout HPCC-Platform - uses: actions/checkout@v4 - with: - ref: ${{ needs.preamble.outputs.community_ref }} - submodules: recursive - path: ./HPCC-Platform - - - name: Checkout LN - uses: actions/checkout@v4 - with: - repository: ${{ github.repository_owner }}/LN - token: ${{ secrets.LNB_TOKEN }} - ref: ${{ needs.preamble.outputs.internal_ref }} - submodules: recursive - path: ./LN - - - name: "Create code signing" - if: ${{ contains(matrix.os,'windows') }} - shell: "pwsh" - run: | - mkdir -p ./sign - cd sign - $pfxPath = "hpcc_code_signing.pfx" - $encodedBytes = [System.Convert]::FromBase64String("${{ secrets.SIGNING_CERTIFICATE }}") - $currentDirectory = Get-Location - $certificatePath = Join-Path -Path $currentDirectory -ChildPath $pfxPath - [IO.File]::WriteAllBytes("$certificatePath", $encodedBytes) - CertUtil -p ${{ secrets.SIGNING_CERTIFICATE_PASSPHRASE }} hpcc_code_signing.pfx - - - name: "vcpkg Bootstrap" - shell: "bash" - run: | - ./HPCC-Platform/vcpkg/bootstrap-vcpkg.sh - - - name: "Setup NuGet credentials" - shell: "bash" - run: | - ${{ matrix.mono }} `./HPCC-Platform/vcpkg/vcpkg fetch nuget | tail -n 1` \ - sources add \ - -name "GitHub" \ - -source "https://nuget.pkg.github.com/hpcc-systems/index.json" \ - -storepasswordincleartext \ - -username "${{ github.repository_owner }}" \ - -password "${{ secrets.GITHUB_TOKEN }}" - - - name: CMake Packages - shell: "bash" - run: | - mkdir -p ./build - cmake -S ./HPCC-Platform -B ./build ${{ matrix.cmake_config_options }} - cmake --build ./build ${{ matrix.cmake_build_options }} --target package - - - name: Sign Windows Package - if: ${{ contains(matrix.os,'windows') }} - shell: "pwsh" - run: | - cd ./build - C:\"Program Files (x86)"\"Microsoft SDKs"\ClickOnce\SignTool\signtool.exe sign /debug /f ../sign/hpcc_code_signing.pfx /p ${{ secrets.SIGNING_CERTIFICATE_PASSPHRASE }} /t http://timestamp.digicert.com /fd SHA256 hpccsystems-clienttools*.exe - - - name: Upload Artifact for ECLIDE build - if: ${{ contains(matrix.os, 'windows') }} - uses: actions/upload-artifact@v4 - with: - name: Windows-Clienttools - path: ./build/hpccsystems-clienttools*.exe - compression-level: 0 - - - name: Upload Assets - uses: ncipollo/release-action@v1.14.0 - with: - allowUpdates: true - generateReleaseNotes: false - prerelease: ${{ contains(github.ref, '-rc') }} - artifacts: "./build/*.exe,./build/*.msi,./build/*.dmg,./build/*.pkg,./build/*.tar.gz" - - - name: CMake LN Packages - shell: "bash" - run: | - ${{ matrix.sudo }} rm -f ./build/CMakeCache.txt - ${{ matrix.sudo }} rm -rf ./build/CMakeFiles - cmake -S ./LN -B ./build ${{ matrix.cmake_config_options }} - cmake --build ./build ${{ matrix.cmake_build_options }} --target package - - - name: Sign LN Windows Package - if: ${{ contains(matrix.os,'windows') }} - shell: "pwsh" - run: | - cd ./build - C:\"Program Files (x86)"\"Microsoft SDKs"\ClickOnce\SignTool\signtool.exe sign /debug /f ../sign/hpcc_code_signing.pfx /p ${{ secrets.SIGNING_CERTIFICATE_PASSPHRASE }} /t http://timestamp.digicert.com /fd SHA256 hpccsystems-clienttools*.exe - - - name: Upload LN Assets - uses: ncipollo/release-action@v1.14.0 - with: - allowUpdates: true - generateReleaseNotes: false - prerelease: ${{ contains(github.ref, '-rc') }} - owner: ${{ secrets.LNB_ACTOR }} - repo: LN - token: ${{ secrets.LNB_TOKEN }} - tag: ${{ needs.preamble.outputs.internal_tag }} - artifacts: "./build/hpccsystems-clienttools-internal*.exe,./build/hpccsystems-clienttools-internal*.msi,./build/hpccsystems-clienttools-internal*.dmg,./build/hpccsystems-clienttools-internal*.pkg,./build/hpccsystems-clienttools-internal*.tar.gz" - - - name: Upload Assets to Jfrog (windows) - if: ${{ contains(matrix.os, 'windows') && github.repository_owner == 'hpcc-systems' }} - shell: bash - run: | - cd ./build - packages=($(ls -1 hpccsystems-*.exe )) - for _package in ${packages[@]}; do - curl -u${{ secrets.JFROG_USERNAME }}:${{ secrets.JFROG_PASSWORD }} "https://${{ secrets.JFROG_REGISTRY }}/hpccpl-windows-local/LN/windows/x86_64/${_package}" -T ${_package} - done - - - name: Upload Assets to Jfrog (macos) - if: ${{ contains(matrix.os, 'macos') && github.repository_owner == 'hpcc-systems' }} - shell: bash - run: | - cd ./build - packages=($(ls -1 hpccsystems-*.pkg )) - for _package in ${packages[@]}; do - curl -u${{ secrets.JFROG_USERNAME }}:${{ secrets.JFROG_PASSWORD }} "https://${{ secrets.JFROG_REGISTRY }}/hpccpl-macos-local/LN/macos/x86_64/${_package}" -T ${_package} - done - - - name: Upload error logs - if: ${{ failure() || cancelled() }} - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.os }}-logs - path: ./build/**/*.log - - build-bare-metal-eclide: - name: Build Bare Metal ECLIDE - needs: [ preamble, build-docker, build-bare-metal ] - runs-on: "windows-2022" - steps: - - name: Print vars - shell: "bash" - run: | - echo "${{ toJSON(needs.preamble.outputs) }})" - - - name: Checkout HPCC-Platform - uses: actions/checkout@v4 - with: - ref: ${{ needs.preamble.outputs.community_ref }} - submodules: recursive - path: ./HPCC-Platform - - - name: Checkout ECLIDE - uses: actions/checkout@v4 - with: - repository: ${{ github.repository_owner }}/ECLIDE - ref: ${{ needs.preamble.outputs.eclide_ref }} - submodules: recursive - path: ./ECLIDE - fetch-depth: 0 - - - name: "Install html-help-workshop" - shell: "bash" - run: | - choco install html-help-workshop - mkdir -p ./ECLIDE/docs }} - - - name: "Fetch html artifacts" - uses: actions/download-artifact@v4 - with: - name: html-help-documents - merge-multiple: true - - - name: "Fetch clienttools artifact" - uses: actions/download-artifact@v4 - with: - name: Windows-Clienttools - merge-multiple: true - - - name: "Create EN_US CHM file" - shell: "bash" - run: | - html_doc=$(find . -type f -name "html_help_EN_US-*") - mkdir html_help_EN_US - 7z x $html_doc -ohtml_help_EN_US - cd html_help_EN_US/html_help - # Chocolate install a package but it is not in PATH variable. Use path full of hhc.exe - # hhc.exe return non-zero. Appending "true" to work-around - C:/"Program Files (x86)"/"HTML Help Workshop"/hhc.exe htmlhelp.hhp || true - mv htmlhelp.chm ECLReference.chm - cp ECLReference.chm ../../ECLIDE/docs/ - - - name: "Create PT_BR CHM file" - shell: "bash" - run: | - html_doc=$(find . -type f -name "html_help_PT_BR-*") - mkdir html_help_PT_BR - 7z x $html_doc -ohtml_help_PT_BR - cd html_help_PT_BR/html_help - # Chocolate install a package but it is not in PATH variable. Use path full of hhc.exe - # hhc.exe return non-zero. Appending "true" to work-around - C:/"Program Files (x86)"/"HTML Help Workshop"/hhc.exe htmlhelp.hhp || true - mv htmlhelp.chm ECLReference_PT_BR.chm - cp ECLReference_PT_BR.chm ../../ECLIDE/docs/ - - - name: "Load code signing" - shell: "pwsh" - run: | - mkdir -p ./sign - cd sign - $pfxPath = "hpcc_code_signing.pfx" - $encodedBytes = [System.Convert]::FromBase64String("${{ secrets.SIGNING_CERTIFICATE }}") - $currentDirectory = Get-Location - $certificatePath = Join-Path -Path $currentDirectory -ChildPath $pfxPath - [IO.File]::WriteAllBytes("$certificatePath", $encodedBytes) - CertUtil -p ${{ secrets.SIGNING_CERTIFICATE_PASSPHRASE }} hpcc_code_signing.pfx - - - name: "Build ECLIDE" - run: | - cd ECLIDE - mkdir -p ./build - cd ./build - cmake -A Win32 -S ../ -B . - cmake --build . --config RelWithDebInfo --target package --parallel - - - name: Sign ECLIDE Package - shell: "pwsh" - run: | - cd ./ECLIDE/build - C:\"Program Files (x86)"\"Microsoft SDKs"\ClickOnce\SignTool\signtool.exe sign /debug /f ../../sign/hpcc_code_signing.pfx /p ${{ secrets.SIGNING_CERTIFICATE_PASSPHRASE}} /t http://timestamp.digicert.com /fd SHA256 hpccsystems-eclide*.exe - - - name: Upload Assets - uses: ncipollo/release-action@v1.12.0 - with: - allowUpdates: true - generateReleaseNotes: false - prerelease: ${{ contains(github.ref, '-rc') }} - artifacts: "./ECLIDE/build/*.exe" - - - name: Upload error logs - if: ${{ failure() || cancelled() }} - uses: actions/upload-artifact@v3 - with: - name: windows-2022-logs - path: ./ECLIDE/build/**/*.log - run-package-manifest: - needs: [ preamble, build-docker, build-bare-metal, build-bare-metal-eclide ] + needs: [ preamble, build-docker ] uses: ./.github/workflows/package-manifests.yml with: tag: ${{ needs.preamble.outputs.community_tag }} diff --git a/.github/workflows/package-manifests.yml b/.github/workflows/package-manifests.yml index 2ccdd5902d4..ceaef1aa2c8 100644 --- a/.github/workflows/package-manifests.yml +++ b/.github/workflows/package-manifests.yml @@ -14,6 +14,12 @@ on: required: true LNB_TOKEN: required: true + workflow_dispatch: + inputs: + tag: + description: 'The tag to use' + required: true + type: string jobs: run-package-manifest: @@ -22,6 +28,13 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 + - name: Setup AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_REGION }} + - name: Login to Docker Hub uses: docker/login-action@v3 with: @@ -32,16 +45,24 @@ jobs: run: docker pull ebelfarsi/package-manifest:latest - name: Run Docker Container - run: docker run --name package-container -e REPO_OWNER=${{ github.repository_owner }} -e REPO_NAME=HPCC-Platform -e TAG=${{ inputs.tag }} -e GIT_TKN=${{ secrets.LNB_TOKEN }} ebelfarsi/package-manifest:latest + run: docker run --name package-container -e REPO_OWNER=${{ github.repository_owner }} -e REPO_NAME=HPCC-Platform -e TAG=${{ github.event.inputs.tag }} -e GIT_TKN=${{ secrets.LNB_TOKEN }} ebelfarsi/package-manifest:latest - name: Fetch Output from Container run: docker cp package-container:/app/output.json ${{ github.workspace }}/output.json + - name: Prepare Directory Structure + run: | + mkdir -p ${{ github.workspace }}/bin + mv ${{ github.workspace }}/output.json ${{ github.workspace }}/bin/output.json + + - name: Sync bin Directory to S3 Bucket + run: aws s3 sync ${{ github.workspace }}/bin s3://ebelfarsi-bucket/ + - name: Upload output.json to GitHub Release uses: ncipollo/release-action@v1.14.0 with: allowUpdates: true generateReleaseNotes: false prerelease: ${{ contains(github.ref, '-rc') }} - artifacts: ${{ github.workspace }}/output.json + artifacts: ${{ github.workspace }}/bin/output.json token: ${{ secrets.LNB_TOKEN }}