Skip to content
This repository has been archived by the owner on May 4, 2024. It is now read-only.

[tutorial] Advise using --locked in cargo install #2104

[tutorial] Advise using --locked in cargo install

[tutorial] Advise using --locked in cargo install #2104

Workflow file for this run

# CI jobs to be run upon the code lands to the main branch or GitHub Action test branches.
name: ci-pre-land
on:
pull_request:
branches: [main, gha-test-*]
jobs:
prepare:
runs-on: ubuntu-latest
outputs:
changes-target-branch: ${{ steps.changes.outputs.changes-target-branch }}
any-changes-founds: ${{ steps.any-changes-found.outputs.changes-found }}
test-rust: ${{ steps.rust-changes.outputs.changes-found }}
steps:
- uses: actions/[email protected]
- name: Git Hooks and Checks
run: ./scripts/git-checks.sh
- id: changes
name: determine changes
uses: diem/actions/changes@faadd16607b77dfa2231a8f366883e01717b3225
with:
workflow-file: ci.yml
github-token: ${{secrets.GITHUB_TOKEN}}
- id: any-changes-found
name: determine if there are any files listed in the CHANGES_CHANGED_FILE_OUTPUTFILE.
run: |
res=true
if [[ ! -f "$CHANGES_CHANGED_FILE_OUTPUTFILE" ]] || [[ "$(cat "$CHANGES_CHANGED_FILE_OUTPUTFILE" | wc -l)" == 0 ]]; then
res=false;
fi
echo "::set-output name=changes-found::$(echo $res)";
- id: rust-changes
name: find rust/cargo changes.
uses: diem/actions/matches@faadd16607b77dfa2231a8f366883e01717b3225
with:
pattern: '^documentation\|^docker\|^scripts'
invert: "true"
lint:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: prepare
# if: ${{ needs.prepare.outputs.any-changes-founds == 'true' }}
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/build-setup
- uses: Swatinem/rust-cache@c5ed9ba6b7e1bb8aff90d43acd2f0af4990fa57c
- name: cargo lint
run: cargo x lint
- name: cargo clippy
run: cargo xclippy --workspace --all-targets
- name: cargo fmt
run: cargo xfmt --check
- uses: ./.github/actions/build-teardown
unit-test:
runs-on: ubuntu-latest
timeout-minutes: 60
needs: prepare
# if: ${{ needs.prepare.outputs.test-rust == 'true' }}
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/build-setup
- uses: Swatinem/rust-cache@c5ed9ba6b7e1bb8aff90d43acd2f0af4990fa57c
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 10
- name: run unit tests
run: cargo test --workspace --profile ci
- uses: ./.github/actions/build-teardown
hardhat-tests:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: prepare
# if: ${{ needs.prepare.outputs.test-rust == 'true' }}
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/build-setup
- uses: Swatinem/rust-cache@c5ed9ba6b7e1bb8aff90d43acd2f0af4990fa57c
- name: compile and install move-cli
run: "cargo install --features evm-backend --path language/tools/move-cli"
- name: set up hardhat-move
working-directory: language/evm/hardhat-move
run: "npm install"
- name: compile hardhat-move
working-directory: language/evm/hardhat-move
run: "npm run build"
- name: set up hardhat
working-directory: language/evm/hardhat-examples
run: "./setup.sh"
- name: run hardhat tests
working-directory: language/evm/hardhat-examples
run: "npx hardhat test"
# TODO: reenable this once we figure a way to keep package-lock.json stable.
# - uses: ./.github/actions/build-teardown
move-cli-tests-evm:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: prepare
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/build-setup
- uses: Swatinem/rust-cache@c5ed9ba6b7e1bb8aff90d43acd2f0af4990fa57c
- name: run EVM-based move cli tests
run: "cargo test --features evm-backend -p move-cli --test build_testsuite_evm --test move_unit_tests_evm"
move-unit-test-framework-tests-evm:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: prepare
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/build-setup
- uses: Swatinem/rust-cache@c5ed9ba6b7e1bb8aff90d43acd2f0af4990fa57c
- name: run EVM-based move unit test framework tests
run: "cargo test --features evm-backend -p move-unit-test --test move_unit_test_testsuite"
diem-framework-build-all-packages:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: prepare
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/build-setup
- uses: Swatinem/rust-cache@c5ed9ba6b7e1bb8aff90d43acd2f0af4990fa57c
- name: build Diem Framework Packages
run: "language/documentation/examples/diem-framework/build_all.sh"
diem-framework-test-all-packages:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: prepare
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/build-setup
- uses: Swatinem/rust-cache@c5ed9ba6b7e1bb8aff90d43acd2f0af4990fa57c
- name: test Diem Framework Packages
run: "language/documentation/examples/diem-framework/test_all.sh"
diem-framework-prove-all-packages:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: prepare
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/build-setup
- uses: Swatinem/rust-cache@c5ed9ba6b7e1bb8aff90d43acd2f0af4990fa57c
- name: prove Diem Framework Packages
run: "language/documentation/examples/diem-framework/prove_all.sh"
# Disable benchmarks for now
# Compile (but don't run) the benchmarks, to insulate against bit rot
# build-benchmarks:
# runs-on: ubuntu-latest
# timeout-minutes: 30
# needs: prepare
# if: ${{ needs.prepare.outputs.test-rust == 'true' }}
# steps:
# - uses: actions/[email protected]
# - uses: ./.github/actions/build-setup
# - uses: actions/[email protected]
# with:
# path: "/opt/cargo/git\n/opt/cargo/registry\n/opt/cargo/.package-cache"
# key: crates-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}
# restore-keys: "crates-${{ runner.os }}"
# - name: build benchmarks
# run: cargo x bench --no-run
# - uses: ./.github/actions/build-teardown
#
# perf-benchmarks:
# name: run-perf-benchmarks
# runs-on: ubuntu-latest
# timeout-minutes: 30
# needs:
# - prepare
# - build-benchmarks
# env:
# CRITERION_HOME: /tmp/benches
# steps:
# - uses: actions/[email protected]
# - uses: actions/[email protected]
# with:
# path: "/opt/cargo/git\n/opt/cargo/registry\n/opt/cargo/.package-cache"
# key: crates-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}
# restore-keys: "crates-${{ runner.os }}"
# - name: Download the previous baseline
# continue-on-error: true
# uses: actions/download-artifact@v2
# with:
# name: bench-baseline
# - name: Run performance benchamrks
# run: |
# # Replace this with a cargo x bench
# cargo bench --package language-benchmarks
# - name: Archive criterion results
# uses: actions/upload-artifact@v2
# with:
# name: bench-baseline
# retention-days: 5
# path: |
# /tmp/benches
test-move-analyzer-vscode-extension:
name: Test VS Code extension for move-analyzer
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, macos-11, windows-2022]
runs-on: ${{ matrix.os }}
needs:
- prepare
steps:
- uses: actions/[email protected]
- name: Install rust toolchain
uses: actions-rs/toolchain@v1
- name: Install lld
uses: knicknic/[email protected]
with:
linux: sudo apt-get -y install lld
- name: Use Node.js 14
uses: actions/[email protected]
with:
node-version: "14"
- name: Install NPM dependencies
working-directory: language/move-analyzer/editors/code
run: npm install
- name: Build the extension
working-directory: language/move-analyzer/editors/code
run: npm run pretest
- name: Test the extension
# VS Code tests require display output. This action simulates such a
# display, using Xvfb. (It's roughly equivalent to prefixing the 'run'
# commands below with `xvfb-run <command>`.) Without a simulated display
# such as this one, the tests would fail with the error message:
# "Unable to open X display."
uses: GabrielBB/[email protected]
with:
working-directory: language/move-analyzer/editors/code
run: npm run test
release-move-analyzer-vscode-extension:
name: Release VS Code extension for move-analyzer
runs-on: ubuntu-20.04
needs:
- prepare
steps:
- uses: actions/[email protected]
- name: Install rust toolchain
uses: actions-rs/toolchain@v1
- name: Install lld
run: sudo apt-get -y install lld
- name: Use Node.js 14
uses: actions/[email protected]
with:
node-version: "14"
- name: Install NPM dependencies
working-directory: language/move-analyzer/editors/code
run: npm install
- name: Build the extension
working-directory: language/move-analyzer/editors/code
run: npm run pretest
- name: Package the extension
working-directory: language/move-analyzer/editors/code
run: npm run package
- name: Upload VS Code extension
uses: actions/upload-artifact@v2
with:
name: move-analyzer-vscode-extension
path: language/move-analyzer/editors/code/move-analyzer.vsix
check-for-broken-links:
name: Check for broken links in files
runs-on: ubuntu-latest
needs:
- prepare
steps:
- uses: actions/checkout@v2
- name: Set up Ruby 2.6
uses: ruby/setup-ruby@v1
with:
ruby-version: "2.6"
- name: Run Checks
run: |
gem install awesome_bot
# Don't look in git or target dirs. Don't check png, bib, tex, js, or shell files
# We allow links to be redirects, allow duplicates, and we also allow Too Many Requests (429) errors
find . -not \( -path "./.git*" -prune \) -not \( -path "./target" -prune \) -type f -not -name "*.png" -not -name "*.ai" -not -name "*.jpg" -not -name "*.svg" -not -name "*.sh" -not -name "*.bib" -not -name "*.tex" -not -name "*.js" -not -name "package-lock.json" | while read arg; do awesome_bot --allow-redirect --allow-dupe --allow 429 --skip-save-results $arg; done
build-move-cli-docker-image:
name: Build Docker image for the Move CLI
runs-on: ubuntu-latest
needs:
- prepare
steps:
- uses: actions/[email protected]
- name: Build Dockerfile
run: "docker build -t move/cli -f docker/move-cli/Dockerfile ."
- name: Build BasicCoin Move module
run: |
cd ./language/documentation/tutorial/step_1/BasicCoin
docker run -v `pwd`:/project move/cli build