diff --git a/.github/actions/build_env/action.yaml b/.github/actions/build_env/action.yaml index 54c7fc8e2..80bff860a 100644 --- a/.github/actions/build_env/action.yaml +++ b/.github/actions/build_env/action.yaml @@ -24,7 +24,7 @@ runs: packages: build-essential ca-certificates clang curl git libpq-dev libssl-dev pkg-config lsof lld libgmp-dev version: 1.0 - - uses: actions-rs/toolchain@v1 + - uses: actions-rs/toolchain@v2 with: profile: minimal toolchain: 1.78.0 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index f6d110041..000000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,325 +0,0 @@ -name: rust ci - -on: - push: - tags: # only on releases, not RC, since we've tested already - - "[0-9]+.[0-9]+.[0-9]+" - branches: ["**"] # glob pattern to allow slash / - pull_request: - types: - - opened - - synchronize - branches: - - "release**" - - "main**" - schedule: - - cron: "30 00 * * *" - -env: - LIBRA_CI: 1 - MODE_0L: "TESTNET" - -jobs: - build-framework: - timeout-minutes: 60 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: ./.github/actions/get_cli - - - name: build framework - working-directory: ./framework - # uses the libra binary to compile faster, without needing to compile the Move compiler - run: ${{github.workspace}}/libra move framework release - - - uses: actions/upload-artifact@v4.3.1 - with: - name: framework-build - path: framework/* - - types: - timeout-minutes: 60 - needs: [build-framework] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: setup env - uses: ./.github/actions/build_env - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - # fail fast if types doesn't compile, everything else will fail. - - name: types - working-directory: ./types - run: cargo test --no-fail-fast - - wallet: - timeout-minutes: 60 - needs: [build-framework] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: setup env - uses: ./.github/actions/build_env - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - - name: wallet - if: always() - working-directory: ./tools/wallet - run: cargo test --no-fail-fast - - # NOTE: all jobs below need the fresh framework build - smoke: - timeout-minutes: 60 - needs: [build-framework] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: setup env - uses: ./.github/actions/build_env - - # make sure we have a fresh framework build - - uses: actions/download-artifact@v4.1.2 - with: - name: framework-build - path: framework/ - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - # Check test suite meta tests - - name: smoke-tests # NOTE: needs working DIEM_FORGE_NODE_BIN_PATH - if: always() - working-directory: ./smoke-tests - run: cargo test --no-fail-fast -- --test-threads=1 - - query: - timeout-minutes: 60 - needs: [build-framework] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: setup env - uses: ./.github/actions/build_env - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - - uses: actions/download-artifact@v4.1.2 - with: - name: framework-build - path: framework/ - - # Tools tests (some use smoke-tests) - - name: query - if: always() - working-directory: ./tools/query - run: cargo test --no-fail-fast - - genesis: - timeout-minutes: 60 - needs: [build-framework] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: setup env - uses: ./.github/actions/build_env - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - - uses: actions/download-artifact@v4.1.2 - with: - name: framework-build - path: framework/ - - - name: genesis - if: always() - working-directory: ./tools/genesis - run: cargo test --no-fail-fast - - txs: - timeout-minutes: 60 - needs: [build-framework] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: setup env - uses: ./.github/actions/build_env - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - - uses: actions/download-artifact@v4.1.2 - with: - name: framework-build - path: framework/ - - - name: txs - if: always() - working-directory: ./tools/txs - # NOTE: upgrade tests which compile Move code, and then submit in the same thread will cause a stack overflow with the default rust stack size. - run: RUST_MIN_STACK=104857600 cargo test --no-fail-fast - - upgrades: - timeout-minutes: 60 - needs: [build-framework] - runs-on: ubuntu-latest - steps: - - name: Check out code - uses: actions/checkout@v3 - - - name: Get branch name - id: get_branch - uses: actions/github-script@v6 - with: - script: | - const branch = process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME || context.ref.replace('refs/heads/', ''); - core.setOutput('branch', branch); - - - name: Print branch name - run: | - echo "Branch name: ${{ steps.get_branch.outputs.branch }}" - - - name: setup env - uses: ./.github/actions/build_env - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.7 - - - uses: actions/download-artifact@v4.1.2 - with: - name: framework-build - path: framework/ - - - name: Fetch main branch - run: git fetch origin main - - - name: Check if last commit on main has [breaking] in the message - id: check_breaking_commit - run: | - LAST_COMMIT_MESSAGE=$(git log -1 --pretty=%B origin/main) - if echo "$LAST_COMMIT_MESSAGE" | grep -q "\[breaking\]"; then - echo "hasBreakingCommit=true" >> $GITHUB_ENV - else - echo "hasBreakingCommit=false" >> $GITHUB_ENV - fi - - - name: Print main last commit message condition - run: | - echo "Main last commit has [breaking]: ${{ env.hasBreakingCommit }}" - - - name: delete fixtures and force rebuild - working-directory: ./framework/src/upgrade_fixtures/fixtures - run: | - rm -rf upgrade-* - RUST_MIN_STACK=104857600 cargo t -- make_the_upgrade_fixtures --include-ignored - - - name: upgrade - check workflow - if: always() - working-directory: ./upgrade-tests - # NOTE: upgrade tests which compile Move code, and then submit in the same thread will cause a stack overflow with the default rust stack size. - run: RUST_MIN_STACK=104857600 cargo test --no-fail-fast -- --skip compatible_ - - - name: upgrade - should be backwards compatible - # should always run unless we explicitly mark the branch or tag as "breaking" - if: ${{ env.hasBreakingCommit == 'false' && !contains(steps.get_branch.outputs.branch, 'breaking/') }} - working-directory: ./upgrade-tests - # NOTE: upgrade tests which compile Move code, and then submit in the same thread will cause a stack overflow with the default rust stack size. - run: RUST_MIN_STACK=104857600 cargo test compatible_ - - rescue: - timeout-minutes: 60 - needs: [build-framework] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: setup env - uses: ./.github/actions/build_env - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - - uses: actions/download-artifact@v4.1.2 - with: - name: framework-build - path: framework/ - - name: rescue - if: always() - working-directory: ./tools/rescue - run: RUST_MIN_STACK=104857600 cargo test --no-fail-fast -- --test-threads=1 - storage: - timeout-minutes: 60 - needs: [build-framework] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: setup env - uses: ./.github/actions/build_env - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - - name: storage - working-directory: ./tools/storage - run: cargo test --no-fail-fast - - twin-testsuite: - timeout-minutes: 60 - needs: [build-framework] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: setup env - uses: ./.github/actions/build_env - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - - name: twin - working-directory: ./testsuites/twin - run: cargo test --no-fail-fast diff --git a/.github/workflows/cleanliness.yaml b/.github/workflows/cleanliness.yaml deleted file mode 100644 index 7062dd639..000000000 --- a/.github/workflows/cleanliness.yaml +++ /dev/null @@ -1,48 +0,0 @@ -name: cleanliness -on: - push: - tags: # only on releases, not RC, since we've tested already - - "[0-9]+.[0-9]+.[0-9]+" - branches: ["**"] # glob pattern to allow slash / - pull_request: - types: - - opened - - synchronize - branches: - - "release**" - - "main**" -env: - DIEM_FORGE_NODE_BIN_PATH: ${{github.workspace}}/diem-node - LIBRA_CI: 1 - MODE_0L: "TESTNET" - -jobs: - clippy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: setup env - uses: ./.github/actions/build_env - - - uses: Swatinem/rust-cache@v2 - with: - shared-key: "libra-framework" - cache-all-crates: true - cache-on-failure: true - - - name: format - uses: actions-rs/cargo@v1 - with: - command: fmt - args: --all -- --check - - # TODO: clippy can share cache if build for tests is done prior - # - name: build for cache - # run: cargo build --tests --workspace - - - name: clippy - uses: actions-rs/cargo@v1 - with: - command: clippy - args: --workspace --tests -- -D warnings diff --git a/.github/workflows/debug.yaml b/.github/workflows/debug.yaml new file mode 100644 index 000000000..941241865 --- /dev/null +++ b/.github/workflows/debug.yaml @@ -0,0 +1,38 @@ +name: cleanliness +on: + push: + tags: # only on releases, not RC, since we've tested already + - "[0-9]+.[0-9]+.[0-9]+" + branches: ["**"] # glob pattern to allow slash / + pull_request: + types: + - opened + - synchronize + branches: + - "release**" + - "main**" +env: + DIEM_FORGE_NODE_BIN_PATH: ${{github.workspace}}/diem-node + LIBRA_CI: 1 + MODE_0L: "TESTNET" + +jobs: + clippy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: setup env + uses: ./.github/actions/build_env + + # - uses: Swatinem/rust-cache@v2 + # with: + # shared-key: "libra-framework" + # cache-all-crates: true + # cache-on-failure: true + + # - name: format + # uses: actions-rs/cargo@v1 + # with: + # command: fmt + # args: --all -- --check diff --git a/.github/workflows/formal.yaml b/.github/workflows/formal.yaml deleted file mode 100644 index 0afd47316..000000000 --- a/.github/workflows/formal.yaml +++ /dev/null @@ -1,44 +0,0 @@ -name: formal verification -on: - push: - tags: # only on releases, not RC, since we've tested already - - "[0-9]+.[0-9]+.[0-9]+" - branches: ["**"] # glob pattern to allow slash / - pull_request: - types: - - opened - - synchronize - branches: - - "release**" - - "main**" -env: - DOTNET_ROOT: "/home/runner/.dotnet" - Z3_EXE: "/home/runner/bin/z3" - CVC5_EXE: "/home/runner/bin/cvc5" - BOOGIE_EXE: "/home/runner/.dotnet/tools/boogie" - SOLC_EXE: "/home/runner/bin/solc" - -jobs: - formal: - runs-on: ubuntu-latest - steps: - # NOTE: for debugging CI this allow shell access to github runner. Will print out tmate.io terminal url - # - name: Setup tmate session - # uses: mxschmitt/action-tmate@v3 - # with: - # detached: true - # timeout-minutes: 3 - - - uses: actions/checkout@v3 - - - name: setup env - uses: ./.github/actions/build_env - - - name: install prover dependencies - run: | - bash util/dev_setup.sh -byp - - # Move prover tests - - name: prover tests - working-directory: ./framework - run: make -f prover.mk prove diff --git a/.github/workflows/move.yaml b/.github/workflows/move.yaml deleted file mode 100644 index 11420a0a9..000000000 --- a/.github/workflows/move.yaml +++ /dev/null @@ -1,35 +0,0 @@ -name: move framework tests - -on: - push: - tags: # only on releases, not RC, since we've tested already - - "[0-9]+.[0-9]+.[0-9]+" - branches: ["**"] # glob pattern to allow slash / - pull_request: - types: - - opened - - synchronize - branches: - - "release**" - - "main**" - -jobs: - functional-tests: - runs-on: ubuntu-latest - steps: - # NOTE: for debugging CI this allow shell access to github runner. Will print out tmate.io terminal url - # - name: Setup tmate session - # uses: mxschmitt/action-tmate@v3 - # with: - # detached: true - # timeout-minutes: 15 - - - uses: actions/checkout@v3 - - - name: fetch libra cli - uses: ./.github/actions/get_cli - - # Move framework tests - - name: move framework - working-directory: ./framework/libra-framework - run: $LIBRA_BIN move test diff --git a/.github/workflows/nuke-ci.yaml b/.github/workflows/nuke-ci.yaml deleted file mode 100644 index 55931286f..000000000 --- a/.github/workflows/nuke-ci.yaml +++ /dev/null @@ -1,28 +0,0 @@ -name: nuke the CI -on: - workflow_dispatch: - -jobs: - delete_all_runs: - name: delete all workflow runs - runs-on: ubuntu-latest - permissions: write-all - steps: - - name: Delete workflow runs - uses: Mattraks/delete-workflow-runs@v2 - with: - token: ${{ github.token }} - repository: ${{ github.repository }} - retain_days: 0 #${{ github.event.inputs.days }} - keep_minimum_runs: 0 # ${{ github.event.inputs.minimum_runs }} - # delete_workflow_pattern: ${{ github.event.inputs.delete_workflow_pattern }} - # delete_workflow_by_state_pattern: disabled_manually - # delete_run_by_conclusion_pattern: ${{ github.event.inputs.delete_run_by_conclusion_pattern }} - # dry_run: true - wipe_caches: - name: delete all caches - runs-on: ubuntu-latest - permissions: write-all - steps: - - name: clear caches - uses: easimon/wipe-cache@main diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml deleted file mode 100644 index a49e8cf86..000000000 --- a/.github/workflows/publish.yaml +++ /dev/null @@ -1,42 +0,0 @@ -name: publish cli -on: - push: - branches: - # make binaries which may be ahead of releases to use in CI jobs - - "ci-bins*" - tags: # run this also on release candidates - - "[0-9]+.[0-9]+.[0-9]*" - -jobs: - publish: - permissions: write-all - name: publish - runs-on: ubuntu-latest - steps: - # NOTE: for debugging CI this allow shell access to github runner. Will print out tmate.io terminal url - # - name: Setup tmate session - # uses: mxschmitt/action-tmate@v3 - # with: - # detached: true - # timeout-minutes: 15 - - - name: checkout - uses: actions/checkout@v3 - - - name: setup env - uses: ./.github/actions/build_env - - - name: build libra cli release - # size and performance optimized binary with profile.cli - run: cargo b --release -p libra - - # CI bin - - name: libra publish - if: ${{ contains(github.ref, 'ci-bins') }} - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: target/release/libra - tag: ci-bins - overwrite: true - file_glob: true