Skip to content

refactor: Add healthcheck on non-blocking broadcast loops #334

refactor: Add healthcheck on non-blocking broadcast loops

refactor: Add healthcheck on non-blocking broadcast loops #334

Workflow file for this run

name: "Price Feeder & Alarms Dispatcher CI"
on:
workflow_dispatch:
push:
branches:
- "main"
tags:
- "*"
pull_request:
branches:
- "main"
paths-ignore:
- "README.md"
defaults:
run:
shell: "sh"
env:
CARGO_INCREMENTAL: "0"
jobs:
check_formatting:
runs-on: "ubuntu-latest"
steps:
- uses: "actions/checkout@v4"
- uses: "nolus-protocol/rust-ci-actions/rust_cache@main"
with:
update_and_cache_toolchains: "true"
- uses: "nolus-protocol/rust-ci-actions/check_formatting@main"
check_codebase:
runs-on: "ubuntu-latest"
steps:
- uses: "actions/checkout@v4"
- uses: "nolus-protocol/rust-ci-actions/rust_cache@main"
with:
update_and_cache_toolchains: "true"
- uses: "nolus-protocol/rust-ci-actions/check_codebase@main"
audit_dependencies:
runs-on: "ubuntu-latest"
steps:
- uses: "actions/checkout@v4"
- uses: "nolus-protocol/rust-ci-actions/rust_cache@main"
with:
update_and_cache_toolchains: "true"
- uses: "nolus-protocol/rust-ci-actions/audit_dependencies@main"
linting:
runs-on: "ubuntu-latest"
steps:
- uses: "actions/checkout@v4"
- uses: "nolus-protocol/rust-ci-actions/rust_cache@main"
with:
update_and_cache_toolchains: "true"
- name: "Run clippy"
shell: "sh"
run: "cargo clippy -- -F unsafe_code -D warnings"
code_coverage:
runs-on: "ubuntu-latest"
steps:
- uses: "actions/checkout@v4"
- uses: "nolus-protocol/rust-ci-actions/rust_cache@main"
with:
update_and_cache_toolchains: "true"
- uses: "nolus-protocol/rust-ci-actions/code_coverage@main"
test_release_profile:
runs-on: "ubuntu-latest"
steps:
- uses: "actions/checkout@v4"
- uses: "nolus-protocol/rust-ci-actions/rust_cache@main"
with:
update_and_cache_toolchains: "true"
- name: "Run tests in release profile"
shell: "sh"
run: "cargo test --release"
build:
runs-on: "ubuntu-latest"
needs:
- "check_formatting"
- "check_codebase"
- "audit_dependencies"
- "linting"
- "code_coverage"
- "test_release_profile"
if: |-
github.ref_type == 'tag'
strategy:
fail-fast: true
matrix:
package:
- "market-data-feeder"
configuration:
- "dev"
- "test"
- "main"
include:
- package: "alarms-dispatcher"
# GitHub Actions escaped string evaluation
name: "Build image [${{ matrix.package }}; ${{ matrix.configuration }}]"
permissions:
packages: write
env:
container_registry: "ghcr.io"
container_repository: "nolus-protocol"
package: |-
${{ matrix.package }}
configuration: |-
${{ matrix.configuration }}
tag: |-
${{ github.ref_name }}
steps:
- uses: "actions/checkout@v4"
- name: "Build image"
run: |-
set -e
docker buildx build -t "service" -f "./Containerfile" --pull \
--target "${package}" --build-arg "package=${package}" \
--build-arg "configuration=${configuration}" .
- name: "Login at container registry"
env:
github_token: |-
${{ secrets.GITHUB_TOKEN }}
run: |
set -e
echo "${github_token}" | docker login "${container_registry}" \
--username "\$" --password-stdin
- name: "Push image to container registry"
run: |
set -e
if [ -z "${configuration}" ]
then
readonly image_name="nolus-${package}"
else
readonly image_name="nolus-${package}-${configuration}"
fi
readonly base_url="${container_registry}/${container_repository}"
readonly image_url="${base_url}/${image_name}"
readonly digits="[[:digit:]]\{1,\}"
readonly regex="^${digits}\.${digits}\.${digits}\$"
if echo "${tag}" | grep -q -s "${regex}"
then
readonly latest_tag="latest"
else
readonly latest_tag="dev"
fi
for image_tag in "${tag}" "${latest_tag}"
do
docker tag "service" "${image_url}:${image_tag}"
docker push "${image_url}:${image_tag}"
done