b3d2a1837c
Bumps the ci_dependencies group with 14 updates in the / directory: | Package | From | To | | --- | --- | --- | | [actions/checkout](https://github.com/actions/checkout) | `5.0.0` | `6.0.2` | | [actions/upload-artifact](https://github.com/actions/upload-artifact) | `4.3.1` | `6.0.0` | | [actions/download-artifact](https://github.com/actions/download-artifact) | `6.0.0` | `7.0.0` | | [actions/create-github-app-token](https://github.com/actions/create-github-app-token) | `2.1.4` | `2.2.1` | | [docker/build-push-action](https://github.com/docker/build-push-action) | `6.18.0` | `6.19.2` | | [docker/login-action](https://github.com/docker/login-action) | `3.6.0` | `3.7.0` | | [actions/setup-node](https://github.com/actions/setup-node) | `5.0.0` | `6.2.0` | | [actions/cache](https://github.com/actions/cache) | `4.3.0` | `5.0.3` | | [lycheeverse/lychee-action](https://github.com/lycheeverse/lychee-action) | `2.7.0` | `2.8.0` | | [actions-rust-lang/setup-rust-toolchain](https://github.com/actions-rust-lang/setup-rust-toolchain) | `1.13.0` | `1.15.2` | | [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) | `2.7.8` | `2.8.2` | | [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) | `2.4.0` | `3.2.0` | | [tj-actions/changed-files](https://github.com/tj-actions/changed-files) | `47.0.0` | `47.0.4` | | [codecov/codecov-action](https://github.com/codecov/codecov-action) | `5.5.1` | `5.5.2` | Updates `actions/checkout` from 5.0.0 to 6.0.2 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/08c6903cd8c0fde910a37f88322edcfb5dd907a8...de0fac2e4500dabe0009e67214ff5f5447ce83dd) Updates `actions/upload-artifact` from 4.3.1 to 6.0.0 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4.3.1...b7c566a772e6b6bfb58ed0dc250532a479d7789f) Updates `actions/download-artifact` from 6.0.0 to 7.0.0 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/018cc2cf5baa6db3ef3c5f8a56943fffe632ef53...37930b1c2abaa49bbe596cd826c3c89aef350131) Updates `actions/create-github-app-token` from 2.1.4 to 2.2.1 - [Release notes](https://github.com/actions/create-github-app-token/releases) - [Commits](https://github.com/actions/create-github-app-token/compare/67018539274d69449ef7c02e8e71183d1719ab42...29824e69f54612133e76f7eaac726eef6c875baf) Updates `docker/build-push-action` from 6.18.0 to 6.19.2 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/263435318d21b8e681c14492fe198d362a7d2c83...10e90e3645eae34f1e60eeb005ba3a3d33f178e8) Updates `docker/login-action` from 3.6.0 to 3.7.0 - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/5e57cd118135c172c3672efd75eb46360885c0ef...c94ce9fb468520275223c153574b00df6fe4bcc9) Updates `actions/setup-node` from 5.0.0 to 6.2.0 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v5...6044e13b5dc448c55e2357c09f80417699197238) Updates `actions/cache` from 4.3.0 to 5.0.3 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/0057852bfaa89a56745cba8c7296529d2fc39830...cdf6c1fa76f9f475f3d7449005a359c84ca0f306) Updates `lycheeverse/lychee-action` from 2.7.0 to 2.8.0 - [Release notes](https://github.com/lycheeverse/lychee-action/releases) - [Commits](https://github.com/lycheeverse/lychee-action/compare/a8c4c7cb88f0c7386610c35eb25108e448569cb0...8646ba30535128ac92d33dfc9133794bfdd9b411) Updates `actions-rust-lang/setup-rust-toolchain` from 1.13.0 to 1.15.2 - [Release notes](https://github.com/actions-rust-lang/setup-rust-toolchain/releases) - [Changelog](https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions-rust-lang/setup-rust-toolchain/compare/v1.13...1780873c7b576612439a134613cc4cc74ce5538c) Updates `Swatinem/rust-cache` from 2.7.8 to 2.8.2 - [Release notes](https://github.com/swatinem/rust-cache/releases) - [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md) - [Commits](https://github.com/swatinem/rust-cache/compare/v2.7.8...779680da715d629ac1d338a641029a2f4372abb5) Updates `actions/attest-build-provenance` from 2.4.0 to 3.2.0 - [Release notes](https://github.com/actions/attest-build-provenance/releases) - [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md) - [Commits](https://github.com/actions/attest-build-provenance/compare/v2.4.0...96278af6caaf10aea03fd8d33a09a777ca52d62f) Updates `tj-actions/changed-files` from 47.0.0 to 47.0.4 - [Release notes](https://github.com/tj-actions/changed-files/releases) - [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md) - [Commits](https://github.com/tj-actions/changed-files/compare/24d32ffd492484c1d75e0c0b894501ddb9d30d62...7dee1b0c1557f278e5c7dc244927139d78c0e22a) Updates `codecov/codecov-action` from 5.5.1 to 5.5.2 - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/5a1091511ad55cbe89839c7260b706298ca349f7...671740ac38dd9b0130fbe1cec585b89eea48d3de) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci_dependencies - dependency-name: actions/upload-artifact dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci_dependencies - dependency-name: actions/download-artifact dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci_dependencies - dependency-name: actions/create-github-app-token dependency-version: 2.2.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: ci_dependencies - dependency-name: docker/build-push-action dependency-version: 6.19.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: ci_dependencies - dependency-name: docker/login-action dependency-version: 3.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: ci_dependencies - dependency-name: actions/setup-node dependency-version: 6.2.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci_dependencies - dependency-name: actions/cache dependency-version: 5.0.3 dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci_dependencies - dependency-name: lycheeverse/lychee-action dependency-version: 2.8.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: ci_dependencies - dependency-name: actions-rust-lang/setup-rust-toolchain dependency-version: 1.15.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: ci_dependencies - dependency-name: Swatinem/rust-cache dependency-version: 2.8.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: ci_dependencies - dependency-name: actions/attest-build-provenance dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci_dependencies - dependency-name: tj-actions/changed-files dependency-version: 47.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ci_dependencies - dependency-name: codecov/codecov-action dependency-version: 5.5.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ci_dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
328 lines
10 KiB
YAML
328 lines
10 KiB
YAML
name: Check the getting-started.sh script
|
|
|
|
# This workflow aims to make sure that the `getting-started.sh` script
|
|
# is functional and allows to build the templates
|
|
# on different operating systems.
|
|
#
|
|
# There are two jobs inside.
|
|
# One for systems that can run in a docker container, and one for macOS.
|
|
#
|
|
# Each job consists of:
|
|
# 1. Some necessary prerequisites for the workflow itself.
|
|
# 2. A first pass of the script, which will install dependencies and clone a template.
|
|
# 3. A second pass of the script, to make sure the behaviour is as expected.
|
|
# 4. Building the template - making sure it's buildable and runnable.
|
|
#
|
|
# The script is interacted with using the `expect` tool, which is available on all relevant systems.
|
|
# The steps are not re-used between macOS and other systems,
|
|
# because they are very similar but a little different.
|
|
# Additionally, macOS does NOT start from scratch here - for example, we have homebrew already installed.
|
|
#
|
|
# There are many combinations of systems, shells and templates.
|
|
# We test a selected handful of combinations here.
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- ".github/workflows/check-getting-started.yml"
|
|
- "scripts/getting-started.sh"
|
|
types: [opened, synchronize, reopened, ready_for_review]
|
|
schedule:
|
|
- cron: "0 5 * * *"
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
isdraft:
|
|
uses: ./.github/workflows/reusable-isdraft.yml
|
|
check-getting-started:
|
|
needs: isdraft
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
include:
|
|
- name: ubuntu
|
|
container: ubuntu
|
|
template: minimal
|
|
package: pez-minimal-template-node
|
|
shell: bash
|
|
- name: debian
|
|
container: debian
|
|
template: teyrchain
|
|
package: teyrchain-template-node
|
|
shell: sh
|
|
- name: arch
|
|
container: archlinux
|
|
template: solochain
|
|
package: pez-solochain-template-node
|
|
shell: sh
|
|
- name: fedora
|
|
container: fedora
|
|
template: teyrchain
|
|
package: teyrchain-template-node
|
|
shell: sh
|
|
- name: opensuse
|
|
container: opensuse/tumbleweed
|
|
template: solochain
|
|
package: pez-solochain-template-node
|
|
shell: sh
|
|
runs-on: ubuntu-latest
|
|
container: ${{ matrix.container }}:latest
|
|
env:
|
|
# Use local templates from the repo instead of cloning from external repos
|
|
PEZKUWI_TEMPLATE_SOURCE: ${{ github.workspace }}/templates
|
|
# Fix HOME directory mismatch in containers (rustup requires this)
|
|
HOME: /root
|
|
steps:
|
|
# A minimal amount of prerequisites required before we can run the actual getting-started script,
|
|
# which will install the rest of requirements.
|
|
- name: Install ubuntu/debian prerequisites
|
|
run: apt update && apt install -y expect sudo git
|
|
if: contains(matrix.name, 'ubuntu') || contains(matrix.name, 'debian')
|
|
- name: Install arch prerequisites
|
|
run: pacman -Syu --needed --noconfirm expect sudo git
|
|
if: contains(matrix.name, 'arch')
|
|
- name: Install fedora prerequisites
|
|
run: dnf --assumeyes install expect sudo git
|
|
if: contains(matrix.name, 'fedora')
|
|
- name: Install opensuse prerequisites
|
|
run: zypper install --no-confirm expect sudo git
|
|
if: contains(matrix.name, 'opensuse')
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
|
|
- name: Set additional expect flags if necessary
|
|
run: |
|
|
# Add a debug flag to expect, if github is re-run with debug logging enabled.
|
|
[ "${{ runner.debug }}" = "1" ] && EXPECT_FLAGS="-d" || EXPECT_FLAGS=""
|
|
echo "EXPECT_FLAGS=${EXPECT_FLAGS}" >> $GITHUB_ENV
|
|
|
|
- name: Check the first run of the script
|
|
run: |
|
|
expect $EXPECT_FLAGS -c '
|
|
set timeout 240
|
|
|
|
spawn ${{ matrix.shell }} scripts/getting-started.sh
|
|
|
|
expect_after {
|
|
timeout { puts stderr "Timed out on an expect"; exit 1 }
|
|
eof { puts stderr "EOF received on an expect"; exit 1 }
|
|
}
|
|
|
|
expect -nocase "Detected ${{ matrix.name }}"
|
|
|
|
expect "*Rust is not installed. Install it?*" {
|
|
send "y\r"
|
|
# rustup runs with -y flag (non-interactive), so no "Proceed" prompt
|
|
expect "Rust is installed now"
|
|
}
|
|
|
|
expect "*Setup the Rust environment*" {
|
|
send "y\r"
|
|
}
|
|
|
|
expect "start with one of the templates" {
|
|
send "y\r"
|
|
}
|
|
|
|
expect -re "(.)\\) ${{ matrix.template }} template" {
|
|
send "$expect_out(1,string)\r"
|
|
}
|
|
|
|
expect "*compile the node?*" {
|
|
send "n\r"
|
|
}
|
|
|
|
expect eof
|
|
'
|
|
timeout-minutes: 15
|
|
|
|
- name: Check the second run of the script
|
|
run: |
|
|
expect $EXPECT_FLAGS -c '
|
|
set timeout 120
|
|
|
|
spawn ${{ matrix.shell }} scripts/getting-started.sh
|
|
|
|
expect_after {
|
|
timeout { puts stderr "Timed out on an expect"; exit 1 }
|
|
eof { puts stderr "EOF received on an expect"; exit 1 }
|
|
}
|
|
|
|
expect "Rust already installed" {}
|
|
|
|
expect "*Setup the Rust environment*" {
|
|
send "n\r"
|
|
}
|
|
|
|
expect "start with one of the templates" {
|
|
send "y\r"
|
|
}
|
|
|
|
expect -re "(.)\\) ${{ matrix.template }} template" {
|
|
send "$expect_out(1,string)\r"
|
|
expect "directory already exists" {}
|
|
}
|
|
|
|
expect "*compile the node?*" {
|
|
send "n\r"
|
|
}
|
|
|
|
expect eof
|
|
'
|
|
timeout-minutes: 15
|
|
|
|
# Build the template from within the SDK workspace context
|
|
# Templates use workspace inheritance and can't be built standalone
|
|
# Note: Use $GITHUB_WORKSPACE env var, not ${{ github.workspace }} template
|
|
# because inside containers the template expands to host path which doesn't exist
|
|
- name: Compile the template node
|
|
run: |
|
|
. "$HOME/.cargo/env"
|
|
cd "$GITHUB_WORKSPACE"
|
|
cargo build --release -p ${{ matrix.package }}
|
|
timeout-minutes: 120
|
|
|
|
- name: Check that the binary is executable
|
|
run: |
|
|
. "$HOME/.cargo/env"
|
|
cd "$GITHUB_WORKSPACE"
|
|
cargo run --release -p ${{ matrix.package }} -- --help
|
|
timeout-minutes: 5
|
|
|
|
check-getting-started-macos:
|
|
needs: isdraft
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
include:
|
|
- template: teyrchain
|
|
package: teyrchain-template-node
|
|
shell: sh
|
|
- template: solochain
|
|
package: pez-solochain-template-node
|
|
shell: bash
|
|
runs-on: macos-latest
|
|
env:
|
|
# Use local templates from the repo instead of cloning from external repos
|
|
PEZKUWI_TEMPLATE_SOURCE: ${{ github.workspace }}/templates
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
|
|
- name: Install LLVM (provides libclang for rocksdb)
|
|
run: |
|
|
brew install llvm
|
|
echo "LIBCLANG_PATH=$(brew --prefix llvm)/lib" >> $GITHUB_ENV
|
|
|
|
- name: Set additional expect flags if necessary
|
|
run: |
|
|
# Add a debug flag to expect, if github is re-run with debug logging enabled.
|
|
[ "${{ runner.debug }}" = "1" ] && EXPECT_FLAGS="-d" || EXPECT_FLAGS=""
|
|
echo "EXPECT_FLAGS=${EXPECT_FLAGS}" >> $GITHUB_ENV
|
|
|
|
- name: Check the first run of the script
|
|
run: |
|
|
expect $EXPECT_FLAGS -c '
|
|
set timeout 120
|
|
|
|
spawn ${{ matrix.shell }} scripts/getting-started.sh
|
|
|
|
expect_after {
|
|
timeout { puts stderr "Timed out on an expect"; exit 1 }
|
|
eof { puts stderr "EOF received on an expect"; exit 1 }
|
|
}
|
|
|
|
expect -nocase "Detected macOS"
|
|
|
|
expect "Homebrew already installed"
|
|
|
|
expect "Install cmake" {
|
|
send "y\r"
|
|
}
|
|
|
|
expect "Rust already installed" {}
|
|
|
|
expect "*Setup the Rust environment*" {
|
|
send "y\r"
|
|
}
|
|
|
|
expect "start with one of the templates" {
|
|
send "y\r"
|
|
}
|
|
|
|
expect -re "(.)\\) ${{ matrix.template }} template" {
|
|
send "$expect_out(1,string)\r"
|
|
}
|
|
|
|
expect "*compile the node?*" {
|
|
send "n\r"
|
|
}
|
|
|
|
expect eof
|
|
'
|
|
timeout-minutes: 15
|
|
|
|
- name: Check the second run of the script
|
|
run: |
|
|
expect $EXPECT_FLAGS -c '
|
|
set timeout 120
|
|
|
|
spawn ${{ matrix.shell }} scripts/getting-started.sh
|
|
|
|
expect_after {
|
|
timeout { puts stderr "Timed out on an expect"; exit 1 }
|
|
eof { puts stderr "EOF received on an expect"; exit 1 }
|
|
}
|
|
|
|
expect "Homebrew already installed"
|
|
|
|
expect "Install cmake" {
|
|
send "y\r"
|
|
}
|
|
|
|
expect "Rust already installed" {}
|
|
|
|
expect "*Setup the Rust environment*" {
|
|
send "n\r"
|
|
}
|
|
|
|
expect "start with one of the templates" {
|
|
send "y\r"
|
|
}
|
|
|
|
expect -re "(.)\\) ${{ matrix.template }} template" {
|
|
send "$expect_out(1,string)\r"
|
|
expect "directory already exists" {}
|
|
}
|
|
|
|
expect "*compile the node?*" {
|
|
send "n\r"
|
|
}
|
|
|
|
expect eof
|
|
'
|
|
timeout-minutes: 15
|
|
|
|
# Build the template from within the SDK workspace context
|
|
# Templates use workspace inheritance and can't be built standalone
|
|
# Note: Use $GITHUB_WORKSPACE env var, not ${{ github.workspace }} template
|
|
# because inside containers the template expands to host path which doesn't exist
|
|
- name: Compile the template node
|
|
run: |
|
|
. "$HOME/.cargo/env"
|
|
cd "$GITHUB_WORKSPACE"
|
|
cargo build --release -p ${{ matrix.package }}
|
|
timeout-minutes: 120
|
|
|
|
- name: Check that the binary is executable
|
|
run: |
|
|
. "$HOME/.cargo/env"
|
|
cd "$GITHUB_WORKSPACE"
|
|
cargo run --release -p ${{ matrix.package }} -- --help
|
|
timeout-minutes: 5
|