|
@@ -1,429 +0,0 @@
|
|
|
-# Release workflow
|
|
|
-#
|
|
|
-# We parallelize builds, dump all the artifacts into a release, and then publish the release
|
|
|
-# This guarantees everything is properly built and cached in case anything goes wrong
|
|
|
-#
|
|
|
-# The artifacts also need to get pushed to the various places
|
|
|
-# - the CLI goes to the releases page for binstall
|
|
|
-# - the extension goes to the marketplace
|
|
|
-# - the docs go to the website
|
|
|
-#
|
|
|
-# We need to be aware of the channel we're releasing
|
|
|
-# - prerelease is master
|
|
|
-# - stable is whatever the latest stable release is (ie 0.4 or 0.5 or 0.6 etc)
|
|
|
-#
|
|
|
-# In theory, we could trigger this workflow and set the channel accordingly
|
|
|
-
|
|
|
-on:
|
|
|
- workflow_dispatch:
|
|
|
- inputs:
|
|
|
- channel:
|
|
|
- type: choice
|
|
|
- description: "Branch to publish"
|
|
|
- required: true
|
|
|
- description: Choose the branch to publish. If the branch is main, it will publish a prerelease.
|
|
|
-
|
|
|
- # add more options as we release more stable versions.
|
|
|
- # todo: automate branch selection
|
|
|
- options:
|
|
|
- - v0.4.x
|
|
|
- - v0.5.x
|
|
|
- - main
|
|
|
-
|
|
|
-jobs:
|
|
|
- # Build the CLI for all platforms
|
|
|
- build-cli:
|
|
|
- permissions:
|
|
|
- contents: write
|
|
|
- runs-on: ${{ matrix.platform.os }}
|
|
|
- strategy:
|
|
|
- matrix:
|
|
|
- platform:
|
|
|
- - {
|
|
|
- target: x86_64-pc-windows-msvc,
|
|
|
- os: windows-latest,
|
|
|
- toolchain: "1.70.0",
|
|
|
- }
|
|
|
- - {
|
|
|
- target: x86_64-apple-darwin,
|
|
|
- os: macos-latest,
|
|
|
- toolchain: "1.70.0",
|
|
|
- }
|
|
|
- - {
|
|
|
- target: x86_64-unknown-linux-gnu,
|
|
|
- os: ubuntu-latest,
|
|
|
- toolchain: "1.70.0",
|
|
|
- }
|
|
|
- steps:
|
|
|
- - uses: actions/checkout@v4
|
|
|
- ref: ${{ github.event.inputs.channel }}
|
|
|
- - name: Install stable
|
|
|
- uses: dtolnay/rust-toolchain@master
|
|
|
- with:
|
|
|
- toolchain: ${{ matrix.platform.toolchain }}
|
|
|
- targets: ${{ matrix.platform.target }}
|
|
|
- - uses: ilammy/setup-nasm@v1
|
|
|
- - name: Setup cache
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
- # cache only the cli - mmmm not sure if this is needed
|
|
|
- with:
|
|
|
- workspaces: packages/cli -> ../../target
|
|
|
-
|
|
|
- # Build the vscode extension
|
|
|
- build-extension:
|
|
|
-
|
|
|
- # Build the docs
|
|
|
- build-docs:
|
|
|
-
|
|
|
- # Run benchmarks, which we'll use to display on the website
|
|
|
- build-benchmarks:
|
|
|
-
|
|
|
-
|
|
|
- # And then do the releases, once everything is built
|
|
|
- # This should involve no rust and just pull down the artifacts
|
|
|
- release:
|
|
|
- depends-on: [build-cli, build-extension, build-docs, build-benchmarks]
|
|
|
-
|
|
|
- # Checkout the right branch
|
|
|
- - uses: actions/checkout@v4
|
|
|
- ref: ${{ github.event.inputs.channel }}
|
|
|
-
|
|
|
- # Before anything else, we need to publish the crates
|
|
|
- # todo: set the semver based on the channel
|
|
|
- # - all semver is a minor bump,
|
|
|
- # - if it's main, it's a prerelease, so use the prerelease flag
|
|
|
- - name: Publish to crates.io
|
|
|
- run: |
|
|
|
- git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
|
- git config --global user.name "github-actions[bot]"
|
|
|
- # cargo workspaces version -y ${{ github.event.inputs.semver }}
|
|
|
- # cargo workspaces publish -y ${{ github.event.inputs.semver }}
|
|
|
-
|
|
|
- # Todo: we want `cargo install dx` to actually just use a prebuilt binary
|
|
|
- - name: Build and upload CLI binaries
|
|
|
- uses: taiki-e/upload-rust-binary-action@v1
|
|
|
- with:
|
|
|
- token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
- target: ${{ matrix.platform.target }}
|
|
|
- bin: dx
|
|
|
- archive: dx-${{ matrix.platform.target }}
|
|
|
- checksum: sha256
|
|
|
- manifest_path: packages/cli/Cargo.toml
|
|
|
-
|
|
|
-# build the docs, CLI, extension, and release
|
|
|
-jobs:
|
|
|
- build-deploy:
|
|
|
- runs-on: ubuntu-latest
|
|
|
- environment: docs
|
|
|
- steps:
|
|
|
- # install rust, etc, with caching, and do some checks
|
|
|
- - uses: actions/checkout@v4
|
|
|
- - run: sudo apt-get update
|
|
|
- - run: sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev libxdo-dev
|
|
|
- - uses: dtolnay/rust-toolchain@stable
|
|
|
- - uses: Swatinem/rust-cache@v2
|
|
|
- with:
|
|
|
- cache-all-crates: "true"
|
|
|
- # save-if: ${{ github.ref == 'refs/heads/main' }} # always save the cache
|
|
|
-
|
|
|
- - name: Free Disk Space (Ubuntu)
|
|
|
- uses: jlumbroso/free-disk-space@v1.3.1
|
|
|
- with: # speed things up a bit
|
|
|
- large-packages: false
|
|
|
- docker-images: false
|
|
|
- swap-storage: false
|
|
|
-
|
|
|
- # Just make sure clippy is happy before doing anything else
|
|
|
- # Don't publish versions with clippy errors!
|
|
|
- - name: Clippy
|
|
|
- run: cargo clippy --workspace --all --examples --tests --all-features --all-targets -- -D warnings
|
|
|
-
|
|
|
- # Build the CLI... todo: do this in a matrix using binstall
|
|
|
- - name: Build CLI
|
|
|
- run: cargo build --release --bin dx
|
|
|
-
|
|
|
- - name: Build Extension
|
|
|
- run: cargo build --release --bin dx-ext
|
|
|
- - name: Bundle extension
|
|
|
- working-directory: ./packages/extension
|
|
|
- run: vsce package && mv *.vsix ../../dx-ext.vsix
|
|
|
-
|
|
|
-
|
|
|
- # Docs first...
|
|
|
- # NOTE: Delete when the previous one is enabled
|
|
|
- # NOTE: Comment out when https://github.com/rust-lang/mdBook/pull/1306 is merged and released
|
|
|
- # - name: Setup mdBook
|
|
|
- # uses: peaceiris/actions-mdbook@v1
|
|
|
- # with:
|
|
|
- # mdbook-version: "0.4.10"
|
|
|
- - name: Setup mdBook
|
|
|
- run: |
|
|
|
- cargo install mdbook --git https://github.com/Demonthos/mdBook.git --branch master
|
|
|
-
|
|
|
- - name: Build
|
|
|
- run: cd docs &&
|
|
|
- cd guide && mdbook build -d ../nightly/guide && cd .. &&
|
|
|
- cd router && mdbook build -d ../nightly/router && cd ..
|
|
|
-
|
|
|
- - name: Deploy docs 🚀
|
|
|
- uses: JamesIves/github-pages-deploy-action@v4.5.0
|
|
|
- with:
|
|
|
- branch: gh-pages # The branch the action should deploy to.
|
|
|
- folder: docs/nightly # The folder the action should deploy.
|
|
|
- target-folder: docs
|
|
|
- repository-name: dioxuslabs/docsite
|
|
|
- # Don't clean the existing files, so the old docs are still available.
|
|
|
- # todo: the history on the dociste is getting massive, so we should actually just be amending the commit
|
|
|
- clean: false
|
|
|
- token: ${{ secrets.DEPLOY_KEY }}
|
|
|
-
|
|
|
- # Then the CLI
|
|
|
-
|
|
|
- # Then the extension
|
|
|
-
|
|
|
- # Then the release itself
|
|
|
-
|
|
|
-
|
|
|
-# Release a number of things
|
|
|
-# - the extension
|
|
|
-# - the CLI
|
|
|
-# - nightly docs
|
|
|
-# - the website
|
|
|
-# - crates themselves
|
|
|
-
|
|
|
-# name: Publish to crates.io
|
|
|
-
|
|
|
-# on:
|
|
|
-# workflow_dispatch:
|
|
|
-# inputs:
|
|
|
-# semver:
|
|
|
-# type: choice
|
|
|
-# description: "Semver version to publish"
|
|
|
-# required: true
|
|
|
-# options:
|
|
|
-# - patch
|
|
|
-# - minor
|
|
|
-# - major
|
|
|
-
|
|
|
-# jobs:
|
|
|
-# publish:
|
|
|
-# runs-on: ubuntu-latest
|
|
|
-# steps:
|
|
|
-# - name: Checkout code
|
|
|
-# uses: actions/checkout@v2
|
|
|
-# - name: Set up Rust
|
|
|
-# uses: actions-rs/toolchain@v1
|
|
|
-# with:
|
|
|
-# toolchain: nightly
|
|
|
-# override: true
|
|
|
-# - name: Install cargo-workspaces
|
|
|
-# run: cargo install cargo-workspaces
|
|
|
-# - name: Login to crates.io
|
|
|
-# uses: actions-rs/cargo@v1
|
|
|
-# with:
|
|
|
-# toolchain: nightly
|
|
|
-# command: login
|
|
|
-# args: ${{ secrets.CRATES_TOKEN }}
|
|
|
-# - name: Publish to crates.io
|
|
|
-# run: |
|
|
|
-# git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
|
-# git config --global user.name "github-actions[bot]"
|
|
|
-
|
|
|
-# # Release as-is
|
|
|
-# # This assumes the version tracking PR has been merged
|
|
|
-
|
|
|
-# # cargo workspaces changed
|
|
|
-# # # version will automatically commit back to the repo
|
|
|
-# # # cargo workspaces version -y ${{ github.event.inputs.semver }}
|
|
|
-# Whenever commits are merged to main, update or create a PR that bumps the version
|
|
|
-# Tracks if changes are semver compatible
|
|
|
-#
|
|
|
-# We want to have a standing "major" update PR and a standing "minor" update PR where fixes are backported
|
|
|
-#
|
|
|
-# Whenever a PR is merged, we want to attempt to update the major/minor bump PRs
|
|
|
-# - for main, it's as simple as running cargo workspaces version -y minor and dumping it into a PR
|
|
|
-# - for backport, it's a bit more complicated, since we need to know which branch is the latest stable release
|
|
|
-#
|
|
|
-# - We could make it so merging a PR with a "backport" label attempts to release it, using the target branch as the stable release
|
|
|
-
|
|
|
-# on:
|
|
|
-# push:
|
|
|
-# branches:
|
|
|
-# - master
|
|
|
-
|
|
|
-
|
|
|
-# # Generate the minor bump
|
|
|
-# jobs:
|
|
|
-# update_routes:
|
|
|
-# runs-on: ubuntu-latest
|
|
|
-# steps:
|
|
|
-# # Check out the repo, but don't persist credentials, so github uses the GITHUB_TOKEN
|
|
|
-# - uses: actions/checkout@v2
|
|
|
-# with:
|
|
|
-# persist-credentials: false
|
|
|
-
|
|
|
-# # Run cargo workspaces version to generate the version bump PR
|
|
|
-# - run: "date > datetime.txt" # create or update a test.txt file
|
|
|
-
|
|
|
-# # And then create the PR
|
|
|
-# - uses: gr2m/create-or-update-pull-request-action@v1
|
|
|
-# env:
|
|
|
-# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
-# with:
|
|
|
-# title: "My pull request title"
|
|
|
-# body: "My pull request body"
|
|
|
-# branch: "my-pull-request-base-branch"
|
|
|
-# path: "lib/"
|
|
|
-# commit-message: "My commit message for uncommitted changes in lib/ folder"
|
|
|
-# author: "Lorem J. Ipsum <lorem@example.com>"
|
|
|
-# labels: label1, label2
|
|
|
-# assignees: user1, user2
|
|
|
-# reviewers: user1, user2
|
|
|
-# team_reviewers: team1, team2
|
|
|
-# auto-merge: squash
|
|
|
-# update-pull-request-title-and-body: false
|
|
|
-
|
|
|
-# # Generate the major bump
|
|
|
-# # # # publish will automatically commit back to the repo **AND** publish to crates.io
|
|
|
-# # # # cargo workspaces publish -y ${{ github.event.inputs.semver }}
|
|
|
-
|
|
|
-
|
|
|
-# name: Deploy Nightly Docs
|
|
|
-# on:
|
|
|
-# push:
|
|
|
-# branches:
|
|
|
-# - main
|
|
|
-
|
|
|
-# jobs:
|
|
|
-# deploy:
|
|
|
-# name: Build & Deploy
|
|
|
-# runs-on: ubuntu-latest
|
|
|
-# permissions:
|
|
|
-# contents: write
|
|
|
-
|
|
|
-# steps:
|
|
|
-# - uses: actions/checkout@v4
|
|
|
-# - run: sudo apt-get update
|
|
|
-# - run: sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev libxdo-dev
|
|
|
-# - uses: dtolnay/rust-toolchain@nightly
|
|
|
-# with:
|
|
|
-# toolchain: nightly-2024-02-01
|
|
|
-# - uses: Swatinem/rust-cache@v2
|
|
|
-# with:
|
|
|
-# cache-all-crates: "true"
|
|
|
-# save-if: ${{ github.ref == 'refs/heads/main' }}
|
|
|
-# - uses: ilammy/setup-nasm@v1
|
|
|
-
|
|
|
-# - name: cargo doc
|
|
|
-# run: cargo doc --no-deps --workspace --all-features
|
|
|
-
|
|
|
-# - name: Deploy
|
|
|
-# uses: JamesIves/github-pages-deploy-action@v4.5.0
|
|
|
-# with:
|
|
|
-# branch: gh-pages
|
|
|
-# folder: target/doc
|
|
|
-# target-folder: api-docs/nightly
|
|
|
-# repository-name: dioxuslabs/docsite
|
|
|
-# clean: false
|
|
|
-# token: ${{ secrets.DEPLOY_KEY }}
|
|
|
-
|
|
|
-
|
|
|
-# name: docs stable
|
|
|
-
|
|
|
-# on:
|
|
|
-# workflow_dispatch:
|
|
|
-
|
|
|
-# concurrency:
|
|
|
-# group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
|
-# cancel-in-progress: true
|
|
|
-
|
|
|
-# jobs:
|
|
|
-# build-deploy:
|
|
|
-# runs-on: ubuntu-latest
|
|
|
-# environment: docs
|
|
|
-# steps:
|
|
|
-
|
|
|
-# # NOTE: Comment out when https://github.com/rust-lang/mdBook/pull/1306 is merged and released
|
|
|
-# # - name: Setup mdBook
|
|
|
-# # uses: peaceiris/actions-mdbook@v1
|
|
|
-# # with:
|
|
|
-# # mdbook-version: "0.4.10"
|
|
|
-
|
|
|
-# # NOTE: Delete when the previous one is enabled
|
|
|
-# - name: Setup mdBook
|
|
|
-# run: |
|
|
|
-# cargo install mdbook --git https://github.com/Demonthos/mdBook.git --branch master
|
|
|
-# - uses: actions/checkout@v4
|
|
|
-
|
|
|
-# - name: Build
|
|
|
-# run: cd docs &&
|
|
|
-# cd guide && mdbook build -d ../nightly/guide && cd .. &&
|
|
|
-# cd router && mdbook build -d ../nightly/router && cd ..
|
|
|
-
|
|
|
-# - name: Deploy 🚀
|
|
|
-# uses: JamesIves/github-pages-deploy-action@v4.5.0
|
|
|
-# with:
|
|
|
-# branch: gh-pages # The branch the action should deploy to.
|
|
|
-# folder: docs/nightly # The folder the action should deploy.
|
|
|
-# target-folder: docs
|
|
|
-# repository-name: dioxuslabs/docsite
|
|
|
-# clean: false
|
|
|
-# token: ${{ secrets.DEPLOY_KEY }} # let's pretend I don't need it for now
|
|
|
-
|
|
|
-
|
|
|
-# name: Build CLI for Release
|
|
|
-
|
|
|
-# # Will run automatically on every new release
|
|
|
-# on:
|
|
|
-# release:
|
|
|
-# types: [published]
|
|
|
-
|
|
|
-# jobs:
|
|
|
-# build-and-upload:
|
|
|
-# permissions:
|
|
|
-# contents: write
|
|
|
-# runs-on: ${{ matrix.platform.os }}
|
|
|
-# strategy:
|
|
|
-# matrix:
|
|
|
-# platform:
|
|
|
-# - {
|
|
|
-# target: x86_64-pc-windows-msvc,
|
|
|
-# os: windows-latest,
|
|
|
-# toolchain: "1.70.0",
|
|
|
-# }
|
|
|
-# - {
|
|
|
-# target: x86_64-apple-darwin,
|
|
|
-# os: macos-latest,
|
|
|
-# toolchain: "1.70.0",
|
|
|
-# }
|
|
|
-# - {
|
|
|
-# target: x86_64-unknown-linux-gnu,
|
|
|
-# os: ubuntu-latest,
|
|
|
-# toolchain: "1.70.0",
|
|
|
-# }
|
|
|
-# steps:
|
|
|
-# - uses: actions/checkout@v4
|
|
|
-# - name: Install stable
|
|
|
-# uses: dtolnay/rust-toolchain@master
|
|
|
-# with:
|
|
|
-# toolchain: ${{ matrix.platform.toolchain }}
|
|
|
-# targets: ${{ matrix.platform.target }}
|
|
|
-
|
|
|
-# - uses: ilammy/setup-nasm@v1
|
|
|
-
|
|
|
-# # Setup the Github Actions Cache for the CLI package
|
|
|
-# - name: Setup cache
|
|
|
-# uses: Swatinem/rust-cache@v2
|
|
|
-# with:
|
|
|
-# workspaces: packages/cli -> ../../target
|
|
|
-
|
|
|
-# # This neat action can build and upload the binary in one go!
|
|
|
-# - name: Build and upload binary
|
|
|
-# uses: taiki-e/upload-rust-binary-action@v1
|
|
|
-# with:
|
|
|
-# token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
-# target: ${{ matrix.platform.target }}
|
|
|
-# bin: dx
|
|
|
-# archive: dx-${{ matrix.platform.target }}
|
|
|
-# checksum: sha256
|
|
|
-# manifest_path: packages/cli/Cargo.toml
|