diff --git a/.github/actions/restore-git-mtimes/action.yml b/.github/actions/restore-git-mtimes/action.yml index 714c7202..e16c8aa5 100644 --- a/.github/actions/restore-git-mtimes/action.yml +++ b/.github/actions/restore-git-mtimes/action.yml @@ -3,7 +3,7 @@ description: "Restore file modification timestamps from git commit timestamps" runs: using: "composite" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: repository: "MestreLion/git-tools" ref: a42a069bc755f0fa81316965335cb33dbf22a968 # pin latest commit diff --git a/.github/workflows/analyzers.yml b/.github/workflows/analyzers.yml index 52d9bb38..c258f129 100644 --- a/.github/workflows/analyzers.yml +++ b/.github/workflows/analyzers.yml @@ -8,7 +8,7 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository steps: - name: Checkout - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + uses: actions/checkout@v4 - name: Installing clang-format env: @@ -28,7 +28,7 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository steps: - name: Checkout - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 #v4.3.0 @@ -50,6 +50,6 @@ jobs: runs-on: ubuntu-20.04 if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + - uses: actions/checkout@v4 - name: Run code-inspector run: ci/code-inspector-check.sh diff --git a/.github/workflows/build_deploy.yml b/.github/workflows/build_deploy.yml index 2670a6fd..24da36bc 100644 --- a/.github/workflows/build_deploy.yml +++ b/.github/workflows/build_deploy.yml @@ -1,7 +1,7 @@ name: Build & Deploy on: schedule: - - cron: "0 0 * * 3,6" + - cron: "0 0 * * 3,6" # Every Wednesday and Saturday at 00:00 workflow_dispatch: inputs: is_release_build: @@ -14,12 +14,15 @@ env: jobs: prepare_build: + name: Prepare Build runs-on: ubuntu-22.04 outputs: ci_tag: ${{ steps.set_vars.outputs.ci_tag }} tag_created: ${{ steps.set_vars.outputs.tag_created }} steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + - name: Checkout + uses: actions/checkout@v4 + - name: Set the tag and version id: tag_set run: | @@ -27,14 +30,15 @@ jobs: env: GITHUB_ACTOR: ${{ github.actor }} IS_RELEASE_BUILD: ${{ github.event.inputs.is_release_build || 'false' }} + - name: Set output id: set_vars run: | echo "ci_tag=$CI_TAG" >> $GITHUB_OUTPUT echo "tag_created=$TAG_CREATED" >> $GITHUB_OUTPUT - osx_job: + name: macOS [${{ matrix.network }}] needs: prepare_build if: ${{ needs.prepare_build.outputs.tag_created == 'true' }} runs-on: macOS-14 @@ -43,19 +47,22 @@ jobs: matrix: network: ["TEST", "BETA", "LIVE"] steps: - - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + - name: Checkout + uses: actions/checkout@v4 with: submodules: "recursive" ref: ${{ needs.prepare_build.outputs.ci_tag }} repository: ${{ github.repository }} + - name: Prepare run: ci/prepare/macos/prepare.sh + - name: Build Artifact run: ci/build-deploy.sh "/tmp/qt/lib/cmake/Qt5"; env: NETWORK: ${{ matrix.network }} CI_TAG: ${{ needs.prepare_build.outputs.ci_tag }} + - name: Deploy Artifact run: ci/actions/deploy.sh env: @@ -66,9 +73,9 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: us-east-2 - linux_job: + name: Linux [${{ matrix.network }}] needs: prepare_build if: ${{ needs.prepare_build.outputs.tag_created == 'true' }} runs-on: ubuntu-22.04 @@ -77,13 +84,16 @@ jobs: matrix: network: ["TEST", "BETA", "LIVE"] steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + - name: Checkout + uses: actions/checkout@v4 with: submodules: "recursive" ref: ${{ needs.prepare_build.outputs.ci_tag }} repository: ${{ github.repository }} + - name: Prepare run: sudo -E ci/prepare/linux/prepare.sh + - name: Build Artifact run: ci/build-deploy.sh "/usr/lib/x86_64-linux-gnu/cmake/Qt5" env: @@ -101,8 +111,8 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: us-east-2 - linux_docker_job: + name: Docker [${{ matrix.network }}] needs: prepare_build if: ${{ needs.prepare_build.outputs.tag_created == 'true' }} runs-on: ubuntu-22.04 @@ -117,21 +127,25 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} IS_RELEASE_BUILD: ${{ github.event.inputs.is_release_build || 'false' }} steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + - name: Checkout + uses: actions/checkout@v4 with: submodules: "recursive" ref: ${{ needs.prepare_build.outputs.ci_tag }} repository: ${{ github.repository }} + - name: Build Docker run: ci/actions/linux/docker-build.sh env: NETWORK: ${{ matrix.network }} - - name: Deploy Docker Hub + + - name: Deploy Docker (Docker Hub) if: env.DOCKER_PASSWORD != '' run: ci/actions/linux/docker-deploy.sh env: NETWORK: ${{ matrix.network }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + - name: Deploy Docker (ghcr.io) run: ci/actions/linux/ghcr-deploy.sh env: @@ -140,8 +154,8 @@ jobs: DOCKER_USER: ${{ github.repository_owner }} DOCKER_PASSWORD: ${{ secrets.GITHUB_TOKEN }} - windows_job: + name: Windows [${{ matrix.network }}] needs: prepare_build if: ${{ needs.prepare_build.outputs.tag_created == 'true' }} runs-on: windows-latest @@ -150,18 +164,22 @@ jobs: matrix: network: ["TEST", "BETA", "LIVE"] steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + - name: Checkout + uses: actions/checkout@v4 with: submodules: "recursive" ref: ${{ needs.prepare_build.outputs.ci_tag }} repository: ${{ github.repository }} + - name: Prepare run: ci/prepare/windows/prepare.ps1 + - name: Build Artifact run: ci/actions/windows/build.ps1 env: CSC_LINK: ${{ secrets.CSC_LINK }} CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} + - name: Deploy Artifact run: ci/actions/windows/deploy.ps1 env: diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index ac236ddb..91a2da73 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -37,7 +37,7 @@ jobs: echo "REPO_TO_RUN=${{ github.event.inputs.repo }}" >> $GITHUB_ENV echo "MODE=${{ github.event.inputs.mode }}" >> $GITHUB_ENV - name: Checks out the required workflow files (workflow repo) - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + uses: actions/checkout@v4 with: ref: ${{ github.ref }} repository: ${{ github.repository }} diff --git a/.github/workflows/code_sanitizers.yml b/.github/workflows/code_sanitizers.yml index 4c8d632f..1a6ae97b 100644 --- a/.github/workflows/code_sanitizers.yml +++ b/.github/workflows/code_sanitizers.yml @@ -35,7 +35,7 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: "recursive" @@ -91,7 +91,7 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: "recursive" diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 1079804f..cbdeffee 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -24,7 +24,7 @@ jobs: continue-on-error: true timeout-minutes: 60 steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + - uses: actions/checkout@v4 with: submodules: "recursive" - name: Fetch Deps diff --git a/.github/workflows/develop_branch_dockers_deploy.yml b/.github/workflows/develop_branch_dockers_deploy.yml index f69ee795..18ce83de 100644 --- a/.github/workflows/develop_branch_dockers_deploy.yml +++ b/.github/workflows/develop_branch_dockers_deploy.yml @@ -9,7 +9,7 @@ jobs: linux_job: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 + - uses: actions/checkout@v4 with: submodules: "recursive" - name: Fetch Deps diff --git a/.github/workflows/flamegraphs.yml b/.github/workflows/flamegraphs.yml index 877b0812..a0166fb8 100644 --- a/.github/workflows/flamegraphs.yml +++ b/.github/workflows/flamegraphs.yml @@ -22,7 +22,7 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: "recursive" diff --git a/.github/workflows/prepare_release.yml b/.github/workflows/prepare_release.yml index d7050419..6b0903c6 100644 --- a/.github/workflows/prepare_release.yml +++ b/.github/workflows/prepare_release.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout repository - uses: actions/checkout@v3.1.0 + uses: actions/checkout@v4 with: ref: ${{ github.ref }} fetch-depth: 0 diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 5fafc9b9..7e42a115 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -20,7 +20,7 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: "recursive" @@ -66,7 +66,7 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: "recursive" @@ -115,7 +115,7 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: "recursive" diff --git a/ci/actions/deploy.sh b/ci/actions/deploy.sh index cc6f754f..2a199739 100755 --- a/ci/actions/deploy.sh +++ b/ci/actions/deploy.sh @@ -20,8 +20,6 @@ case "${NETWORK}" in esac if [[ -n "${S3_BUILD_DIRECTORY}" ]]; then - - DIRECTORY="${S3_BUILD_DIRECTORY}/${BUILD}" else DIRECTORY=$BUILD @@ -33,7 +31,7 @@ if [[ "$OS" == 'Linux' && "$IS_RPM_DEPLOY" -eq "1" ]]; then for rpm in $RPMS; do SHA=$(sha256sum ${rpm}) - echo "Hash: $SHA" + echo "::notice::Hash: $SHA" echo $SHA > ${GITHUB_WORKSPACE}/$(basename "${rpm}.sha256") aws s3 cp ${rpm} s3://${S3_BUCKET_NAME}/$DIRECTORY/binaries/$(basename "${rpm}") --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers @@ -42,7 +40,7 @@ if [[ "$OS" == 'Linux' && "$IS_RPM_DEPLOY" -eq "1" ]]; then for srpm in $SRPMS; do SHA=$(sha256sum ${srpm}) - echo "Hash: $SHA" + echo "::notice::Hash: $SHA" echo $SHA > ${GITHUB_WORKSPACE}/$(basename "${srpm}).sha256") aws s3 cp ${srpm} s3://${S3_BUCKET_NAME}/$DIRECTORY/source/$(basename "${srpm}") --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers @@ -50,11 +48,11 @@ if [[ "$OS" == 'Linux' && "$IS_RPM_DEPLOY" -eq "1" ]]; then done elif [[ "$OS" == 'Linux' ]]; then SHA=$(sha256sum $GITHUB_WORKSPACE/build/nano-node-*-Linux.tar.bz2) - echo "Hash: $SHA" + echo "::notice::Hash: $SHA" echo $SHA >$GITHUB_WORKSPACE/nano-node-$TAG-Linux.tar.bz2.sha256 SHA=$(sha256sum $GITHUB_WORKSPACE/build/nano-node-*-Linux.deb) - echo "Hash: $SHA" + echo "::notice::Hash: $SHA" echo $SHA >$GITHUB_WORKSPACE/nano-node-$TAG-Linux.deb.sha256 aws s3 cp $GITHUB_WORKSPACE/build/nano-node-*-Linux.tar.bz2 s3://${S3_BUCKET_NAME}/$DIRECTORY/binaries/nano-node-$TAG-Linux.tar.bz2 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers @@ -63,7 +61,7 @@ elif [[ "$OS" == 'Linux' ]]; then aws s3 cp $GITHUB_WORKSPACE/nano-node-$TAG-Linux.deb.sha256 s3://${S3_BUCKET_NAME}/$DIRECTORY/binaries/nano-node-$TAG-Linux.deb.sha256 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers else SHA=$(sha256sum $GITHUB_WORKSPACE/build/nano-node-*-Darwin.dmg) - echo "Hash: $SHA" + echo "::notice::Hash: $SHA" echo $SHA >$GITHUB_WORKSPACE/build/nano-node-$TAG-Darwin.dmg.sha256 aws s3 cp $GITHUB_WORKSPACE/build/nano-node-*-Darwin.dmg s3://${S3_BUCKET_NAME}/$DIRECTORY/binaries/nano-node-$TAG-Darwin.dmg --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers diff --git a/ci/actions/linux/docker-impl/docker-common.sh b/ci/actions/linux/docker-impl/docker-common.sh index 912558b1..c3e6b1c2 100755 --- a/ci/actions/linux/docker-impl/docker-common.sh +++ b/ci/actions/linux/docker-impl/docker-common.sh @@ -134,7 +134,22 @@ docker_login() push_docker_image() { local image_name=$1 + + # Log the image name before pushing + echo "Pushing image: $image_name" + + # Push the image "$scripts"/custom-timeout.sh 30 docker push "$image_name" + + # After pushing, get the digest from the local image manifest + local digest + digest=$(docker image inspect --format='{{index .RepoDigests 0}}' "$image_name") + + if [ -n "$digest" ]; then + echo "::notice::Hash: $digest $image_name" + else + echo "::error::Could not retrieve digest for image $image_name" + fi } deploy_env_images() @@ -154,7 +169,7 @@ deploy_tags() local exclude_pattern=$2 local tags=$(docker images --format '{{.Repository}}:{{.Tag }}' | grep "$repo" | grep -vE "$exclude_pattern") - #Debug list all tags + # Debug list all tags docker images --format '{{.Repository}}:{{.Tag }}' for tag in $tags; do diff --git a/ci/actions/windows/deploy.ps1 b/ci/actions/windows/deploy.ps1 index 4a859ece..6b53357b 100644 --- a/ci/actions/windows/deploy.ps1 +++ b/ci/actions/windows/deploy.ps1 @@ -27,8 +27,8 @@ $zip_hash = ((Get-FileHash $zip).hash)+" "+(split-path -Path $zip -Resolve -leaf $exe_hash | Out-file -FilePath "$exe.sha256" $zip_hash | Out-file -FilePath "$zip.sha256" -Write-Output "Hash: $exe_hash" -Write-Output "Hash: $zip_hash" +Write-Output "::notice::Hash: $exe_hash" +Write-Output "::notice::Hash: $zip_hash" aws s3 cp "$exe" s3://$env:S3_BUCKET_NAME/$directory/binaries/nano-node-$env:TAG-win64.exe --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers aws s3 cp "$exe.sha256" s3://$env:S3_BUCKET_NAME/$directory/binaries/nano-node-$env:TAG-win64.exe.sha256 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers diff --git a/ci/prepare/macos/prepare.sh b/ci/prepare/macos/prepare.sh index b66fedaa..da5ad9cb 100755 --- a/ci/prepare/macos/prepare.sh +++ b/ci/prepare/macos/prepare.sh @@ -1,7 +1,7 @@ #!/bin/bash set -euox pipefail -#Homebrew randomly fails to update. Retry 5 times with 15s interval +# Homebrew randomly fails to update. Retry 5 times with 15s interval for i in {1..5}; do brew update && break || { echo "Update failed, retrying..."; sleep 15; }; done brew install coreutils @@ -10,4 +10,4 @@ brew install qt@5 brew link qt@5 # Workaround: https://github.com/Homebrew/homebrew-core/issues/8392 -echo "$(brew --prefix qt5)/bin" >> $GITHUB_PATH \ No newline at end of file +echo "$(brew --prefix qt@5)/bin" >> $GITHUB_PATH \ No newline at end of file diff --git a/ci/tests/run-system-tests.sh b/ci/tests/run-system-tests.sh index 496fad7f..4027e15a 100755 --- a/ci/tests/run-system-tests.sh +++ b/ci/tests/run-system-tests.sh @@ -44,7 +44,7 @@ for script in ${NANO_SYSTEST_DIR}/*.sh; do done if [ $overall_status -eq 0 ]; then - echo "::notice::All systests passed" + echo "All systests passed" else echo "::error::Some systests failed" exit 1 diff --git a/ci/tests/show-sanitizer-reports.sh b/ci/tests/show-sanitizer-reports.sh index ba4f92d6..f29e6db7 100755 --- a/ci/tests/show-sanitizer-reports.sh +++ b/ci/tests/show-sanitizer-reports.sh @@ -19,7 +19,7 @@ if [[ ${#reports[@]} -gt 0 ]]; then issue_reported=true done else - echo "::notice::No report has been generated." + echo "No report has been generated." fi echo "issue_reported=${issue_reported}" >> $GITHUB_OUTPUT @@ -28,6 +28,6 @@ if $issue_reported; then echo "::error::Issues were reported in the sanitizer report." exit 1 else - echo "::notice::No issues found in the sanitizer reports." + echo "No issues found in the sanitizer reports." exit 0 fi \ No newline at end of file diff --git a/docker/node/Dockerfile b/docker/node/Dockerfile index 8f11e144..5cee44c9 100644 --- a/docker/node/Dockerfile +++ b/docker/node/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:22.04 as builder +FROM ubuntu:22.04 AS builder ARG COMPILER=gcc ARG NANO_NETWORK=live @@ -10,7 +10,7 @@ RUN /tmp/prepare/prepare.sh COPY ./ /tmp/src WORKDIR /tmp/src -#Define ARGs for ci/build-node.sh +# Define ARGs for ci/build-node.sh ARG BUILD_TYPE=RelWithDebInfo ARG NANO_TEST=OFF ARG NANO_TRACING=OFF