diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..fdf9163 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,17 @@ +name: CI + +on: + pull_request: {} + push: + branches: + - main + +permissions: + contents: read + +jobs: + rust: + name: Rust + uses: RustForWeb/.github/.github/workflows/rust.yml@373c25f8fd29e10c40f1343f13312f8be3514af0 + with: + target: wasm32-unknown-unknown diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..9bbf74f --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,14 @@ +name: Publish + +on: + release: + types: [published] + +permissions: + contents: read + id-token: write + +jobs: + publish: + name: Publish + uses: RustForWeb/.github/.github/workflows/publish.yml@373c25f8fd29e10c40f1343f13312f8be3514af0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 59d541b..f4e5429 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,159 +18,6 @@ permissions: jobs: release: name: Release - runs-on: ubuntu-latest - - outputs: - version: ${{ steps.extract-version.outputs.VERSION }} - - steps: - - name: Generate GitHub App token - id: app-token - uses: getsentry/action-github-app-token@v3 - with: - app_id: ${{ secrets.APP_ID }} - private_key: ${{ secrets.APP_PRIVATE_KEY }} - - - name: Checkout - uses: actions/checkout@v6 - - - name: Set up Rust toolchain - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - target: wasm32-unknown-unknown - - - name: Install Cargo Binary Install - uses: cargo-bins/cargo-binstall@main - - - name: Install crates - run: cargo binstall --force -y cargo-workspaces toml-cli - - - name: Bump version - run: cargo workspaces version --all --no-git-commit --yes ${{ inputs.bump }} - - - name: Extract version - id: extract-version - run: echo "VERSION=v$(toml get Cargo.toml workspace.package.version --raw)" >> "$GITHUB_OUTPUT" - - - name: Add changes - run: git add . - - - name: Commit - uses: dsanders11/github-app-commit-action@v2 - with: - message: ${{ steps.extract-version.outputs.VERSION }} - token: ${{ steps.app-token.outputs.token }} - - - name: Reset and pull - run: git reset --hard && git pull - - - name: Tag - uses: bruno-fs/repo-tagger@1.0.0 - with: - tag: ${{ steps.extract-version.outputs.VERSION }} - env: - GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} - - - name: Release - uses: softprops/action-gh-release@v3 - with: - generate_release_notes: true - make_latest: true - tag_name: ${{ steps.extract-version.outputs.VERSION }} - token: ${{ steps.app-token.outputs.token }} - - - name: Publish - run: cargo workspaces publish --publish-as-is --token "${{ secrets.CRATES_IO_TOKEN }}" - - release-binary: - strategy: - fail-fast: false - matrix: - package: [mdbook-tabs, mdbook-trunk] - target: - [ - aarch64-unknown-linux-gnu, - aarch64-unknown-linux-musl, - x86_64-unknown-linux-gnu, - x86_64-unknown-linux-musl, - aarch64-apple-darwin, - x86_64-apple-darwin, - x86_64-pc-windows-msvc, - ] - include: - - target: aarch64-unknown-linux-gnu - os: ubuntu-latest - - target: aarch64-unknown-linux-musl - os: ubuntu-latest - - target: x86_64-unknown-linux-gnu - os: ubuntu-latest - - target: x86_64-unknown-linux-musl - os: ubuntu-latest - - target: aarch64-apple-darwin - os: macos-latest - - target: x86_64-apple-darwin - os: macos-latest - - target: x86_64-pc-windows-msvc - os: windows-latest - - runs-on: ${{ matrix.os }} - name: Release ${{ matrix.package }} for ${{ matrix.target }} - needs: release - - steps: - - uses: actions/checkout@v6 - - - name: Set up Rust toolchain - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - components: clippy, llvm-tools-preview, rustfmt, rust-std - target: ${{ matrix.target }} - - - name: Set up target (*-musl) - if: ${{ endsWith(matrix.target, '-musl') }} - run: | - sudo apt update -y - sudo apt install -y musl-dev musl-tools - - - name: Set up target (aarch64-unknown-linux-gnu) - if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }} - run: | - sudo apt update -y - sudo apt install -y gcc-aarch64-linux-gnu - echo CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc >> $GITHUB_ENV - - - name: Set up target (aarch64-unknown-linux-musl) - if: ${{ matrix.target == 'aarch64-unknown-linux-musl' }} - run: | - sudo apt update -y - sudo apt install -y clang llvm musl-dev musl-tools - echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS=-Clink-self-contained=yes -Clinker=rust-lld" >> $GITHUB_ENV - echo CC_aarch64_unknown_linux_musl=clang >> $GITHUB_ENV - echo AR_aarch64_unknown_linux_musl=llvm-ar >> $GITHUB_ENV - - - name: Build - run: cargo build --bins --locked --release --target ${{ matrix.target }} - - - name: Archive (tar.gz) - if: ${{ !contains(matrix.target, '-windows-') }} - run: tar czf ../../${{ matrix.package }}-${{ needs.release.outputs.version }}-${{ matrix.target }}.tar.gz ${{ matrix.package }} - working-directory: target/${{ matrix.target }}/release - - - name: Archive (zip) - if: ${{ contains(matrix.target, '-windows-') }} - run: 7z a ../../${{ matrix.package }}-${{ needs.release.outputs.version }}-${{ matrix.target }}.zip ${{ matrix.package }}.exe - working-directory: target/${{ matrix.target }}/release - - - name: Upload release asset (tar.gz) - if: ${{ !contains(matrix.target, '-windows-') }} - uses: softprops/action-gh-release@v3 - with: - tag_name: ${{ needs.release.outputs.version }} - files: target/${{ matrix.package }}-${{ needs.release.outputs.version }}-${{ matrix.target }}.tar.gz - - - name: Upload release asset (zip) - if: ${{ contains(matrix.target, '-windows-') }} - uses: softprops/action-gh-release@v3 - with: - tag_name: ${{ needs.release.outputs.version }} - files: target/${{ matrix.package }}-${{ needs.release.outputs.version }}-${{ matrix.target }}.zip + uses: RustForWeb/.github/.github/workflows/release.yml@373c25f8fd29e10c40f1343f13312f8be3514af0 + with: + bump: ${{ inputs.bump }} diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 63af9d8..0f5ca1e 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -1,4 +1,5 @@ name: Website + on: pull_request: {} push: @@ -7,101 +8,14 @@ on: permissions: contents: read + id-token: write + pages: write concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: false jobs: - book-test: - name: Test Book - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v6 - - - name: Set up Rust toolchain - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - target: wasm32-unknown-unknown - - - name: Install Cargo Binary Install - uses: cargo-bins/cargo-binstall@main - - - name: Install mdBook and Trunk - run: cargo binstall --force -y mdbook trunk - - - name: Run tests - run: mdbook test - working-directory: book - - book-build: - name: Build Book - needs: book-test - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Set up Rust toolchain - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - target: wasm32-unknown-unknown - - - name: Install Cargo Binary Install - uses: cargo-bins/cargo-binstall@main - - - name: Install mdBook and Trunk - run: cargo binstall --force -y mdbook trunk - - - name: Build Book - run: mdbook build - working-directory: book - - - name: Combine Book Outputs - run: cargo run -p mdbook-trunk -- combine - working-directory: book - - - name: Upload artifact - uses: actions/upload-artifact@v7 - with: - name: book - path: book/dist - retention-days: 1 - if-no-files-found: error - - deploy: - name: Deploy - needs: book-build - if: github.ref == 'refs/heads/main' - runs-on: ubuntu-latest - - permissions: - contents: read - pages: write - id-token: write - - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Download artifacts - uses: actions/download-artifact@v8 - with: - path: dist - merge-multiple: true - - - name: Setup Pages - uses: actions/configure-pages@v6 - - - name: Upload artifact - uses: actions/upload-pages-artifact@v5 - with: - path: dist - - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v5 + book: + name: Book + uses: RustForWeb/.github/.github/workflows/book.yml@373c25f8fd29e10c40f1343f13312f8be3514af0