Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

autorelease workflow #1960

Merged
merged 24 commits into from
Feb 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions .github/free_space.sh

This file was deleted.

56 changes: 0 additions & 56 deletions .github/workflows/cli_release.yml

This file was deleted.

43 changes: 0 additions & 43 deletions .github/workflows/docs stable.yml

This file was deleted.

38 changes: 0 additions & 38 deletions .github/workflows/docs.yml

This file was deleted.

53 changes: 31 additions & 22 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Whenever an open PR is updated, the workflow will be triggered
#
# This can get expensive, so we do a lot of caching and checks to prevent unnecessary runs

name: Rust CI

on:
Expand Down Expand Up @@ -75,7 +79,6 @@ jobs:
large-packages: false
docker-images: false
swap-storage: false

- run: cargo make tests

fmt:
Expand Down Expand Up @@ -112,6 +115,33 @@ jobs:
save-if: ${{ github.ref == 'refs/heads/main' }}
- run: cargo clippy --workspace --examples --tests --all-features --all-targets -- -D warnings

# Only run semver checks if the PR is not a draft and does not have the breaking label
# Breaking PRs don't need to follow semver since they are breaking changes
# However, this means we won't attempt to backport them, so you should be careful about using this label, as it will
# likely make future backporting difficult
#
# todo: fix this so even if breaking changes have been merged, the fix can be backported
#
# This will stop working once the first breaking change has been merged, so we should really try to just backport the fix
# and *then* run the semver checks. Basically "would backporting this PR cause a breaking change on stable?"
#
# semver:
# if: github.event.pull_request.draft == false && !contains(github.event.pull_request.labels.*.name, 'breaking')
# name: Semver Check
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - uses: dtolnay/rust-toolchain@stable
# - uses: Swatinem/rust-cache@v2
# with:
# cache-all-crates: "true"
# save-if: ${{ github.ref == 'refs/heads/main' }}
# - name: Check semver
# uses: obi1kenobi/cargo-semver-checks-action@v2
# with:
# manifest-path: ./Cargo.toml
# exclude: "dioxus-cli, dioxus-ext"

playwright:
if: github.event.pull_request.draft == false
name: Playwright Tests
Expand Down Expand Up @@ -235,24 +265,3 @@ jobs:
- name: test
run: |
${{ env.RUST_CARGO_COMMAND }} ${{ matrix.platform.command }} ${{ matrix.platform.args }} --target ${{ matrix.platform.target }}

# Coverage is disabled until we can fix it
# coverage:
# name: Coverage
# runs-on: ubuntu-latest
# container:
# image: xd009642/tarpaulin:develop-nightly
# options: --security-opt seccomp=unconfined
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Generate code coverage
# run: |
# apt-get update &&\
# apt-get install build-essential &&\
# apt install libwebkit2gtk-4.0-dev libgtk-3-dev libayatana-appindicator3-dev -y &&\
# cargo +nightly tarpaulin --verbose --all-features --workspace --timeout 120 --out Xml
# - name: Upload to codecov.io
# uses: codecov/codecov-action@v2
# with:
# fail_ci_if_error: false
92 changes: 92 additions & 0 deletions .github/workflows/merge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Runs whenever a PR is merged:
# - attempt to backports fixes
# - upload nightly docs
#
# Future:
# - upload nightly CLI builds
# - upload nightly vscode extension
# - upload benchmarks
# - compute coverge
#
# Note that direct commits to master circumvent this workflow!

name: Backport merged pull request
on:
pull_request_target:
types: [closed]

permissions:
contents: write # so it can comment
pull-requests: write # so it can create pull requests

jobs:
# Attempt to backport a merged pull request to the latest stable release

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jkelleyrtp It's great to see you're trying out backport-action 🙌

By default, backport-action only backports pull requests with a label matching the regex ^backport ([^ ]+)$. If you want to always backport to a specific branch instead of having to label pull requests, you can use the target_branches input.

For example, if you want to always backport to the latest stable release branch, and this branch is called latest-stable, you can use:

uses: korthout/backport-action@v2
with:
  target_branches: 'latest-stable'

backport:
name: Backport pull request
runs-on: ubuntu-latest

# Don't run on closed unmerged pull requests, or pull requests with the "breaking" label
if: github.event.pull_request.merged && !contains(github.event.pull_request.labels.*.name, 'breaking')
steps:
- uses: actions/checkout@v4
- name: Create backport pull requests
uses: korthout/backport-action@v2

# Upload nightly docs to the website
docs:
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/[email protected]
with:
branch: gh-pages
folder: target/doc
target-folder: api-docs/nightly
repository-name: dioxuslabs/docsite
clean: false
token: ${{ secrets.DEPLOY_KEY }}

# Attempt to backport a merged pull request to the latest stable release
#
# If the backported PR is succesfully merged
# Any PR without the "breaking" label will be attempted to be backported to the latest stable release

# Coverage is disabled until we can fix it
# coverage:
# name: Coverage
# runs-on: ubuntu-latest
# container:
# image: xd009642/tarpaulin:develop-nightly
# options: --security-opt seccomp=unconfined
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Generate code coverage
# run: |
# apt-get update &&\
# apt-get install build-essential &&\
# apt install libwebkit2gtk-4.0-dev libgtk-3-dev libayatana-appindicator3-dev -y &&\
# cargo +nightly tarpaulin --verbose --all-features --workspace --timeout 120 --out Xml
# - name: Upload to codecov.io
# uses: codecov/codecov-action@v2
# with:
# fail_ci_if_error: false


46 changes: 46 additions & 0 deletions .github/workflows/promote.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Create a PR that promotes the current main pre-release to the next stable release
#
# IE if the current master version is 0.4.0-rc.7, this will create a PR to promote it to 0.4.0
#
# - update the version in the Cargo.toml to v0.4.0
# - generate a v0.4 branch
# - push the branch to the repository
# - then bump 0.4.0-rc.1 to 0.5.0-rc.0
#
# This means main will never be a "stable" release, and we can always merge breaking changes to main
# and backport them to the latest stable release
#
# This is configured to be ran manually, but could honestly just be a release workflow

on:
workflow_dispatch:

permissions:
actions: write

jobs:
promote:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Publish the next pre-release
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"

# go from eg 0.4.0-rc.7 to 0.4.0, committing the change
cargo workspaces version -y minor

# create a new branch for the release
RELEASE_BRANCH=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].version')
RELEASE_BRANCH=v$(echo $RELEASE_BRANCH | sed 's/\.[0-9]*$//')
git branch $RELEASE_BRANCH

# go from 0.4.0 to 0.5.0-rc.0
cargo workspaces version -y preminor --pre-id rc

# push the new branch to the repository
git push origin $RELEASE_BRANCH

# push the new version to the repository
git push origin main
Loading
Loading