Skip to content

Merge pull request #635 from axone-protocol/docs/audit-section #1673

Merge pull request #635 from axone-protocol/docs/audit-section

Merge pull request #635 from axone-protocol/docs/audit-section #1673

Workflow file for this run

name: Lint
on:
workflow_call:
push:
branches: [ main ]
pull_request:
branches: [ main ]
concurrency:
group: lint-${{ github.ref }}
cancel-in-progress: true
jobs:
lint-commits:
runs-on: ubuntu-22.04
if: github.actor != 'dependabot[bot]'
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check commits
uses: wagoid/commitlint-github-action@v6
lint-markdown:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Lint markdown files
uses: avto-dev/markdown-lint@v1.5.0
with:
args: "**/*.md"
ignore: "CHANGELOG.md docs/**/*.md"
lint-yaml:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Lint yaml files
uses: ibiqlik/action-yamllint@v3.1.1
lint-cargo-toml:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Find changed rust Cargo files
id: changed-rust-cargo
uses: tj-actions/changed-files@v44.5.7
with:
files: |
**/Cargo.toml
Cargo.toml
- name: Setup rust
if: steps.changed-rust-cargo.outputs.any_changed == 'true'
uses: actions-rs/toolchain@v1
with:
toolchain: 1.75
default: true
override: true
- name: Install cargo make
if: steps.changed-rust-cargo.outputs.any_changed == 'true'
uses: davidB/rust-cargo-make@v1
- name: Lint all Cargo.toml file
if: steps.changed-rust-cargo.outputs.any_changed == 'true'
run: |
cargo make lint-cargo-toml
lint-cargo-makefile:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Find changed Cargo makefile
id: changed-cargo-makefile
uses: tj-actions/changed-files@v44.5.7
with:
files: |
Makefile.toml
- name: Install cargo make
if: steps.changed-cargo-makefile.outputs.any_changed == 'true'
uses: davidB/rust-cargo-make@v1
- name: Lint Cargo.toml file
if: steps.changed-cargo-makefile.outputs.any_changed == 'true'
run: |
FAILED=0
for task in $(cargo make --list-all-steps | awk '{print $1;}' | sort | grep -v -- '---' ); do
if echo "$task" | grep '_' > /dev/null; then
>&2 echo "❌ $task - use kebab-case style for task names (e.g. 'my-task' instead of 'my_task')"
FAILED=1
else
echo "✅ $task"
fi
done
if [ "${FAILED}" = "1" ]; then
exit 1
fi
lint-rust:
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Find changed rust files
id: changed-rust-files
uses: tj-actions/changed-files@v44.5.7
with:
files: |
**/*.rs
Cargo.lock
Cargo.toml
- name: Setup rust
if: steps.changed-rust-files.outputs.any_changed == 'true'
uses: actions-rs/toolchain@v1
with:
toolchain: 1.75
default: true
override: true
- name: Install cargo make
if: steps.changed-rust-files.outputs.any_changed == 'true'
uses: davidB/rust-cargo-make@v1
- name: Lint rust code
if: steps.changed-rust-files.outputs.any_changed == 'true'
run: |
cargo make lint-rust
lint-rust-format:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Setup rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.75
default: true
override: true
- name: Install cargo make
uses: davidB/rust-cargo-make@v1
- name: Check rust format
run: |
cargo make lint-rust-format
lint-toml:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.cargo/bin
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Setup rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.75
default: true
override: true
- name: Install cargo make
uses: davidB/rust-cargo-make@v1
- name: Lint toml
run: |
cargo make lint-toml
lint-toml-format:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Find changed toml files
id: changed-toml-files
uses: tj-actions/changed-files@v44.5.7
with:
files: |
**/*.toml
- name: Cache cargo registry
if: steps.changed-toml-files.outputs.any_changed == 'true'
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.cargo/bin
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Setup rust
if: steps.changed-toml-files.outputs.any_changed == 'true'
uses: actions-rs/toolchain@v1
with:
toolchain: 1.75
default: true
override: true
- name: Install cargo make
if: steps.changed-toml-files.outputs.any_changed == 'true'
uses: davidB/rust-cargo-make@v1
- name: Check toml files are formatted
if: steps.changed-toml-files.outputs.any_changed == 'true'
run: |
cargo make format-toml
if [[ $(git status -s | grep .toml) ]]; then
>&2 echo "❌ There is a diff between formatted files and source code"
>&2 git status
exit 1
fi
report-wasm-size:
runs-on: ubuntu-22.04
if: github.event_name == 'pull_request'
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.cargo/bin
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Setup rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.75
default: true
override: true
- name: Install cargo make
uses: davidB/rust-cargo-make@v1
- name: Prepare size limit
run: |
cp .github/package.json package.json
- name: Report wasm size limit
uses: andresz1/size-limit-action@v1
with:
github_token: ${{ secrets.OPS_TOKEN }}
check-contracts:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.cargo/bin
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Setup rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.75
default: true
override: true
- name: Install cargo make
uses: davidB/rust-cargo-make@v1
- name: Check contracts
shell: bash
run: cargo make check-contracts
check-docs-updated:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 16
- name: Setup jq
uses: dcarbone/install-jq-action@v2
with:
version: 1.7
force: true
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.cargo/bin
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Setup rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.75
default: true
override: true
- name: Install cargo make
uses: davidB/rust-cargo-make@v1
- name: Generate schema
run: cargo make schema
- name: Generate documentations
run: cargo make docs-generate
- name: Verify changed docs files
uses: tj-actions/verify-changed-files@v20
id: verify-changed-docs-files
with:
files: |
docs/*.md
- name: Run step only when files change.
if: steps.verify-changed-docs-files.outputs.files_changed == 'true'
run: |
echo "❌ Documentation files has been updated."
echo " Changed files : ${{ steps.verify-changed-docs-files.outputs.changed_files }}"
git diff --name-only | grep 'docs/' | while read file; do
echo "‣ Changes in $file:"
git diff HEAD $file
done
echo "Please generate docs using \`cargo make docs-generate\` then commit this new documentation."
exit 1
lint-branch-name:
runs-on: ubuntu-22.04
if: github.actor != 'dependabot[bot]' && github.event_name == 'pull_request' && (github.event.action == 'opened' || github.event.action == 'reopened')
steps:
- name: Check branch name conventions
uses: AlbertHernandez/branch-name-action@v1.0.2
with:
branch_pattern: "feat|fix|build|ci|docs|style|refactor|perf|test|chore"
comment_for_invalid_branch_name: |
🙋‍ Oops! This branch name does not follow the naming convention.
<hr>
Please, see the following branch naming convention:
Branch naming convention | Purpose
------------------------ | -------
`feat/**` | A new feature
`fix/**` | A bug fix
`build/**` | Changes that affect the build system (npm, mavem, poetry)
`ci/**` | Changes to the CI configuration
`docs/**` | Documentation only changes
`style/**` | Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
`refactor/**` | Code changes that neither fixe a bug nor adds a feature
`perf/**` | Code changes that improve performance
`test/**` | When adding tests or correcting existing tests
`chore/**` | Other changes that don't modify source
fail_if_invalid_branch_name: "true"
ignore_branch_pattern: "main"
- name: Close non-compliant branch
if: ${{ failure() }}
uses: codelytv/no-pull-requests@v1
with:
GITHUB_TOKEN: ${{ secrets.OPS_TOKEN }}
message: 🙅 Closing the PR because it does not respect naming conventions. Edit the branch name and submit a new PR.
env:
GITHUB_TOKEN: ${{ secrets.OPS_TOKEN }}