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

feat: move main to the testnet deployment! #253

Merged
merged 21 commits into from
Oct 16, 2024
Merged

feat: move main to the testnet deployment! #253

merged 21 commits into from
Oct 16, 2024

Conversation

giac-mysten
Copy link
Collaborator

No description provided.

dependabot bot and others added 19 commits September 23, 2024 17:41
…e npm_and_yarn group across 1 directory (#214)

Bumps the npm_and_yarn group with 1 update in the /portal/server
directory: [next](https://github.com/vercel/next.js).

Updates `next` from 14.2.5 to 14.2.10
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/next.js/releases">next's
releases</a>.</em></p>
<blockquote>
<h2>v14.2.10</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Remove invalid fallback revalidate value (<a
href="https://redirect.github.com/vercel/next.js/pull/69990">vercel/next.js#69990</a>)</li>
<li>Revert server action optimization (<a
href="https://redirect.github.com/vercel/next.js/pull/69925">vercel/next.js#69925</a>)</li>
<li>Add ability to customize Cache-Control (<a
href="https://redirect.github.com/vercel/next.js/issues/69802">#69802</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/huozhi"><code>@​huozhi</code></a> and <a
href="https://github.com/ijjk"><code>@​ijjk</code></a> for helping!</p>
<h2>v14.2.9</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Revert &quot;Fix esm property def in flight loader (<a
href="https://redirect.github.com/vercel/next.js/issues/66990">#66990</a>)&quot;
(<a
href="https://redirect.github.com/vercel/next.js/issues/69749">#69749</a>)</li>
<li>Disable experimental.optimizeServer by default to fix failed server
action (<a
href="https://redirect.github.com/vercel/next.js/issues/69788">#69788</a>)</li>
<li>Fix middleware fallback: false case (<a
href="https://redirect.github.com/vercel/next.js/issues/69799">#69799</a>)</li>
<li>Fix status code for /_not-found route (<a
href="https://redirect.github.com/vercel/next.js/issues/64058">#64058</a>)
(<a
href="https://redirect.github.com/vercel/next.js/issues/69808">#69808</a>)</li>
<li>Fix metadata prop merging (<a
href="https://redirect.github.com/vercel/next.js/issues/69807">#69807</a>)</li>
<li>create-next-app: fix font file corruption when using import alias
(<a
href="https://redirect.github.com/vercel/next.js/issues/69806">#69806</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/huozhi"><code>@​huozhi</code></a>, <a
href="https://github.com/ztanner"><code>@​ztanner</code></a>, <a
href="https://github.com/ijjk"><code>@​ijjk</code></a>, and <a
href="https://github.com/lubieowoce"><code>@​lubieowoce</code></a> for
helping!</p>
<h2>v14.2.8</h2>
<h2>What's Changed</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes and minor improvements. It does
<strong>not</strong> include all pending features/changes on canary.</p>
</blockquote>
<h3>Support <code>esmExternals</code> in app directory</h3>
<ul>
<li>Support esm externals in app router (<a
href="https://redirect.github.com/vercel/next.js/issues/65041">#65041</a>)</li>
<li>Turbopack: Allow client components from foreign code in app routes
(<a
href="https://redirect.github.com/vercel/next.js/issues/64751">#64751</a>)</li>
<li>Turbopack: add support for esm externals in app dir (<a
href="https://redirect.github.com/vercel/next.js/issues/64918">#64918</a>)</li>
<li>other related PRs: <a
href="https://redirect.github.com/vercel/next.js/issues/66990">#66990</a>
<a
href="https://redirect.github.com/vercel/next.js/issues/66727">#66727</a>
<a
href="https://redirect.github.com/vercel/next.js/issues/66286">#66286</a>
<a
href="https://redirect.github.com/vercel/next.js/issues/65519">#65519</a></li>
</ul>
<h3>Reading cookies set in middleware in components and actions</h3>
<ul>
<li>initialize ALS with cookies in middleware (<a
href="https://redirect.github.com/vercel/next.js/issues/65008">#65008</a>)</li>
<li>fix middleware cookie initialization (<a
href="https://redirect.github.com/vercel/next.js/issues/65820">#65820</a>)</li>
<li>ensure cookies set in middleware can be read in a server action (<a
href="https://redirect.github.com/vercel/next.js/issues/67924">#67924</a>)</li>
<li>fix: merged middleware cookies should preserve options (<a
href="https://redirect.github.com/vercel/next.js/issues/67956">#67956</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vercel/next.js/commit/937651fede26a1cdd8a83aa4636719e466fa7f20"><code>937651f</code></a>
v14.2.10</li>
<li><a
href="https://github.com/vercel/next.js/commit/7ed7f125e07ef0517a331009ed7e32691ba403d3"><code>7ed7f12</code></a>
Remove invalid fallback revalidate value (<a
href="https://redirect.github.com/vercel/next.js/issues/69990">#69990</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/99de0573009208e584d10a810ed84c4b6cf9b4fe"><code>99de057</code></a>
Revert server action optimization (<a
href="https://redirect.github.com/vercel/next.js/issues/69925">#69925</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/24647b9a3a6f0b914423c95a59cd6fcc81caa778"><code>24647b9</code></a>
Add ability to customize Cache-Control (<a
href="https://redirect.github.com/vercel/next.js/issues/69802">#69802</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/6fa8982f8eb766663fd1e11e43621e53fd8e016c"><code>6fa8982</code></a>
v14.2.9</li>
<li><a
href="https://github.com/vercel/next.js/commit/7998745f37ce0ccd8c9cee28c613869a364a1737"><code>7998745</code></a>
test: lock ts type check (<a
href="https://redirect.github.com/vercel/next.js/issues/69889">#69889</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/4bd3849ccde073cc4c64e0ebfb1ec1b6d5a3ca00"><code>4bd3849</code></a>
create-next-app: fix font file corruption when using import alias (<a
href="https://redirect.github.com/vercel/next.js/issues/69806">#69806</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/375680103bbcf581a9b552e06ea2070def4a4936"><code>3756801</code></a>
test: check most possible combination of CNA flags</li>
<li><a
href="https://github.com/vercel/next.js/commit/9a72ad6e618ba81601ff15359f29f72cce45b878"><code>9a72ad6</code></a>
unpin CNA tests from 14.2.3</li>
<li><a
href="https://github.com/vercel/next.js/commit/747d365004e722b7806ba4560edd4d85b51cb67e"><code>747d365</code></a>
Fix metadata prop merging (<a
href="https://redirect.github.com/vercel/next.js/issues/69807">#69807</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vercel/next.js/compare/v14.2.5...v14.2.10">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=next&package-manager=npm_and_yarn&previous-version=14.2.5&new-version=14.2.10)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/MystenLabs/walrus-sites/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexandros Tzimas <[email protected]>
- Add a `blob_hash` field to the site::Resource in the smart contract
- On the site-builder, calculate the blob_hash (using sha256) and
include it to the Resource while publishing the site
- On the portal side, check that the hash of the response from the
aggregator matches the blob_hash

⚠️ Every walrus site needs to be re-deployed since the walrus site smart
contract is changed.

Notes:
- Codspeed continues to return unstable results - still need to mock
network requests.

---------

Co-authored-by: giac-mysten <[email protected]>
**Goal**
Have the following to work same as the way the sui binary works:
```
site-builder --version 
site-builder -V
```

**Why?**
Help Suibase scripts to maintain latest binary versions for its devs.

**Implementation**
Trivial cut&paste of how sui binary already handles this (using Mysten
Labs bin-version crate).

**Tests**

![image](https://github.com/user-attachments/assets/c08ffb75-bb3a-406f-b8e8-5e419212842d)

---------

Co-authored-by: mario4tier <[email protected]>
Co-authored-by: giac-mysten <[email protected]>
From now on each ws site::Resource can contain any type of http response
header.
Http headers are specified in a `ws-responses.json` file which should be
contained in the root directory of the folder that contains the files to
be uploaded on walrus (usually `/dist`).
The file can also be specified using the CLI. 

If the content-type and content-encoding headers are not specified
explicitly, they are deduced using the file extension.
Otherwise defaults are used. 

Related to #210

---------

Co-authored-by: giac-mysten <[email protected]>
A list of many small changes:

* Cleans up some unused structs, removes unused dependencies.
* Bumps the sui versions, prevents cargo deny from complaining.
* Uniforms comments.
* Fetches the correct configuration file from the root site directory,
and does not upload it with the site.
* **Does not reupload unchanged resources** - there was a bug in the
comparison of the headers.

---------

Signed-off-by: giac-mysten <[email protected]>
In this PR, we address the incorrect performance results on the
benchmarks for fetchPage and fetchResource caused by the high variance
of network latency. To achieve more reliable performance data, we mock
the network calls of fetchResource in the benchmarks as we did with the
tests.

Changes:

Vitest Benchmarks with Mocked Network Calls
- Updated benchmarks in page_fetching.bench.ts and resource.bench.ts to
mock system calls, which removes network latency variance.
- Created a mocked SuiClient using vi.fn() to simulate responses for the
fetchPage and fetchResource functions.
- Removed site examples from constants.ts as they are no longer needed, given that they are now mocked.

---------

Co-authored-by: Haris Katimertzis <[email protected]>
Co-authored-by: Alexandros Tzimas <[email protected]>
In case the cache storage of the service worker if full, a
QuotaExceededError will be raised.

To handle it, I delete recursively the oldest 50 entries in the SW storage.
…outes for a site (#233)

* upgrades the contracts to move 2023
* improves the diffing between the on chain site and the local directory
* adds routes to the contracts and the site builder config; the routes
are stored in a VecMap in the `routes` dynamic field.

---------

Signed-off-by: giac-mysten <[email protected]>
Co-authored-by: Alexandros Tzimas <[email protected]>
In this PR, we address the issue of potential missing blobs on Walrus
due to devnet wipes. We ensure that resources in the Sui object that
appear unchanged are re-uploaded to Walrus if necessary, preventing
discrepancies between on-chain data and Walrus storage.

**Changes:**
Unchanged Resource Operation:

- Added ResourceOp::Unchanged to handle resources that appear unchanged
but may still need re-uploading.
-  Calculate unchanged resources inside diff function.
- Modified publish_to_walrus to process both Created and Unchanged
resources.
Update the portal code so that it aligns with the changes made in #220

Changelog:

- [x] Create a `routing.ts` file containing the logic of parsing the
Routes dynamic field.
- [x] Add a function that finds if a path matches a route specified in
the Routes DF.

---------

Signed-off-by: giac-mysten <[email protected]>
Co-authored-by: giac-mysten <[email protected]>
Makes calling the site builder on large sites (tens/hundreds of files)
much faster, especially in the case of small site updates.

* parallelizes calls to the walrus CLI that can be made safely without
locking objects.
* reduces the number of calls to the fullnodes by keeping the number of
shards.
* only performs update checks when the command is a `--force`.

Example of improvement: a site with 50 files of 1KB each (`before ->
after`):
- publish operation: `157s -> 102s`
- update with no changes: `67s -> 5s`
- update with 1-file change `70s -> 15s`

---------

Signed-off-by: giac-mysten <[email protected]>
Makes possible requests that are made on testnet, to be forwarded and
retried on a portal that supports devnet.
This way we can support old deployments that still have not migrated to
testnet.

The [fallback devnet
portal](https://vercel.com/mysten-labs/walrus-sites-sp-devnet-fallback)
is a server side portal running the code of commit
3e693ad (deployed using the branch
[temp/devnet](https://github.com/MystenLabs/walrus-sites/tree/temp/devnet)).

This is the state of our old walrus sites version (before reaching
v.1.0.0), i.e. supporting only the devnet deployments, anything prior to
the current date (2024/10/11).

Bonus:
- Update github actions to use ubuntu 22.04 instead of latest.
…e npm_and_yarn group across 1 directory (#247)

Bumps the npm_and_yarn group with 1 update in the /portal/server
directory: [next](https://github.com/vercel/next.js).

Updates `next` from 14.2.5 to 14.2.10
)

- Upgrade @mysten/sui to 1.12.0
This version includes the `deriveDynamicFieldID`
function needed to calculate the DF object ID
without making a request to a fullnode.
- Replace `client.getDynamicFieldObject` with `deriveDynamicFieldID`.
- Skip `page_fetching` benchmarks. The results we get from it are
misleading and slow down development whenever there are changes
happening in its' dependencies. In the near future we should revisit how
to properly bench this.
#250

TODO (following PR)
- ⚡ Performance improvement: Use `multiGetObjects` to fetch both the
display and the dynamic field object in the same request.
Copy link

vercel bot commented Oct 16, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
walrus-sites-sp ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 16, 2024 10:13am
walrus-sites-sp-devnet-fallback ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 16, 2024 10:13am
walrus-sites-sw ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 16, 2024 10:13am

* ec3cbb5 chore: reupload contracts
* 69daecb chore(move): republish the sites and update move.lock
* 1d908fd chore(portal): change the URL of the aggregator to testnet
* fa7b82e chore(site-builder): change the location of the configuration
file

---------

Signed-off-by: giac-mysten <[email protected]>
Had to update the new aggregator paths
and update the number of checks for the
checkRedirects in fetchResource.
That was a remnant from the deriveDynamicField
PR.
Copy link
Collaborator

@Tzal3x Tzal3x left a comment

Choose a reason for hiding this comment

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

Fair winds and following seas!

@giac-mysten giac-mysten merged commit b16f441 into main Oct 16, 2024
17 of 18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants