Skip to content

Fix #219 project delete_component and add tests #722

Fix #219 project delete_component and add tests

Fix #219 project delete_component and add tests #722

Workflow file for this run

name: CI
on:
push:
branches-ignore:
- main
tags-ignore:
- '**'
paths:
- '.github/workflows/ci.yml'
- '**/Cargo.toml'
- '**/Cargo.lock'
- '**/*.rs'
- '**/*.sh'
- '**/*.exp'
pull_request:
paths:
- '.github/workflows/ci.yml'
- '**/Cargo.toml'
- '**/Cargo.lock'
- '**/*.rs'
- '**/*.sh'
- '**/*.exp'
workflow_dispatch:
concurrency:
group: ${{ github.head_ref || github.ref_name }}
defaults:
run:
shell: bash
env:
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
with:
shared-key: jira_cli-check
cache-on-failure: true
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: rustfmt
- name: Install nightly toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
components: rustfmt
- name: Update Rustup (temporary workaround)
run: |
rustup self update
rustup update --no-self-update
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
cargo binstall -y --force cargo-quickinstall
- name: Deny check
run: |
cargo binstall -y --force cargo-deny
cargo deny --format json check bans licenses sources advisories > $HOME/deny.json || exit 0
- name: Audit check
run: |
cargo binstall -y --force cargo-audit
cargo audit --json > $HOME/audit.json || exit 0
- name: Check a local package and all of its dependencies for errors
uses: clechasseur/rs-cargo@v2
with:
command: check
args: --all
- name: Lint check
uses: clechasseur/rs-cargo@v2
with:
command: fmt
args: --all --check
- name: Outdated check
run: |
cargo binstall -y --force cargo-outdated
cargo outdated --depth 1 --format json > $HOME/outdated.json
- name: Udeps check
run: |
cargo binstall -y --force cargo-udeps
cargo +nightly udeps --quiet --workspace --all-features --all-targets --output json > $HOME/udeps.json || exit 0
- name: Clippy check
run: |
rustup component add clippy
cargo clippy --all-features --all-targets --message-format=json -- -Dclippy::all -Dclippy::nursery -Dclippy::pedantic > $HOME/clippy.json || exit 0
- name: Sonar converter
run: |
cargo binstall -y --force cargo-sonar
cargo sonar --audit --audit-path $HOME/audit.json --clippy --clippy-path $HOME/clippy.json --deny --deny-path $HOME/deny.json --outdated --outdated-path $HOME/outdated.json --udeps --udeps-path $HOME/udeps.json --sonar-path $HOME/sonar.json
- name: Setup sonarqube
uses: warchant/setup-sonar-scanner@v7
- name: Run sonarqube
run: sonar-scanner -Dsonar.organization=${{ secrets.SONAR_ORGANIZATION }} -Dsonar.projectKey=${{ secrets.SONAR_PROJECT_KEY }} -Dsonar.sources=$GITHUB_WORKSPACE -Dsonar.host.url=${{ secrets.SONAR_URL }} -Dsonar.login=${{ secrets.SONAR_TOKEN }} -Dsonar.externalIssuesReportPaths=$HOME/sonar.json
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
test:
runs-on: ubuntu-latest
needs:
- check
steps:
- uses: Swatinem/rust-cache@v2
with:
shared-key: jira_cli-x86_64-unknown-linux-gnu
cache-on-failure: true
- uses: actions/checkout@v4
- name: Update Rustup and define default toolchain
run: rustup update --no-self-update stable && rustup default stable
- name: Add target
run: rustup target add x86_64-unknown-linux-gnu
- name: Install dependencies for Linux
run: sudo apt update -y && sudo apt install --no-install-recommends expect gcc-multilib libjemalloc-dev libsecret-1-0 libsecret-1-dev mold -y
- name: Setup mold linker
run: echo -e '[target.x86_64-unknown-linux-gnu]\nlinker = "/usr/bin/clang"\nrustflags = ["-C", "link-arg=--ld-path=/usr/bin/mold"]' > ~/.cargo/config.toml
- name: Install rustfmt
run: rustup component add rustfmt || echo "rustfmt not available"
- name: Build
run: cargo build
- name: Run tests.sh
run: ./tests.sh
env:
GIT_ACTION_RUN_NUMBER: ${{ github.run_number }}
JIRA_DOMAIN: ${{ secrets.JIRA_DOMAIN }}
JIRA_USER: ${{ secrets.JIRA_USER }}
JIRA_TOKEN: ${{ secrets.JIRA_TOKEN }}
JIRA_USER_ACCOUNT_ID: ${{ secrets.JIRA_USER_ACCOUNT_ID }}
native:
runs-on: ${{ matrix.os }}
needs:
- check
- test
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
rust: stable
target: x86_64-unknown-linux-gnu
- os: macos-latest
rust: stable
target: x86_64-apple-darwin
steps:
- uses: Swatinem/rust-cache@v2
with:
shared-key: jira_cli-${{ matrix.target }}
cache-on-failure: true
- uses: actions/checkout@v4
- name: Update Rustup and define default toolchain
run: rustup update --no-self-update ${{ matrix.rust }} && rustup default ${{ matrix.rust }}
- name: Add target
run: rustup target add ${{ matrix.target }}
- name: Install dependencies for Linux
run: sudo apt update -y && sudo apt install --no-install-recommends expect gcc-multilib libjemalloc-dev libsecret-1-0 libsecret-1-dev mold -y
if: matrix.os == 'ubuntu-latest'
- name: Setup mold linker
run: echo -e '[target.x86_64-unknown-linux-gnu]\nlinker = "/usr/bin/clang"\nrustflags = ["-C", "link-arg=--ld-path=/usr/bin/mold"]' > ~/.cargo/config.toml
- name: Install rustfmt
run: rustup component add rustfmt || echo "rustfmt not available"
- name: Build
run: cargo build
- name: Run tests.sh
run: ./tests.sh
env:
GIT_ACTION_RUN_NUMBER: ${{ github.run_number }}
JIRA_DOMAIN: ${{ secrets.JIRA_DOMAIN }}
JIRA_USER: ${{ secrets.JIRA_USER }}
JIRA_TOKEN: ${{ secrets.JIRA_TOKEN }}
JIRA_USER_ACCOUNT_ID: ${{ secrets.JIRA_USER_ACCOUNT_ID }}
if: matrix.os == 'ubuntu-latest'
cross:
runs-on: ${{ matrix.os }}
needs:
- check
- test
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
rust: stable
target: aarch64-unknown-linux-gnu
- os: macos-latest
rust: stable
target: aarch64-apple-darwin
steps:
- uses: Swatinem/rust-cache@v2
with:
shared-key: jira_cli-${{ matrix.target }}
cache-on-failure: true
- uses: actions/checkout@v4
- name: Update Rustup and define default toolchain
run: rustup update --no-self-update ${{ matrix.rust }} && rustup default ${{ matrix.rust }}
- name: Add target
run: rustup target add ${{ matrix.target }}
- name: Install dependencies for Linux
run: sudo apt update -y && sudo apt install --no-install-recommends expect g++-aarch64-linux-gnu gcc-aarch64-linux-gnu libjemalloc-dev libsecret-1-0 libsecret-1-dev -y
if: matrix.os == 'ubuntu-latest'
- name: Install rustfmt
run: rustup component add rustfmt || echo "rustfmt not available"
- name: Build for all architecture except Mac ARM
run: cargo build --target ${{ matrix.target }}
if: matrix.target != 'aarch64-apple-darwin'
- name: Build for Mac ARM
run: |
SDKROOT=$(xcrun -sdk macosx --show-sdk-path)
MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version)
cargo build --target=aarch64-apple-darwin
if: matrix.target == 'aarch64-apple-darwin'
approve-pr:
name: Approve PR
if: ${{ github.event_name == 'pull_request' }}
needs:
- check
- test
- native
- cross
runs-on: ubuntu-latest
steps:
- uses: hmarr/auto-approve-action@v2
with:
github-token: ${{ secrets.PAT }}