Skip to content

fix(repo): S3 payload and encoding #1623

fix(repo): S3 payload and encoding

fix(repo): S3 payload and encoding #1623

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- main
env:
CARGO_TERM_COLOR: always
CLICOLOR: 1
RUST_NIGHTLY_VERSION: nightly-2024-11-06
CI: true
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
validate-title:
name: Validate PR Title
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
requireScope: true
subjectPattern: ^([A-Z]).+$
types: |
build
ci
docs
feat
fix
perf
refactor
test
scopes: |
benches
repo
deps
release
data-parser
fuel-streams
core
executors
macros
nats
storage
consumer
publisher
webserver
lockfile:
name: Validate Lockfile
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: ./.github/actions/setup-rust
- run: cargo update --workspace --locked
pre-commit:
name: Pre-commit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check workflow files
uses: docker://rhysd/actionlint:latest
env:
SHELLCHECK_OPTS: --exclude=SC2086,SC2129
with:
args: -color
- name: Install Rust
uses: ./.github/actions/setup-rust
with:
toolchain: ${{ env.RUST_NIGHTLY_VERSION }}
- name: Install Python
uses: actions/setup-python@v5
- name: Setup Node && PNPM
uses: ./.github/actions/setup-node
- name: Run Pre Commit
uses: pre-commit/[email protected]
commitlint:
name: Validating commits
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node && PNPM
uses: ./.github/actions/setup-node
- name: Validate current commit (last commit) with commitlint
if: github.event_name == 'push'
run: pnpm commitlint --last --verbose
- name: Validate PR commits with commitlint
if: github.event_name == 'pull_request'
run: |
pnpm commitlint \
--from ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} \
--to ${{ github.event.pull_request.head.sha }} \
--verbose
publish-crates-check:
name: Publish Check
needs:
- lockfile
- pre-commit
- commitlint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: ./.github/actions/setup-rust
with:
cache: false
- name: Publish crate check
uses: katyo/publish-crates@v2
with:
no-verify: true
dry-run: true
check-repo: false
ignore-unpublished-changes: true
cargo-verifications:
name: Cargo verifications
needs:
- lockfile
- pre-commit
- commitlint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: ./.github/actions/setup-rust
with:
toolchain: ${{ env.RUST_NIGHTLY_VERSION }}
- name: Setup Node && PNPM
uses: ./.github/actions/setup-node
- name: Check for typos
uses: crate-ci/typos@master
with:
config: ./.typos.toml
- uses: taiki-e/install-action@cargo-machete
- name: Lint project
run: make lint
install-deps:
name: Install dependencies
needs:
- cargo-verifications
- publish-crates-check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: ./.github/actions/setup-rust
with:
toolchain: ${{ env.RUST_NIGHTLY_VERSION }}
cache: true
- name: Install nextest
uses: taiki-e/cache-cargo-install-action@v2
with:
tool: cargo-nextest
locked: true
- name: Install dependencies
run: cargo fetch
# test-helm:
# needs: install-deps
# name: Test Helm
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Set up Helm
# uses: azure/setup-helm@v4
# with:
# version: "latest"
# - name: Install helm unittest plugin
# run: |
# helm plugin install https://github.com/helm-unittest/helm-unittest.git
# - name: Run Helm unit tests
# run: |
# make helm-test
test:
needs: install-deps
name: Test ${{ matrix.package }}
runs-on: ubuntu-latest
env:
NATS_URL: nats://127.0.0.1:4222
NATS_PUBLISHER_URL: nats://127.0.0.1:4333
NATS_SYSTEM_USER: sys
NATS_SYSTEM_PASSWORD: sys
NATS_ADMIN_USER: admin
NATS_ADMIN_PASS: admin
NATS_PUBLIC_USER: default_user
NATS_PUBLIC_PASS: ""
AWS_ACCESS_KEY_ID: test
AWS_SECRET_ACCESS_KEY: test
AWS_REGION: us-east-1
AWS_ENDPOINT_URL: http://localhost:4566
AWS_S3_BUCKET_NAME: fuel-streams-local
strategy:
fail-fast: false
matrix:
package:
- fuel-data-parser
- fuel-streams
- fuel-streams-core
- fuel-streams-macros
- sv-webserver
- sv-publisher
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: ./.github/actions/setup-rust
with:
toolchain: ${{ env.RUST_NIGHTLY_VERSION }}
- name: Install nextest
uses: taiki-e/cache-cargo-install-action@v2
with:
tool: cargo-nextest
locked: true
- name: Start Docker
run: |
make start-docker
- name: Run tests
run: make test PACKAGE=${{ matrix.package }} PROFILE=ci
- name: Stop Docker
if: always()
run: make stop-docker
build:
needs: install-deps
name: Build ${{ matrix.package }} for ${{ matrix.platform.target }}
runs-on: ${{ matrix.platform.os }}
strategy:
fail-fast: false
matrix:
package:
- sv-consumer
- sv-publisher
- sv-webserver
is_release:
- ${{ github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' }}
platform:
# linux x86_64
- os_name: Linux-x86_64-gnu
os: ubuntu-latest
target: x86_64-unknown-linux-gnu
build_on_pr: true
- os_name: Linux-x86_64-musl
os: ubuntu-latest
target: x86_64-unknown-linux-musl
build_on_pr: false
# linux aarch64
- os_name: Linux-aarch64-gnu
os: ubuntu-latest
target: aarch64-unknown-linux-gnu
build_on_pr: false
- os_name: Linux-aarch64-musl
os: ubuntu-latest
target: aarch64-unknown-linux-musl
build_on_pr: false
# macOS
- os_name: macOS-x86_64
os: macOS-latest
target: x86_64-apple-darwin
build_on_pr: true
- os_name: macOS-aarch64
os: macOS-latest
target: aarch64-apple-darwin
build_on_pr: false
exclude:
- is_release: false
platform: {build_on_pr: false}
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: ./.github/actions/setup-rust
with:
target: ${{ matrix.platform.target }}
cache: false
- name: Install packages (macOS)
if: matrix.platform.os == 'macOS-latest'
run: |
brew install llvm
- name: Install cross
if: matrix.platform.os != 'macOS-latest'
uses: baptiste0928/cargo-install@v3
with:
crate: cross
cache-key: ${{ matrix.platform.target }}
git: https://github.com/cross-rs/cross
- name: Build with cross for Linux
if: matrix.platform.os != 'macOS-latest'
run: |
cross build --release --locked --target ${{ matrix.platform.target }} --package ${{ matrix.package }}
- name: Build with cargo for MacOS
if: matrix.platform.os == 'macOS-latest'
run: |
rustup target add ${{ matrix.platform.target }}
cargo build --release --locked --target ${{ matrix.platform.target }} --package ${{ matrix.package }}
# - name: Strip binaries
# run: ./scripts/strip-binary.sh "${{ matrix.platform.target }}"
# - name: Set Artifact Name
# id: artifact-name
# shell: bash
# run: |
# echo "value=${{ matrix.package }}-${{ matrix.platform.os_name }}" >> $GITHUB_OUTPUT
# - name: Package as archive
# shell: bash
# run: |
# cd target/${{ matrix.platform.target }}/release
# tar czvf ../../../${{ steps.artifact-name.outputs.value }}.tar.gz ${{ matrix.package }}
# cd -
# - name: Publish release artifacts
# uses: actions/upload-artifact@v4
# if: >-
# (github.event_name == 'push' &&
# github.ref == 'refs/heads/main' &&
# contains(github.event.head_commit.message, 'ci(release): Preparing')) ||
# github.event_name == 'workflow_dispatch'
# with:
# name: ${{ steps.artifact-name.outputs.value }}
# path: ${{ matrix.package }}-*
# if-no-files-found: error
# retention-days: 30
release:
name: Create Release with Knope
if: >-
(github.event_name == 'push' &&
github.ref == 'refs/heads/main' &&
contains(github.event.head_commit.message, 'ci(release): Preparing')) ||
github.event_name == 'workflow_dispatch'
needs:
- test
# - test-helm
- build
runs-on: ubuntu-latest
permissions:
contents: read
actions: write
steps:
- name: Checkout Repository
uses: actions/checkout@v4
# - name: Download Artifacts
# uses: actions/download-artifact@v4
# with:
# path: artifacts
# merge-multiple: true
# - name: List Artifacts
# run: ls -R artifacts
- name: Run Knope Action
uses: knope-dev/[email protected]
with:
github-token: ${{ secrets.REPO_TOKEN }}
- name: Knope Release
run: knope release
env:
GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }}