-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
26d8744
commit 971f2ac
Showing
2 changed files
with
171 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
name: sync with fsrs-rs | ||
|
||
on: | ||
schedule: | ||
- cron: '0 0 * * *' # once a day | ||
|
||
env: | ||
CARGO_TERM_COLOR: always | ||
|
||
jobs: | ||
build: | ||
|
||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
|
||
- name: Check out | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
ssh-key: "${{secrets.FSRS_BROWSER_COMMIT_KEY}}" | ||
|
||
- name: Pull latest fsrs-rs | ||
run: | | ||
(cd fsrs-rs && git pull origin fsrs-browser) | ||
changed=$(git status --porcelain | wc -l) | ||
echo "changed=$changed" >> "$GITHUB_ENV" | ||
- name: Cancelling due to no changes | ||
uses: andymckay/[email protected] | ||
if: env.changed == 0 | ||
|
||
# needed since the run is not cancelled immediately | ||
- name: Wait for run cancellation | ||
if: env.changed == 0 | ||
run: while true; do echo "Waiting for job to be cancelled"; sleep 5; done | ||
|
||
- name: Bump fsrs-browser version | ||
run: ./bumpVersion.sh | ||
|
||
- name: Install Rust nightly | ||
uses: dtolnay/rust-toolchain@master | ||
with: | ||
toolchain: nightly-2023-12-21 | ||
components: rustfmt,clippy | ||
targets: wasm32-unknown-unknown | ||
|
||
- name: Add rust-src | ||
run: rustup component add rust-src --toolchain nightly-2023-12-21-x86_64-unknown-linux-gnu | ||
|
||
- name: Set up cargo cache | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
~/.cargo/bin/ | ||
~/.cargo/registry/index/ | ||
~/.cargo/registry/cache/ | ||
~/.cargo/git/db/ | ||
target/ | ||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | ||
restore-keys: ${{ runner.os }}-cargo- | ||
|
||
- name: Run checks | ||
run: ./check.sh | ||
|
||
- name: Setup Node | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: lts/* | ||
|
||
- uses: pnpm/action-setup@v3 | ||
name: Install pnpm | ||
with: | ||
version: 8 | ||
run_install: false | ||
package_json_file: sandbox/package.json | ||
|
||
- name: Get pnpm store directory | ||
shell: bash | ||
run: | | ||
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV | ||
- uses: actions/cache@v4 | ||
name: Setup pnpm cache | ||
with: | ||
path: ${{ env.STORE_PATH }} | ||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | ||
restore-keys: | | ||
${{ runner.os }}-pnpm-store- | ||
- name: Install dependencies | ||
working-directory: ./sandbox | ||
run: pnpm install | ||
|
||
- name: Install Playwright Browsers | ||
working-directory: ./sandbox | ||
run: pnpm exec playwright install --with-deps | ||
|
||
- name: Build Dev | ||
run: ./dev.sh | ||
|
||
- name: Run Playwright dev tests | ||
working-directory: ./sandbox | ||
run: pnpm exec playwright test dev.spec.ts | ||
|
||
- name: Build Prod | ||
run: ./prod.sh | ||
|
||
- name: Run Playwright prod tests | ||
working-directory: ./sandbox | ||
run: pnpm exec playwright test prod.spec.ts | ||
|
||
- uses: actions/upload-artifact@v4 | ||
if: always() | ||
with: | ||
name: playwright-report | ||
path: sandbox/playwright-report/ | ||
retention-days: 30 | ||
|
||
- name: Compute fsrs-rs version and setup git | ||
run: | | ||
set -e | ||
version=$(cd fsrs-rs && cat Cargo.toml \ | ||
| grep --extended-regexp "^version =" \ | ||
| grep --extended-regexp --only-matching "[0-9]+\.[0-9]+.[0-9]+[-\.\+a-zA-Z0-9]*" \ | ||
| head --lines=1) | ||
echo "rsVersion=$version" >> "$GITHUB_ENV" | ||
git config --local user.email "[email protected]" | ||
git config --local user.name "Github Actions" | ||
git add . | ||
- name: Autosync success | ||
if: ${{ success() }} | ||
run: | | ||
git commit -m "auto update fsrs-rs to $rsVersion" | ||
git push | ||
- name: Autosync failure | ||
if: ${{ failure() }} | ||
run: | | ||
git switch -c "fsrs-rs-v$rsVersion" | ||
git commit -m "auto update fsrs-rs to $rsVersion" | ||
git push |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
#!/bin/bash | ||
|
||
rsVersion=$(cd fsrs-rs && cat Cargo.toml | | ||
grep --extended-regexp "^version =" | | ||
grep --extended-regexp --only-matching "[0-9]+\.[0-9]+.[0-9]+[-\.\+a-zA-Z0-9]*" | | ||
head --lines=1) | ||
|
||
# https://stackoverflow.com/a/6253883 | ||
rsMajor=$(echo $rsVersion | cut -d. -f1) | ||
rsMinor=$(echo $rsVersion | cut -d. -f2) | ||
|
||
oldVersion=$(cat Cargo.toml | | ||
grep --extended-regexp "^version =" | | ||
grep --extended-regexp --only-matching "[0-9]+\.[0-9]+.[0-9]+[-\.\+a-zA-Z0-9]*" | | ||
head --lines=1) | ||
|
||
oldMajor=$(echo $oldVersion | cut -d. -f1) | ||
oldMinor=$(echo $oldVersion | cut -d. -f2) | ||
oldRevision=$(echo $oldVersion | cut -d. -f3) | ||
|
||
newVersion="$rsMajor.$rsMinor.0" | ||
if [[ $rsMajor == $oldMajor && $rsMinor == $oldMinor ]]; then | ||
revision=$(expr $oldRevision + 1) | ||
newVersion="$rsMajor.$rsMinor.$revision" | ||
fi | ||
|
||
# https://github.com/rust-lang/cargo/issues/6583#issue-401816934 | ||
sed -i -e "s/^version = .*/version = \"$newVersion\"/" Cargo.toml |