Skip to content

Commit

Permalink
Merge pull request #217 from plotly/dev
Browse files Browse the repository at this point in the history
Release 1.3.0
  • Loading branch information
etpinard authored Jul 12, 2023
2 parents 5ec76d9 + d01ce73 commit 96aac85
Show file tree
Hide file tree
Showing 118 changed files with 703 additions and 334 deletions.
30 changes: 15 additions & 15 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
version: 2
version: 2.1

orbs:
percy: percy/agent@0.1.3
browser-tools: circleci/browser-tools@1.2.4

jobs:

test:
working_directory: ~/dashjl
docker:
- image: plotly/julia:ci
- image: etpinard/dashjl-tests:0.3.0
auth:
username: dashautomation
password: $DASH_PAT_DOCKERHUB
Expand All @@ -15,6 +19,8 @@ jobs:
steps:
- checkout

- browser-tools/install-browser-tools

- run:
name: ℹ️ CI Context
command: |
Expand All @@ -27,19 +33,15 @@ jobs:
echo "CIRCLE_REPOSITORY_URL: ${CIRCLE_REPOSITORY_URL}"
echo $CIRCLE_JOB > circlejob.txt
- run:
name: 🔎 Unit tests
command: |
julia test/ci_prepare.jl
- run:
name: ⚙️ Integration tests
command: |
julia --project -e 'import Pkg; Pkg.instantiate(); Pkg.update();'
python -m venv venv
. venv/bin/activate
pip install --upgrade pip wheel
git clone --depth 1 https://github.com/plotly/dash.git -b dev dash-main
cd dash-main && pip install -e .[dev,testing] --progress-bar off && cd ~/dashjl
export PATH=$PATH:/home/circleci/.local/bin/
cd dash-main && pip install -e .[ci,dev,testing] --progress-bar off && cd ..
pytest --headless --nopercyfinalize --junitxml=test-reports/dashjl.xml --percy-assets=test/assets/ test/integration/
- store_artifacts:
path: test-reports
Expand All @@ -48,13 +50,11 @@ jobs:
- store_artifacts:
path: /tmp/dash_artifacts

- run:
name: 🦔 percy finalize
command: npx percy finalize --all

workflows:
version: 2
build:
jobs:
- "test"
when: false # disable this workflow until Percy tests are functional again
- test
- percy/finalize_all:
requires:
- test
5 changes: 0 additions & 5 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,3 @@ CI:
enhancement:
- "src/*.jl"
- "./*"





2 changes: 1 addition & 1 deletion .github/workflows/CompatHelper.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ jobs:
- name: CompatHelper.main()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: julia -e 'using CompatHelper; CompatHelper.main()'
run: julia -e 'using CompatHelper; CompatHelper.main()'
4 changes: 2 additions & 2 deletions .github/workflows/jl_test.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Run Julia tests
name: Julia tests

on: [push, pull_request]

Expand All @@ -8,7 +8,7 @@ jobs:
strategy:
fail-fast: false
matrix:
jl_version: ["1.6", "1.8"]
jl_version: ["1.6", "1.8", "1.9"]
steps:
- uses: actions/checkout@v2
- uses: julia-actions/setup-julia@v1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/label.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/labeler@v2
- uses: actions/labeler@v4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
34 changes: 27 additions & 7 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,35 @@
name: Lint Markdown
name: Lint

on: [push, pull_request]

jobs:
test:
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v1
uses: actions/setup-node@v3
with:
node-version: '12.x'
- run: npm install -g markdownlint-cli@0.23.2
- run: markdownlint '**/*.md' --ignore node_modules
node-version: '18'
- name: "Lint markdown files"
run: |
npm install -g markdownlint-cli
markdownlint '**/*.md' --ignore-path=.gitignore
- name: "No trailing whitespaces at EOLs"
run: |
EXIT_CODE=0
git --no-pager grep --full-name -I -n -e ' $' . && EXIT_CODE=1
exit $EXIT_CODE
- name: "No tab characters"
run: |
EXIT_CODE=0
git --no-pager grep --full-name -I -n -P '\t' . && EXIT_CODE=1
exit $EXIT_CODE
- name: "Newline at EOF"
run: |
EXIT_CODE=0
for f in $(git --no-pager grep --full-name -I -l ''); do
tail -c1 "$f" | read -r _ || echo "$f"
tail -c1 "$f" | read -r _ || EXIT_CODE=1
done
exit $EXIT_CODE
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ docs/build
venv
*.pyc
tmp
gen_resources/build
gen_resources/build
dash-main
3 changes: 3 additions & 0 deletions .markdownlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,6 @@ MD026: false

# MD032 Lists should be surrounded by blank lines
MD032: false

# MD033 Inline HTML
MD033: false
6 changes: 3 additions & 3 deletions Artifacts.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[dash_resources]
git-tree-sha1 = "c857e355d2c21dfc458fb315371431dda2506109"
git-tree-sha1 = "cf73063fdfc374bc98925f87ac967051cdee66e5"

[[dash_resources.download]]
sha256 = "4ff3910a8ff1f5420784397cfc6ad80341bbe03f1010eab38dcb9b8ce2423310"
url = "https://github.com/plotly/DashCoreResources/releases/download/v2.0.0+0/DashCoreResources.v2.0.0.tar.gz"
sha256 = "c0fda20e816034b8f97f779af8b3081d3578164649d9ff6c21a8146d4af52d96"
url = "https://github.com/plotly/DashCoreResources/releases/download/v2.10.2+0/DashCoreResources.v2.10.2.tar.gz"
160 changes: 160 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# Contributor Guide

## Git

We use the `dev` branch for development. All feature branches should be based
off `dev`.

The `master` branch corresponds to the latest release. We deploy to [Julia
General Registry][jgr] and `git tag -a` off `master`.

## Running the unit tests (aka Julia tests)

```sh
git clone git@github.com:plotly/Dash.jl.git
cd Dash.jl
julia
```

```jl
julia> import Pkg
julia> Pkg.activate(".")
julia> Pkg.instantiate()
julia> Pkg.update()
julia> Pkg.test()
```

To run the unit tests for multiple versions of Julia, we recommend using [`juliaup`][juliaup].

## Running the integration tests

The integration tests make use of the [`dash.testing`][testing] module part of
the Python version of dash.

Instructions on how to install the required system dependencies can be found
in the [dash Contributor Guide][dash-cg].

Then,

```sh
cd Dash.jl
git clone --depth 1 https://github.com/plotly/dash.git -b dev dash-main
python3 -m venv venv
pip install --upgrade pip wheel
cd dash-main && pip install -e .[ci,dev,testing] && cd ..dash
pytest --headless --nopercyfinalize --percy-assets=test/assets/ test/integration/
```

Alternatively, one can run the integration tests using the same Docker
image as for our CircleCI test runs. See the [Docker image guide][docker-test]
for the details.

## Updating the resources

See the [Generate Dash.jl artifacts][resources].

## Updating the CircleCI Docker image

See the [Docker image guide][docker-update].

## Code Style

- indent with 4 spaces (no tabs),
- no whitespaces at EOLs,
- add a single newline at EOFs.

See the [`lint.yml` workflow][lint] for the details.

## Making a release

**Please follow the steps in order!** For example, running `git tag -a` before
`@JuliaRegistrator register` will lead to a failed release!

In the following steps, note that "X.Y.Z" refers to the new version we are
releasing.

### step 1

Make sure the [unit tests][jltest] and [CircleCI integration tests][circlecI]
are passing.

### step 2

Make a [PR][compare] with `master` as the _base_ branch and `dev` as _compare_ branch.

For consistency, name the PR: "Release X.Y.Z"

### step 3

Bump the `version` field in the `Project.toml` (following [semver][semver]) and then

```sh
git commit -m "X.Y.Z"
```

**N.B.** use `X.Y.Z` not `vX.Y.Z` in the commit message, the leading `v` is
reserved for git tags.

### step 4

Wait for approval and then merge the PR onto `master`.

### step 5

Navigate on GitHub to the merge commit from the `master` branch e.g. this
[one][ex-commit] and then add the following comment:

```sh
@JuliaRegistrator register branch=master
```

which tells the [Julia Registrator][registrator] to create a PR to the
[General Registry][jgr] e.g. this [one][ex-jgr-pr].

### step 6

Wait for the Julia Registry PR to be merged. If things go well, this should be
automatic!

### step 7

Off `master`, create and push a new git tag with:

```sh
git checkout master
git tag -a vX.Y.Z # N.B. leading `v`
git push --tags
```

### step 8

Go the [release page][releases] and create a new release,
name it "Version X.Y.Z" for consistency and fill out sections:

- _What's Changed_, which should include items for all the PRs merged since the last release
- _New Contributor_, which should include mention of all the first-time contributors

finally, place a [GitHub compare link][compare] between the last release and X.Y.Z
e.g. this [one][ex-diff].

### step 9

you are done :tada:

[jgr]: https://github.com/JuliaRegistries/General
[juliaup]: https://github.com/JuliaLang/juliaup
[testing]: https://dash.plotly.com/testing#end-to-end-tests
[dash-cg]: https://github.com/plotly/dash/blob/dev/CONTRIBUTING.md#tests
[resources]: ./gen_resources/README.md
[docker-test]: ./build/README.md#local-usage
[docker-update]: ./build/README.md#how-to-update-the-docker-image
[lint]: ./.github/workflows/lint.yml
[jltest]: https://github.com/plotly/Dash.jl/actions/workflows/jl_test.yml?query=branch%3Adev
[circlecI]: https://app.circleci.com/pipelines/github/plotly/Dash.jl?branch=dev
[semver]: https://pkgdocs.julialang.org/v1/toml-files/#The-version-field
[registrator]: https://github.com/JuliaRegistries/Registrator.jl
[releases]: https://github.com/plotly/Dash.jl/releases
[compare]: https://github.com/plotly/Dash.jl/compare/
[ex-commit]: https://github.com/plotly/Dash.jl/commit/5ec76d9d3360f370097937efd06e5de5a6025888
[ex-jgr-pr]: https://github.com/JuliaRegistries/General/pull/77586
[ex-diff]: https://github.com/plotly/Dash.jl/compare/v1.1.2...v1.2.0
8 changes: 5 additions & 3 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "Dash"
uuid = "1b08a953-4be3-4667-9a23-3db579824955"
authors = ["Chris Parmer <chris@plotly.com>", "Alexandr Romanenko <waralex@gmail.com>"]
version = "1.2.1"
version = "1.3.0"

[deps]
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
Expand All @@ -24,8 +24,9 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6"

[compat]
Aqua = "0.6"
CodecZlib = "0.6, 0.7"
DashBase = "0.1"
DashBase = "0.2"
DashCoreComponents = "2.0.0"
DashHtmlComponents = "2.0.0"
DashTable = "5.0.0"
Expand All @@ -40,7 +41,8 @@ YAML = "0.4.7"
julia = "1.6"

[extras]
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test"]
test = ["Aqua", "Test"]
Loading

0 comments on commit 96aac85

Please sign in to comment.