music: some updates to Sanctus for Epiphany page #96
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Integration and Deployment | |
on: | |
workflow_dispatch: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
env: | |
CARGO_TERM_COLOR: always | |
CARGO_INCREMENTAL: 0 | |
CARGO_PROFILE_TEST_DEBUG: 0 | |
jobs: | |
changes: | |
name: Identify changes | |
runs-on: ubuntu-22.04 | |
permissions: | |
pull-requests: read | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: | | |
lx: | |
- Cargo.toml | |
- Cargo.lock | |
- lx/src/** | |
- lx/crates/** | |
links: [sites/music/**, sites/_shared] | |
music: [sites/music/**, sites/_shared] | |
v6: [sites/v6/**, sites/_shared] | |
www: [sites/www/**, sites/_shared] | |
cfg: [render.yaml, _scripts/**, .github/workflows/**] | |
outputs: | |
lx: ${{ steps.filter.outputs.lx }} | |
links: ${{ steps.filter.outputs.links }} | |
music: ${{ steps.filter.outputs.music }} | |
v6: ${{ steps.filter.outputs.v6 }} | |
www: ${{ steps.filter.outputs.www }} | |
cfg: ${{ steps.filter.outputs.cfg }} | |
check: | |
name: Lint and Test | |
needs: [changes] | |
if: ${{ needs.changes.outputs.lx == 'true' || needs.changes.outputs.cfg == 'true' || github.event_name == 'workflow_dispatch' }} | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- uses: taiki-e/install-action@nextest | |
- run: cargo fmt --all --quiet -- --check | |
- run: cargo check --locked | |
- run: cargo clippy --locked -- --no-deps | |
- run: cargo nextest run --locked --no-fail-fast | |
release: | |
name: Create and upload release | |
needs: [check] | |
if: ${{ | |
(github.event.push.commits.author.username == 'chriskrycho' && github.ref_name == 'main') | |
|| github.event_name == 'workflow_dispatch' | |
}} | |
permissions: | |
contents: write | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: Create release build | |
run: cargo build --locked --release | |
- name: Show release build info | |
run: ls -l target/release/lx | |
- name: Rename and move release binary | |
run: mv target/release/lx lx-linux | |
- name: Generate Release Name | |
id: release_name | |
run: | | |
SHA=$(git rev-parse --short HEAD) | |
echo "release_name=lx-${SHA}" >> "$GITHUB_OUTPUT" | |
- uses: softprops/action-gh-release@v2 | |
with: | |
files: lx-linux | |
fail_on_unmatched_files: true | |
name: ${{ steps.release_name.outputs.release_name }} | |
tag_name: ${{ steps.release_name.outputs.release_name }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
build-check: | |
name: Check build results | |
needs: [check, release] | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check results | |
id: check | |
run: | | |
check_result="${{ needs.check.result }}" | |
release_result="${{ needs.release.result }}" | |
all_skipped=$([[ $check_result == "skipped" ]] && echo true || echo false) | |
all_success=$([[ $check_result == "success" && $release_result == "success" ]] && echo true || echo false) | |
if [[ $all_skipped == "true" ]]; then | |
STATE=not-needed | |
elif [[ $all_success == "true" ]]; then | |
STATE=succeeded | |
else | |
STATE=failed | |
fi | |
echo "state: $STATE" | |
echo "state=$STATE" >> "$GITHUB_OUTPUT" | |
outputs: | |
state: ${{ steps.check.outputs.state }} | |
trigger-deploy-music: | |
needs: [changes, build-check] | |
if: ${{ | |
github.ref == 'refs/heads/main' && | |
(((needs.changes.outputs.music == 'true' || needs.changes.outputs.cfg == 'true' || github.event_name == 'workflow_dispatch') | |
&& needs.build-check.outputs.state == 'non-needed') | |
|| needs.build-check.outputs.state == 'succeeded') | |
}} | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Render deploy hook | |
env: | |
deploy_url: ${{ secrets.RENDER_DEPLOY_HOOK_MUSIC }} | |
run: curl "$deploy_url" | |
trigger-deploy-v6: | |
needs: [changes, build-check] | |
if: ${{ | |
github.ref == 'refs/heads/main' && | |
(((needs.changes.outputs.v6 == 'true' || needs.changes.outputs.cfg == 'true' || github.event_name == 'workflow_dispatch') | |
&& needs.build-check.outputs.state == 'non-needed') | |
|| needs.build-check.outputs.state == 'succeeded') | |
}} | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Render deploy hook | |
env: | |
deploy_url: ${{ secrets.RENDER_DEPLOY_HOOK_V6 }} | |
run: curl "$deploy_url" |