Skip to main content

Deploy details

Deploy successful for dannyguo

Fix broken link to Twitter in newsletter

PR #70: twitter-newsletter@81a5b4d

Deploy log

Initializing

Complete
7:21:02 PM: Build ready to start
7:21:16 PM: build-image version: fcb0c1b3ada6d25c1cb58e8bc514f5f23cc14f15 (focal)
7:21:16 PM: buildbot version: ee2ef905a4bdb64f7733dd60a718aa00319e6f82
7:21:16 PM: Fetching cached dependencies
7:21:16 PM: Starting to download cache of 248.9MB
7:21:18 PM: Finished downloading cache in 2.417s
7:21:18 PM: Starting to extract cache
7:21:20 PM: Finished extracting cache in 2.022s
7:21:20 PM: Finished fetching cache in 4.528s
7:21:20 PM: Starting to prepare the repo for build
7:21:21 PM: Preparing Git Reference pull/70/head
7:21:22 PM: Custom publish path detected. Proceeding with the specified path: 'dist'
7:21:22 PM: Custom build command detected. Proceeding with the specified command: 'yarn run build'
7:21:23 PM: Starting to install dependencies
7:21:23 PM: Python version set to 3.8
7:21:23 PM: Attempting Ruby version 2.6.2, read from environment
7:21:23 PM: Started restoring cached Ruby version
7:21:23 PM: Finished restoring cached Ruby version
7:21:24 PM: Using Ruby version 2.6.2
7:21:24 PM: Started restoring cached go cache
7:21:24 PM: Finished restoring cached go cache
7:21:24 PM: Installing Go version 1.12 (requested 1.12)
7:21:28 PM: go version go1.12 linux/amd64
7:21:29 PM: Using PHP version 8.0
7:21:30 PM: Started restoring cached Node.js version
7:21:31 PM: Finished restoring cached Node.js version
7:21:31 PM: Attempting Node.js version '18.14.0' from .nvmrc
7:21:32 PM: v18.14.0 is already installed.
7:21:32 PM: Now using node v18.14.0 (npm v9.3.1)
7:21:32 PM: Enabling Node.js Corepack
7:21:32 PM: Started restoring cached build plugins
7:21:32 PM: Finished restoring cached build plugins
7:21:32 PM: Started restoring cached corepack dependencies
7:21:32 PM: Finished restoring cached corepack dependencies
7:21:32 PM: Started restoring cached yarn cache
7:21:32 PM: Finished restoring cached yarn cache
7:21:33 PM: Installing Yarn version 1.17.0
7:21:33 PM: Preparing yarn@1.17.0 for immediate activation...
7:21:33 PM: No yarn workspaces detected
7:21:33 PM: Started restoring cached node modules
7:21:33 PM: Finished restoring cached node modules
7:21:34 PM: Installing npm packages using Yarn version 4.0.2
7:21:35 PM: ➤ YN0000: · Yarn 4.0.2
7:21:35 PM: ➤ YN0000: ┌ Resolution step
7:21:35 PM: ➤ YN0000: └ Completed in 0s 205ms
7:21:35 PM: ➤ YN0000: ┌ Fetch step
7:21:35 PM: ➤ YN0000: └ Completed in 0s 240ms
7:21:35 PM: ➤ YN0000: ┌ Link step
7:21:36 PM: ➤ YN0007: │ esbuild@npm:0.17.19 must be built because it never has been before or the last one failed
7:21:36 PM: ➤ YN0007: │ esbuild@npm:0.18.13 must be built because it never has been before or the last one failed
7:21:36 PM: ➤ YN0000: └ Completed in 1s 22ms
7:21:36 PM: ➤ YN0000: · Done in 1s 658ms
7:21:36 PM: npm packages installed using Yarn
7:21:37 PM: Successfully installed dependencies
7:21:37 PM: Starting build script
7:21:38 PM: Detected 1 framework(s)
7:21:38 PM: "astro" at version "2.8.3"
7:21:38 PM: Section completed: initializing

Building

Complete
7:21:40 PM: Netlify Build
7:21:40 PM: ────────────────────────────────────────────────────────────────
7:21:40 PM:
7:21:40 PM: ❯ Version
7:21:40 PM: @netlify/build 29.39.1
7:21:40 PM:
7:21:40 PM: ❯ Flags
7:21:40 PM: baseRelDir: false
7:21:40 PM: buildId: 661d7e1e1338a00008369ac1
7:21:40 PM: deployId: 661d7e1e1338a00008369ac3
7:21:40 PM:
7:21:40 PM: ❯ Current directory
7:21:40 PM: /opt/build/repo
7:21:40 PM:
7:21:40 PM: ❯ Config file
7:21:40 PM: /opt/build/repo/netlify.toml
7:21:40 PM:
7:21:40 PM: ❯ Context
7:21:40 PM: deploy-preview
7:21:40 PM:
7:21:40 PM: build.command from netlify.toml
7:21:40 PM: ────────────────────────────────────────────────────────────────
7:21:40 PM: ​
7:21:40 PM: $ yarn run build
7:21:42 PM: 07:21:42 PM [content] No content directory found. Skipping type generation.
7:21:42 PM: 07:21:42 PM [build] output target: static
7:21:42 PM: 07:21:42 PM [build] Collecting build info...
7:21:42 PM: 07:21:42 PM [build] Completed in 372ms.
7:21:42 PM: 07:21:42 PM [build] Building static entrypoints...
7:21:49 PM: 07:21:49 PM [build] Completed in 7.34s.
7:21:49 PM:
7:21:49 PM: building client
7:21:51 PM: Completed in 1.56s.
7:21:51 PM:
7:21:51 PM:
7:21:51 PM: generating static routes
7:21:51 PM: src/pages/index.md
7:21:51 PM: └─ /index.html (+12ms)
7:21:51 PM: src/pages/newsletter.astro
7:21:51 PM: └─ /newsletter/index.html (+7ms)
7:21:51 PM: λ src/pages/robots.txt.js
7:21:51 PM: └─ /robots.txt (+1ms)
7:21:51 PM: src/pages/referrals.md
7:21:51 PM: └─ /referrals/index.html (+3ms)
7:21:51 PM: src/pages/friction.md
7:21:51 PM: └─ /friction/index.html (+4ms)
7:21:51 PM: src/pages/problems.md
7:21:51 PM: └─ /problems/index.html (+3ms)
7:21:51 PM: src/pages/projects.md
7:21:51 PM: └─ /projects/index.html (+3ms)
7:21:51 PM: src/pages/search.astro
7:21:51 PM: └─ /search/index.html (+3ms)
7:21:51 PM: src/pages/about.md
7:21:51 PM: └─ /about/index.html (+3ms)
7:21:51 PM: src/pages/books.md
7:21:51 PM: └─ /books/index.html (+3ms)
7:21:51 PM: src/pages/music.md
7:21:51 PM: └─ /music/index.html (+3ms)
7:21:51 PM: src/pages/blog/index.astro
7:21:51 PM: └─ /blog/index.html (+85ms)
7:21:51 PM: src/pages/blog/how-to-use-tasker-to-block-spam-phone-calls-from-a-certain-area-code-on-android.md
7:21:51 PM: └─ /blog/how-to-use-tasker-to-block-spam-phone-calls-from-a-certain-area-code-on-android/index.html (+5ms)
7:21:51 PM: src/pages/blog/how-to-use-a-samsung-galaxy-watch4-as-a-heart-rate-monitor-for-a-peloton-bike.md
7:21:51 PM: └─ /blog/how-to-use-a-samsung-galaxy-watch4-as-a-heart-rate-monitor-for-a-peloton-bike/index.html (+5ms)
7:21:51 PM: src/pages/blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript.md
7:21:51 PM: └─ /blog/how-to-fix-instanceof-not-working-for-custom-errors-in-typescript/index.html (+7ms)
7:21:51 PM: src/pages/blog/how-to-check-if-a-javascript-string-begins-or-ends-with-a-string.md
7:21:51 PM: └─ /blog/how-to-check-if-a-javascript-string-begins-or-ends-with-a-string/index.html (+5ms)
7:21:51 PM: src/pages/blog/how-to-enforce-exhaustive-typescript-enum-mappings-using-records.md
7:21:51 PM: └─ /blog/how-to-enforce-exhaustive-typescript-enum-mappings-using-records/index.html (+4ms)
7:21:51 PM: src/pages/blog/how-to-prevent-a-website-page-from-showing-up-in-search-results.md
7:21:51 PM: └─ /blog/how-to-prevent-a-website-page-from-showing-up-in-search-results/index.html (+4ms)
7:21:51 PM: src/pages/blog/how-to-use-newlines-in-an-environment-variable-file-for-docker.md
7:21:51 PM: └─ /blog/how-to-use-newlines-in-an-environment-variable-file-for-docker/index.html (+4ms)
7:21:51 PM: src/pages/blog/how-to-add-copy-to-clipboard-buttons-to-code-blocks-in-hugo.md
7:21:51 PM: └─ /blog/how-to-add-copy-to-clipboard-buttons-to-code-blocks-in-hugo/index.html (+4ms)
7:21:51 PM: src/pages/blog/how-to-replace-all-instances-of-a-substring-in-javascript.md
7:21:51 PM: └─ /blog/how-to-replace-all-instances-of-a-substring-in-javascript/index.html (+5ms)
7:21:51 PM: src/pages/blog/how-to-improve-interface-responsiveness-with-web-workers.mdx
7:21:51 PM: └─ /blog/how-to-improve-interface-responsiveness-with-web-workers/index.html (+36ms)
7:21:51 PM: src/pages/blog/how-to-break-and-continue-in-nested-loops-in-javascript.md
7:21:51 PM: └─ /blog/how-to-break-and-continue-in-nested-loops-in-javascript/index.html (+4ms)
7:21:51 PM: src/pages/blog/optional-chaining-and-nullish-coalescing-in-javascript.md
7:21:51 PM: └─ /blog/optional-chaining-and-nullish-coalescing-in-javascript/index.html (+4ms)
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/the-leap-from-computer-science-to-software-engineering.md
7:21:51 PM: src/pages/blog/using-mailgun-for-a-free-custom-domain-email-address.mdx
7:21:51 PM: └─ /blog/using-mailgun-for-a-free-custom-domain-email-address/index.html (+7ms)
7:21:51 PM: src/pages/blog/how-to-disable-5g-for-a-samsung-galaxy-s21-fe-phone.md
7:21:51 PM: └─ /blog/how-to-disable-5g-for-a-samsung-galaxy-s21-fe-phone/index.html (+5ms)
7:21:51 PM: src/pages/blog/rendering-sibling-elements-in-react-using-fragments.md
7:21:51 PM: └─ /blog/rendering-sibling-elements-in-react-using-fragments/index.html (+6ms)
7:21:51 PM: src/pages/blog/using-fuse.js-to-add-dynamic-search-to-a-react-app.md
7:21:51 PM: └─ /blog/using-fuse.js-to-add-dynamic-search-to-a-react-app/index.html (+4ms)
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/contributing-to-retirement-as-a-medical-resident.md
7:21:51 PM: src/pages/blog/how-to-convert-any-javascript-value-to-a-boolean.md
7:21:51 PM: └─ /blog/how-to-convert-any-javascript-value-to-a-boolean/index.html (+4ms)
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/one-year-of-spaced-repetition-learning-with-anki.md
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/manage-your-dotfiles-and-configuration-with-git.md
7:21:51 PM: src/pages/blog/migrating-from-authy-to-bitwarden-for-2fa-codes.md
7:21:51 PM: └─ /blog/migrating-from-authy-to-bitwarden-for-2fa-codes/index.html (+4ms)
7:21:51 PM: src/pages/blog/updating-my-favicon-courtesy-of-randall-munroe.md
7:21:51 PM: └─ /blog/updating-my-favicon-courtesy-of-randall-munroe/index.html (+3ms)
7:21:51 PM: src/pages/blog/automating-turbotax-data-entry-with-puppeteer.mdx
7:21:51 PM: └─ /blog/automating-turbotax-data-entry-with-puppeteer/index.html (+12ms)
7:21:51 PM: src/pages/blog/fixing-macbook-pro-thermal-performance-issues.md
7:21:51 PM: └─ /blog/fixing-macbook-pro-thermal-performance-issues/index.html (+3ms)
7:21:51 PM: src/pages/blog/thinking-in-binaries-spectrums-and-dimensions.md
7:21:51 PM: └─ /blog/thinking-in-binaries-spectrums-and-dimensions/index.html (+4ms)
7:21:51 PM: src/pages/blog/animated-multiline-link-underlines-with-css.mdx
7:21:51 PM: └─ /blog/animated-multiline-link-underlines-with-css/index.html (+5ms)
7:21:51 PM: src/pages/blog/forex-trading-for-fun-and-luckily-profit.md
7:21:51 PM: └─ /blog/forex-trading-for-fun-and-luckily-profit/index.html (+3ms)
7:21:51 PM: src/pages/blog/how-to-keep-your-js-libraries-up-to-date.md
7:21:51 PM: └─ /blog/how-to-keep-your-js-libraries-up-to-date/index.html (+3ms)
7:21:51 PM: src/pages/blog/the-introductory-guide-to-assemblyscript.md
7:21:51 PM: └─ /blog/the-introductory-guide-to-assemblyscript/index.html (+3ms)
7:21:51 PM: src/pages/blog/I-published-my-aws-secret-key-to-github.md
7:21:51 PM: └─ /blog/I-published-my-aws-secret-key-to-github/index.html (+2ms)
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/my-checklist-for-opening-a-pull-request.md
7:21:51 PM: src/pages/blog/a-code-review-of-my-earliest-projects.md
7:21:51 PM: └─ /blog/a-code-review-of-my-earliest-projects/index.html (+4ms)
7:21:51 PM: src/pages/blog/remap-caps-lock-to-escape-and-control.md
7:21:51 PM: └─ /blog/remap-caps-lock-to-escape-and-control/index.html (+3ms)
7:21:51 PM: src/pages/blog/how-to-get-a-free-s-mime-certificate.md
7:21:51 PM: └─ /blog/how-to-get-a-free-s-mime-certificate/index.html (+4ms)
7:21:51 PM: src/pages/blog/is-safari-the-next-internet-explorer.md
7:21:51 PM: └─ /blog/is-safari-the-next-internet-explorer/index.html (+2ms)
7:21:51 PM: src/pages/blog/software-engineering-manager-tactics.md
7:21:51 PM: └─ /blog/software-engineering-manager-tactics/index.html (+3ms)
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/the-state-of-static-websites-in-2018.md
7:21:51 PM: src/pages/blog/how-to-use-git-bisect-for-debugging.md
7:21:51 PM: └─ /blog/how-to-use-git-bisect-for-debugging/index.html (+3ms)
7:21:51 PM: src/pages/blog/my-credit-and-debit-card-collection.mdx
7:21:51 PM: └─ /blog/my-credit-and-debit-card-collection/index.html (+3ms)
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/ultimate-hacking-keyboard-v2-review.md
7:21:51 PM: src/pages/blog/my-cat-alerted-me-to-a-ddos-attack.md
7:21:51 PM: └─ /blog/my-cat-alerted-me-to-a-ddos-attack/index.html (+2ms)
7:21:51 PM: src/pages/blog/start-with-a-minimum-viable-system.md
7:21:51 PM: └─ /blog/start-with-a-minimum-viable-system/index.html (+2ms)
7:21:51 PM: src/pages/blog/how-to-concatenate-strings-in-lua.md
7:21:51 PM: └─ /blog/how-to-concatenate-strings-in-lua/index.html (+2ms)
7:21:51 PM: src/pages/blog/momath-hackathon-2018-vortex-pool.mdx
7:21:51 PM: └─ /blog/momath-hackathon-2018-vortex-pool/index.html (+3ms)
7:21:51 PM: src/pages/blog/what-i-learned-by-relearning-html.md
7:21:51 PM: └─ /blog/what-i-learned-by-relearning-html/index.html (+4ms)
7:21:51 PM: src/pages/blog/how-to-swap-column-values-in-sql.md
7:21:51 PM: └─ /blog/how-to-swap-column-values-in-sql/index.html (+2ms)
7:21:51 PM: src/pages/blog/the-history-and-legacy-of-jquery.md
7:21:51 PM: └─ /blog/the-history-and-legacy-of-jquery/index.html (+3ms)
7:21:51 PM: src/pages/blog/building-dynamic-firefox-themes.mdx
7:21:51 PM: └─ /blog/building-dynamic-firefox-themes/index.html (+7ms)
7:21:51 PM: src/pages/blog/custom-website-selection-colors.mdx
7:21:51 PM: └─ /blog/custom-website-selection-colors/index.html (+6ms)
7:21:51 PM: src/pages/blog/the-decline-of-the-macbook-pro.md
7:21:51 PM: └─ /blog/the-decline-of-the-macbook-pro/index.html (+4ms)
7:21:51 PM: src/pages/blog/automating-my-air-conditioner.md
7:21:51 PM: └─ /blog/automating-my-air-conditioner/index.html (+3ms)
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/how-i-pay-less-for-everything.md
7:21:51 PM: src/pages/blog/how-to-handle-pii-in-websites.md
7:21:51 PM: └─ /blog/how-to-handle-pii-in-websites/index.html (+3ms)
7:21:51 PM: src/pages/blog/migrating-from-jekyll-to-hugo.md
7:21:51 PM: └─ /blog/migrating-from-jekyll-to-hugo/index.html (+5ms)
7:21:51 PM: src/pages/blog/my-seatbelt-rule-for-judgment.md
7:21:51 PM: └─ /blog/my-seatbelt-rule-for-judgment/index.html (+3ms)
7:21:51 PM: src/pages/blog/serve-videos-instead-of-gifs.mdx
7:21:51 PM: └─ /blog/serve-videos-instead-of-gifs/index.html (+6ms)
7:21:51 PM: src/pages/blog/clearing-mac-storage-space.md
7:21:51 PM: └─ /blog/clearing-mac-storage-space/index.html (+3ms)
7:21:51 PM: src/pages/blog/building-a-hyper-key-tree.md
7:21:51 PM: └─ /blog/building-a-hyper-key-tree/index.html (+3ms)
7:21:51 PM: src/pages/blog/debates-as-competitions.md
7:21:51 PM: └─ /blog/debates-as-competitions/index.html (+3ms)
7:21:51 PM: src/pages/blog/playwright-vs-puppeteer.md
7:21:51 PM: └─ /blog/playwright-vs-puppeteer/index.html (+4ms)
7:21:51 PM: src/pages/blog/digital-security-coach.md
7:21:51 PM: └─ /blog/digital-security-coach/index.html (+3ms)
7:21:51 PM: src/pages/blog/my-peloton-desk-setup.md
7:21:51 PM: └─ /blog/my-peloton-desk-setup/index.html (+3ms)
7:21:51 PM: src/pages/blog/the-power-of-the-link.md
7:21:51 PM: └─ /blog/the-power-of-the-link/index.html (+5ms)
7:21:51 PM: src/pages/blog/how-i-do-code-review.md
7:21:51 PM: └─ /blog/how-i-do-code-review/index.html (+4ms)
7:21:51 PM: src/pages/blog/making-make-a-readme.mdx
7:21:51 PM: └─ /blog/making-make-a-readme/index.html (+5ms)
7:21:51 PM: src/pages/blog/philanthropy-for-all.md
7:21:51 PM: └─ /blog/philanthropy-for-all/index.html (+3ms)
7:21:51 PM: src/pages/blog/a-tribute-to-kindle.md
7:21:51 PM: └─ /blog/a-tribute-to-kindle/index.html (+3ms)
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/credit-card-rewards.md
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/my-salary-history.md
7:21:51 PM: src/pages/blog/beben-x8-review.md
7:21:51 PM: └─ /blog/beben-x8-review/index.html (+3ms)
7:21:51 PM: src/pages/blog/splurge-stopper.md
7:21:51 PM: └─ /blog/splurge-stopper/index.html (+3ms)
7:21:51 PM: src/pages/blog/great-writing.md
7:21:51 PM: └─ /blog/great-writing/index.html (+3ms)
7:21:51 PM: ⚠️ Skipping draft src/pages/blog/better-cding.md
7:21:51 PM: src/pages/blog/morning-joy.md
7:21:51 PM: └─ /blog/morning-joy/index.html (+3ms)
7:21:51 PM: src/pages/blog/why-i-blog.md
7:21:51 PM: └─ /blog/why-i-blog/index.html (+5ms)
7:21:51 PM: λ src/pages/blog/feed.xml.js
7:21:51 PM: └─ /blog/feed.xml (+33ms)
7:21:51 PM: src/pages/food.md
7:21:51 PM: └─ /food/index.html (+3ms)
7:21:51 PM: src/pages/keys.md
7:21:51 PM: └─ /keys/index.html (+3ms)
7:21:51 PM: src/pages/404.astro
7:21:51 PM: └─ /404.html (+2ms)
7:21:51 PM: Completed in 581ms.
7:21:51 PM:
7:21:51 PM: @astrojs/sitemap: `sitemap-index.xml` is created.
7:21:51 PM: 07:21:51 PM [build] 79 page(s) built in 9.90s
7:21:51 PM: 07:21:51 PM [build] Complete!
7:21:51 PM: ​
7:21:51 PM: (build.command completed in 11.6s)
7:21:51 PM:
7:21:52 PM: (Netlify Build completed in 12.1s)
7:21:52 PM: Section completed: building
7:21:55 PM: Finished processing build request in 39.265s

