mirror of
https://github.com/swc-project/swc.git
synced 2024-12-18 11:11:30 +03:00
140 lines
3.8 KiB
YAML
140 lines
3.8 KiB
YAML
name: Bot
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
GIT_COMMITTER_NAME: "SWC Bot"
|
|
GIT_COMMITTER_EMAIL: "bot@swc.rs"
|
|
|
|
jobs:
|
|
auto-rebase:
|
|
name: Auto rebase
|
|
runs-on: ubuntu-latest
|
|
concurrency: swc-bot-auto-rebase
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
repository: "swc-project/swc"
|
|
ref: "main"
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "16"
|
|
|
|
- name: Install dependencies
|
|
working-directory: scripts/bot
|
|
run: |
|
|
yarn
|
|
|
|
- name: Rebase a PR
|
|
working-directory: scripts/bot
|
|
run: |
|
|
npx ts-node src/auto-rebase.ts
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
|
|
|
bump-crates:
|
|
name: Create cargo bump commit
|
|
runs-on: ubuntu-latest
|
|
concurrency: swc-bot-cargo-bump
|
|
if: >-
|
|
${{ github.event_name == 'push' && !contains(github.event.head_commit.message, 'chore: ') }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
repository: "swc-project/swc"
|
|
ref: "main"
|
|
fetch-depth: 0
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "16"
|
|
|
|
- name: Install latest nightly
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
override: true
|
|
components: rustfmt, clippy
|
|
|
|
- name: Install node dependencies
|
|
working-directory: scripts/bot
|
|
run: |
|
|
yarn
|
|
|
|
- name: Install cargo-mono
|
|
uses: baptiste0928/cargo-install@v1.1.0
|
|
with:
|
|
crate: cargo-mono
|
|
version: "0.3.1"
|
|
locked: true
|
|
|
|
- name: Install git-cliff
|
|
uses: baptiste0928/cargo-install@v1.1.0
|
|
with:
|
|
crate: git-cliff
|
|
version: "0.4.2"
|
|
locked: true
|
|
|
|
- name: Bump crates
|
|
id: bump
|
|
continue-on-error: true
|
|
working-directory: scripts/bot
|
|
run: |
|
|
npx ts-node src/cargo/bump.ts
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
|
|
|
- name: Update changelog
|
|
if: steps.bump.outcome == 'success' && steps.bump.conclusion == 'success'
|
|
run: |
|
|
yarn changelog
|
|
|
|
- name: Update lockfile
|
|
if: steps.bump.outcome == 'success' && steps.bump.conclusion == 'success'
|
|
run: |
|
|
cargo metadata --format-version 1 > /dev/null
|
|
|
|
- name: Create commit
|
|
if: steps.bump.outcome == 'success' && steps.bump.conclusion == 'success'
|
|
run: |
|
|
git add -A
|
|
git commit --no-verify --author="SWC Bot <bot@swc.rs>" -m 'chore: Publish crates'
|
|
|
|
- uses: webfactory/ssh-agent@v0.5.4
|
|
if: steps.bump.outcome == 'success' && steps.bump.conclusion == 'success'
|
|
with:
|
|
ssh-private-key: ${{ secrets.SWC_BOT_SSH }}
|
|
|
|
# Push back, using ssh
|
|
- name: Push back
|
|
if: steps.bump.outcome == 'success' && steps.bump.conclusion == 'success'
|
|
run: |
|
|
git push git@github.com:swc-project/swc.git --no-verify
|
|
|
|
- name: Configure crates.io
|
|
if: steps.bump.outcome == 'success' && steps.bump.conclusion == 'success'
|
|
run: |
|
|
cargo login $CARGO_TOKEN
|
|
env:
|
|
CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }}
|
|
|
|
- name: Publish crates
|
|
if: steps.bump.outcome == 'success' && steps.bump.conclusion == 'success'
|
|
run: |
|
|
npx ts-node scripts/bot/src/cargo/update-constants.ts
|
|
cargo mono publish --no-verify
|
|
cargo mono publish --no-verify
|
|
cargo mono publish --no-verify
|
|
cargo mono publish --no-verify
|
|
cargo mono publish --no-verify
|
|
cargo mono publish --no-verify
|
|
cargo mono publish --no-verify
|
|
cargo mono publish --no-verify
|
|
cargo mono publish --no-verify
|
|
cargo mono publish --no-verify
|