Deploying

Complete
7:21:51 PM: Deploy site
7:21:51 PM: ────────────────────────────────────────────────────────────────
7:21:51 PM: ​
7:21:51 PM: Starting to deploy site from 'dist'
7:21:51 PM: Calculating files to upload
7:21:52 PM: 1 new files to upload
7:21:52 PM: 0 new functions to upload
7:21:52 PM: Section completed: deploying
7:21:52 PM: Site deploy was successfully initiated
7:21:52 PM: ​
7:21:52 PM: (Deploy site completed in 386ms)

Cleanup

Complete
7:21:52 PM: Netlify Build Complete
7:21:52 PM: ────────────────────────────────────────────────────────────────
7:21:52 PM: ​
7:21:52 PM: Caching artifacts
7:21:52 PM: Started saving node modules
7:21:52 PM: Finished saving node modules
7:21:52 PM: Started saving build plugins
7:21:52 PM: Finished saving build plugins
7:21:52 PM: Started saving corepack cache
7:21:52 PM: Finished saving corepack cache
7:21:52 PM: Started saving yarn cache
7:21:52 PM: Finished saving yarn cache
7:21:52 PM: Started saving pip cache
7:21:52 PM: Finished saving pip cache
7:21:52 PM: Started saving emacs cask dependencies
7:21:52 PM: Finished saving emacs cask dependencies
7:21:52 PM: Started saving maven dependencies
7:21:52 PM: Finished saving maven dependencies
7:21:52 PM: Started saving boot dependencies
7:21:52 PM: Finished saving boot dependencies
7:21:52 PM: Started saving rust rustup cache
7:21:52 PM: Finished saving rust rustup cache
7:21:52 PM: Started saving go dependencies
7:21:52 PM: Finished saving go dependencies
7:21:52 PM: Build script success
7:21:54 PM: Uploading Cache of size 228.4MB
7:21:55 PM: Section completed: cleanup

Post-processing

Complete
7:21:52 PM: Starting post processing
7:21:52 PM: Skipping form detection
7:21:52 PM: Post processing - header rules
7:21:52 PM: Post processing - redirect rules
7:21:52 PM: Post processing done
7:21:52 PM: Section completed: postprocessing
7:21:52 PM: Site is live ✨