Hugo

Hugo on Netlify generating different results

I’m getting different results from blog post summaries when deploying on Netlify versus locally on my PC. Building on Netlify ignores the summaries written into my markdown files.

Below is my build log. My build command lists the contents of all directories post-build. The command also cats the blog listing file and the markdown for the first listed post.

In particular, note the following lines from the log. These lines show that I do in fact specify a summary in my markdown file.

5:37:48 PM: ---
5:37:48 PM: title: "SQL*Plus Generates HTML"
5:37:48 PM: date: 2004-07-01
5:37:48 PM: summary: "Generate HTML-formatted reports from SQL*Plus for viewing through a browser."
5:37:48 PM: --- 

Yet my summary for some reason gets ignored when building on Netlify.

I’m quite stumped and wonder whether anyone has run into this problem and has any suggestions that I might try.

Following is my complete build log in case it helps:

5:37:31 PM: Build ready to start
5:37:36 PM: build-image version: 9cade8af58c2cf3a17a1e9433d2e979149488837
5:37:36 PM: build-image tag: v3.3.5
5:37:36 PM: buildbot version: 1c753eef258dfb3c0efc0675c36d881d135e648f
5:37:36 PM: Fetching cached dependencies
5:37:36 PM: Starting to download cache of 69.1MB
5:37:36 PM: Finished downloading cache in 464.133362ms
5:37:36 PM: Starting to extract cache
5:37:39 PM: Finished extracting cache in 2.274343427s
5:37:39 PM: Finished fetching cache in 2.780177868s
5:37:39 PM: Starting to prepare the repo for build
5:37:39 PM: Preparing Git Reference refs/heads/master
5:37:40 PM: Starting build script
5:37:40 PM: Installing dependencies
5:37:41 PM: Started restoring cached node version
5:37:43 PM: Finished restoring cached node version
5:37:44 PM: v10.17.0 is already installed.
5:37:45 PM: Now using node v10.17.0 (npm v6.11.3)
5:37:46 PM: Attempting ruby version 2.6.2, read from environment
5:37:47 PM: Using ruby version 2.6.2
5:37:48 PM: Using PHP version 5.6
5:37:48 PM: Started restoring cached go cache
5:37:48 PM: Finished restoring cached go cache
5:37:48 PM: unset GOOS;
5:37:48 PM: unset GOARCH;
5:37:48 PM: export GOROOT='/opt/buildhome/.gimme/versions/go1.12.linux.amd64';
5:37:48 PM: export PATH="/opt/buildhome/.gimme/versions/go1.12.linux.amd64/bin:${PATH}";
5:37:48 PM: go version >&2;
5:37:48 PM: export GIMME_ENV='/opt/buildhome/.gimme/env/go1.12.linux.amd64.env';
5:37:48 PM: go version go1.12 linux/amd64
5:37:48 PM: Installing missing commands
5:37:48 PM: Verify run directory
5:37:48 PM: Executing user command: hugo && ls -l -R &&  cat ./public/outside-the-box/index.html && cat ./content/outside-the-box/sqlplus-generates-html.md
5:37:48 PM: Building sites …
5:37:48 PM:                    | EN
5:37:48 PM: +------------------+----+
5:37:48 PM: Pages            | 10
5:37:48 PM:   Paginator pages  |  0
5:37:48 PM:   Non-page files   |  0
5:37:48 PM:   Static files     |  6
5:37:48 PM:   Processed images |  0
5:37:48 PM:   Aliases          |  0
5:37:48 PM: Sitemaps         |  1
5:37:48 PM:   Cleaned          |  0
5:37:48 PM: Total in 11 ms
5:37:48 PM: .:
5:37:48 PM: total 24
5:37:48 PM: drwxr-xr-x 2 buildbot root    4096 Dec  1 22:37 archetypes
5:37:48 PM: -rw-r--r-- 1 buildbot root     113 Dec  1 22:37 config.toml
5:37:48 PM: drwxr-xr-x 3 buildbot root    4096 Dec  1 22:37 content
5:37:48 PM: drwxr-xr-x 7 buildbot root    4096 Dec  1 22:28 public
5:37:48 PM: drwxr-xr-x 3 buildbot nogroup 4096 Dec  1 22:37 resources
5:37:48 PM: drwxr-xr-x 3 buildbot root    4096 Dec  1 22:28 themes
5:37:48 PM: ./archetypes:
5:37:48 PM: total 4
5:37:48 PM: -rw-r--r-- 1 buildbot root 84 Dec  1 22:37 default.md
5:37:48 PM: ./content:
5:37:48 PM: total 8
5:37:48 PM: -rw-r--r-- 1 buildbot root  192 Dec  1 22:37 _index.md
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 outside-the-box
5:37:48 PM: ./content/outside-the-box:
5:37:48 PM: total 36
5:37:48 PM: -rw-r--r-- 1 buildbot root    85 Dec  1 22:37 _index.md
5:37:48 PM: -rw-r--r-- 1 buildbot root 11591 Dec  1 22:37 sqlplus-generates-html.md
5:37:48 PM: -rw-r--r-- 1 buildbot root 19148 Dec  1 22:37 understanding-the-with-clause.md
5:37:48 PM: ./public:
5:37:48 PM: total 32
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 categories
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 css
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 images
5:37:48 PM: -rw-r--r-- 1 buildbot root 2480 Dec  1 22:37 index.html
5:37:48 PM: -rw-r--r-- 1 buildbot root 2210 Dec  1 22:37 index.xml
5:37:48 PM: drwxr-xr-x 4 buildbot root 4096 Dec  1 22:37 outside-the-box
5:37:48 PM: -rw-r--r-- 1 buildbot root  902 Dec  1 22:37 sitemap.xml
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 tags
5:37:48 PM: ./public/categories:
5:37:48 PM: total 8
5:37:48 PM: -rw-r--r-- 1 buildbot root 1245 Dec  1 22:37 index.html
5:37:48 PM: -rw-r--r-- 1 buildbot root  550 Dec  1 22:37 index.xml
5:37:48 PM: ./public/css:
5:37:48 PM: total 12
5:37:48 PM: -rw-r--r-- 1 buildbot root 4359 Dec  1 22:37 myface.css
5:37:48 PM: -rw-r--r-- 1 buildbot root 3076 Dec  1 22:37 myface_firstTry.css
5:37:49 PM: Starting post processing
5:37:48 PM: ./public/images:
5:37:48 PM: total 632
5:37:48 PM: -rw-r--r-- 1 buildbot root 471591 Dec  1 22:37 FaveHeadshotCroppedTwo.jpg
5:37:48 PM: -rw-r--r-- 1 buildbot root 161891 Dec  1 22:37 FaveHeadshotForTwitterCard.jpg
5:37:48 PM: -rw-r--r-- 1 buildbot root    224 Dec  1 22:37 Favicon.png
5:37:48 PM: -rw-r--r-- 1 buildbot root   2145 Dec  1 22:37 Webclip.png
5:37:48 PM: ./public/outside-the-box:
5:37:48 PM: total 16
5:37:48 PM: -rw-r--r-- 1 buildbot root 2835 Dec  1 22:37 index.html
5:37:48 PM: -rw-r--r-- 1 buildbot root 2280 Dec  1 22:37 index.xml
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 sqlplus-generates-html
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 understanding-the-with-clause
5:37:48 PM: ./public/outside-the-box/sqlplus-generates-html:
5:37:49 PM: Post processing done
5:37:48 PM: total 16
5:37:48 PM: -rw-r--r-- 1 buildbot root 16014 Dec  1 22:37 index.html
5:37:48 PM: ./public/outside-the-box/understanding-the-with-clause:
5:37:48 PM: total 24
5:37:48 PM: -rw-r--r-- 1 buildbot root 23427 Dec  1 22:37 index.html
5:37:48 PM: ./public/tags:
5:37:48 PM: total 8
5:37:48 PM: -rw-r--r-- 1 buildbot root 1221 Dec  1 22:37 index.html
5:37:48 PM: -rw-r--r-- 1 buildbot root  526 Dec  1 22:37 index.xml
5:37:48 PM: ./resources:
5:37:48 PM: total 4
5:37:48 PM: drwxr-xr-x 4 buildbot nogroup 4096 Dec  1 22:37 _gen
5:37:48 PM: ./resources/_gen:
5:37:48 PM: total 8
5:37:49 PM: Site is live
5:37:48 PM: drwxr-xr-x 2 buildbot nogroup 4096 Dec  1 22:37 assets
5:37:48 PM: drwxr-xr-x 2 buildbot nogroup 4096 Dec  1 22:37 images
5:37:48 PM: ./resources/_gen/assets:
5:37:48 PM: total 0
5:37:48 PM: ./resources/_gen/images:
5:37:48 PM: total 0
5:37:48 PM: ./themes:
5:37:48 PM: total 4
5:37:48 PM: drwxr-xr-x 5 buildbot root 4096 Dec  1 22:37 myface
5:37:48 PM: ./themes/myface:
5:37:48 PM: total 20
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 archetypes
5:37:48 PM: drwxr-xr-x 4 buildbot root 4096 Dec  1 22:37 layouts
5:37:48 PM: -rw-r--r-- 1 buildbot root 1081 Dec  1 22:37 LICENSE
5:37:48 PM: drwxr-xr-x 4 buildbot root 4096 Dec  1 22:28 static
5:37:48 PM: -rw-r--r-- 1 buildbot root  432 Dec  1 22:37 theme.toml
5:37:48 PM: ./themes/myface/archetypes:
5:37:48 PM: total 4
5:37:48 PM: -rw-r--r-- 1 buildbot root 8 Dec  1 22:37 default.md
5:37:48 PM: ./themes/myface/layouts:
5:37:48 PM: total 12
5:37:48 PM: -rw-r--r-- 1 buildbot root    0 Dec  1 22:37 404.html
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 _default
5:37:48 PM: -rw-r--r-- 1 buildbot root 2475 Dec  1 22:37 index.html
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 partials
5:37:48 PM: ./themes/myface/layouts/_default:
5:37:48 PM: total 12
5:37:48 PM: -rw-r--r-- 1 buildbot root  250 Dec  1 22:37 baseof.html
5:37:48 PM: -rw-r--r-- 1 buildbot root 1659 Dec  1 22:37 list.html
5:37:48 PM: -rw-r--r-- 1 buildbot root 1448 Dec  1 22:37 single.html
5:37:48 PM: ./themes/myface/layouts/partials:
5:37:48 PM: total 0
5:37:48 PM: -rw-r--r-- 1 buildbot root 0 Dec  1 22:37 footer.html
5:37:48 PM: -rw-r--r-- 1 buildbot root 0 Dec  1 22:37 header.html
5:37:48 PM: -rw-r--r-- 1 buildbot root 0 Dec  1 22:37 head.html
5:37:48 PM: ./themes/myface/static:
5:37:48 PM: total 8
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 css
5:37:48 PM: drwxr-xr-x 2 buildbot root 4096 Dec  1 22:37 images
5:37:48 PM: ./themes/myface/static/css:
5:37:48 PM: total 12
5:37:48 PM: -
5:37:48 PM: rw-r--r-- 1 buildbot root 4359 Dec  1 22:37 myface.css
5:37:48 PM: -rw-r--r-- 1 buildbot root 3076 Dec  1 22:37 myface_firstTry.css
5:37:48 PM: ./themes/myface/static/images:
5:37:48 PM: total 632
5:37:48 PM: -rw-r--r-- 1 buildbot root 471591 Dec  1 22:37 FaveHeadshotCroppedTwo.jpg
5:37:48 PM: -rw-r--r-- 1 buildbot root 161891 Dec  1 22:37 FaveHeadshotForTwitterCard.jpg
5:37:48 PM: -rw-r--r-- 1 buildbot root    224 Dec  1 22:37 Favicon.png
5:37:48 PM: -rw-r--r-- 1 buildbot root   2145 Dec  1 22:37 Webclip.png
5:37:48 PM: <!DOCTYPE html>
5:37:48 PM: <html>
5:37:48 PM: 	<head>
5:37:48 PM: 		<meta charset="utf-8">
5:37:48 PM: 		<title>Outside the Box</title>
5:37:48 PM: 		<meta name="">
5:37:48 PM: 		<meta name="twitter:card" content="summary">
5:37:48 PM: 		<meta name="twitter:site" content="@JonathanGennick">
5:37:48 PM: 		<meta name="twitter:title" content="Outside the Box">
5:37:48 PM: 		<meta name="twitter:description" content="">
5:37:48 PM: 		<meta name="twitter:creator" content="@JonathanGennick">
5:37:48 PM: 		<meta property="og:url" content="https://www.gennick.com/">
5:37:48 PM: 		<meta property="og:type" content="website">
5:37:48 PM: 		<meta property="og:title" content="Outside the Box">
5:37:48 PM: 		<meta property="og:description" content="">
5:37:48 PM: 		<link href="..\css\myface.css" rel="stylesheet" type="text/css">
5:37:48 PM: 		<meta name="viewport" content="width=device-width, initial-scale=1.0">
5:37:48 PM: 		<link rel="shortcut icon" href="../images/favicon.png">
5:37:48 PM: 	</head>
5:37:48 PM: 	<body class="postlistpage">
5:37:48 PM: 		<div class="header">
5:37:48 PM: 			<div class="branding">
5:37:48 PM: 				<a class="sitetitle" href="https://www.gennick.com">Jonathan Gennick</a>
5:37:48 PM: 			</div>
5:37:48 PM: 			<div class="menu">
5:37:48 PM: 				<a class="menuitem" href="https://www.gennick.com/outside-the-box/">Blog</a>
5:37:48 PM: 			</div>
5:37:48 PM: 		</div>
5:37:48 PM: 		<div class="banner">
5:37:48 PM: 			<h1 class="bannertext">Outside the Box</h1>
5:37:48 PM: 		</div>
5:37:48 PM: 		<div class="content">
5:37:48 PM: 			<div class="postlist">
5:37:48 PM: 						<a class="postlistlink" href="https://www.gennick.com/outside-the-box/sqlplus-generates-html/">
5:37:48 PM: 						<div class="postlistitem">
5:37:48 PM: 							<h2 class="postlisttitle">SQL*Plus Generates HTML</h2>
5:37:48 PM: 							<p class="postlistdate">Jul 1, 2004</p>
5:37:48 PM: 							<p class="postlistsummary">One use for the venerable SQL*Plus is to generate simple, character-based reports. You may have used it yourself for that purpose. But did you know that SQL*Plus can also generate HTML?
5:37:48 PM: HTML support has actually been in SQL*Plus since Oracle8i Release 2, though I&rsquo;ve pretty much ignored it over the years. Recently though, I decided to sit down, push the envelope a bit, and just see what I could do using the combination of SQL*Plus and HTML.</p>
5:37:48 PM: 						</div>
5:37:48 PM: 						</a>
5:37:48 PM: 						<a class="postlistlink" href="https://www.gennick.com/outside-the-box/understanding-the-with-clause/">
5:37:48 PM: 						<div class="postlistitem">
5:37:48 PM: 							<h2 class="postlisttitle">Understanding the With Clause</h2>
5:37:48 PM: 							<p class="postlistdate">Jul 1, 2003</p>
5:37:48 PM: 							<p class="postlistsummary">Recently I researched recursive SQL queries for an Oracle Technology Network (OTN) article on Oracle&rsquo;s CONNECT BY syntax. (By the way, that article is scheduled to appear on OTN sometime in July) While researching that article, someone at Oracle pointed me to the SELECT statement&rsquo;s WITH clause. WITH was introduced in the SQL:1999 standard, and made it&rsquo;s way into Oracle in Oracle9i Database Release 1. As defined in the standard, WITH enables you to do two things:</p>
5:37:48 PM: 						</div>
5:37:48 PM: 						</a>
5:37:48 PM: 			</div>
5:37:48 PM: 		</div>
5:37:48 PM: 	</body>
5:37:48 PM: </html>
5:37:48 PM: ---
5:37:48 PM: title: "SQL*Plus Generates HTML"
5:37:48 PM: date: 2004-07-01
5:37:48 PM: summary: "Generate HTML-formatted reports from SQL*Plus for viewing through a browser."
5:37:48 PM: ---
5:37:48 PM: One use for the venerable SQL\*Plus is to generate simple, character-based reports. You may have used it yourself for that purpose. But did you know that SQL\*Plus can also generate HTML?
5:37:48 PM: HTML support has actually been in SQL\*Plus since Oracle8i Release 2, though I've pretty much ignored it over the years. Recently though, I decided to sit down, push the envelope a bit, and just see what I could do using the combination of SQL\*Plus and HTML. I managed to surprise myself. You can generate some very creditable looking web reports using SQL\*Plus.
5:37:48 PM: In this article, I'm going to walk you through my process for generating an HTML report from the results of this query:
5:37:48 PM: 	SELECT e.employee_name,
5:37:48 PM: 		   p.project_name,
5:37:48 PM: 		   SUM(ph.hours_logged) hours_logged,
5:37:48 PM: 		   SUM(ph.dollars_charged) dollars_charged
5:37:48 PM: 	FROM employee e INNER JOIN project_hours ph
5:37:48 PM: 		 ON e.employee_id = ph.employee_id
5:37:48 PM: 		 INNER JOIN project p
5:37:48 PM: 		 ON p.project_id = ph.project_id
5:37:48 PM: 	GROUP BY e.employee_id, e.employee_name,
5:37:48 PM: 			  p.project_id, p.project_name;
5:37:48 PM: ## The Basic Approach
5:37:48 PM: When generating an HTML report using SQL\*Plus, you must decide between the following two options:
5:37:48 PM: * SQL\*Plus generates the entire HTML page.
5:37:48 PM: * SQL\*Plus generates HTML only for the detail lines and column headings. You then wrap this detail output with HTML that you write yourself, in order to generate a complete, HTML page.
5:37:48 PM: You can make either approach work, though I have a few issues with approach #1 because of the way that SQL\*Plus writes TTITLE headings into HTML tables. For this article, I'm concentrating on approach #2.
5:37:48 PM: ## Setting the Page Size
5:37:48 PM: One issue you bump up against when using SQL\*Plus to generate HTML is the question of page size. Reports printed on paper tend to extend over many pages, and you usually want column titles printed at the top of each such page. SQL\*Plus provides the PAGESIZE setting to control the number of lines per page.
5:37:48 PM: When it comes to HTML reports, I tend to think in terms of a report being a single, HTML page. It may be a long page, but it's one page. To ensure that I get only one set of column headings at the top of that one page, I've been using the following setting:
5:37:48 PM: 	SET PAGESIZE 50000
5:37:48 PM: 50,000 lines is the largest PAGESIZE value that SQL\*Plus supports. You can use SET PAGESIZE 0 to disable pagination completely, but then you don't get any column headings. By using SET PAGESIZE 50000, you pretty much ensure just one set of column headings, unless your report happens to generate more than 50,000 detail lines, in which case you're going to have a long HTML page indeed, and you might want to rethink what you're doing.
5:37:48 PM: **Note:** You might want column headings to be repeated every so often throughtout your HTML report. That's ok. Nothing wrong with that. Simply set PAGESIZE to a value that you're comfortable with.
5:37:48 PM: ## Specifying HTML Output
5:37:48 PM: Use the SET MARKUP command to request HTML output from SQL\*Plus. For the example in this article, I use the following command and options:
5:37:48 PM: 	SET MARKUP HTML ON TABLE "class=detail cellspacing=0" ENTMAP OFF
5:37:48 PM: The effects of this particular command are as follows:
5:37:48 PM: **SET MARKUP HTML ON**—Requests output in HTML form. Detail rows, and column headings, will be written to an HTML table.
5:37:48 PM: **TABLE "class=detail cellspacing=0"**—Specifies content to be written into the HTML &lt;table> tag, which in this case will be written as:
5:37:48 PM: 	&lt;table class=detail cellspacing=0>
5:37:48 PM: The class lets me use CSS to format the detail table separately from any other tables I may have in my HTML document. I added cellspacing=0 only because I haven't found a reliable way to request that spacing via CSS.
5:37:48 PM: **ENTMAP OFF**—Let's me embed HTML tags in my column headings. You'll see why I want to do this shortly.
5:37:48 PM: My script now consists of two lines:
5:37:48 PM: 	SET PAGESIZE 50000
5:37:48 PM: 	SET MARKUP HTML ON TABLE "class=detail cellspacing=0" ENTMAP OFF
5:37:48 PM: ## Creating Column Headings
5:37:48 PM: You probably know that you use SQL\*Plus' COLUMN command to define the text to use in column headings. For example:
5:37:48 PM: 	COLUMN employee_name HEADING "Employee Name"
5:37:48 PM: One problem you'll run into is that, in HTML, such headings are written into a table cell, and by default the contents of such cells are centered. Thus, the default behavior is for all headings to be centered over their respective columns. Such centering doesn't always look so good. I prefer my text column labels to be aligned left. To that end, I use the following COLUMN command for employee_name:
5:37:48 PM: 	COLUMN employee_name HEADING "&lt;p class=left>Employee Name&lt;/p>" FORMAT A40
5:37:48 PM: This command adds the following two elements:
5:37:48 PM: **&lt;p class=left>...&lt;/p>**—By wrapping my column heading in a &lt;p> tag, and giving it a class, I can use CSS to control the heading's alignment. I can also use CSS to control other aspects of the way the heading is presented.
5:37:48 PM: **FORMAT A40**—Headings for text columns are truncated at the column's maximum length. Here I specify a length of 40 characters, not out of concern for the data in the column, but rather to accomodate the extra, HTML markup in my heading definition.
5:37:48 PM: My desire to embed HTML markup in my column headings is what drove my use of ENTMAP OFF in my SET MARKUP command.
5:37:48 PM: The issue of a column's length is an interesting one. Because SQL\*Plus writes column data to a table, you don't need to bother specifying a length using a COLUMN parameter such as A40. Your browser will simply resize the table in accordance with the data in the cells and the width to which you've set the browser window.
5:37:48 PM: However, you do need to worry about accomodating any extra markup that you embed in your headings. Use A6 in my example above, and SQL\*Plus will truncate my markup to: "&lt;p cla", and that doesn't result in a valid tag. So in an interesting bit of turnabout, you specify column width to accomodate not the data, but its heading.
5:37:48 PM: Following is a new version of my script, showing the four COLUMN commands for my report:
5:37:48 PM: 	SET PAGESIZE 50000
5:37:48 PM: 	SET MARKUP HTML ON TABLE "class=detail cellspacing=0" ENTMAP OFF
5:37:48 PM: 	--Format the columns
5:37:48 PM: 	COLUMN employee_name HEADING "&lt;p class=left>Employee Name&lt;/p>" FORMAT A40
5:37:48 PM: 	COLUMN project_name HEADING "&lt;p class=left>Project Name&lt;/p>" FORMAT A40
5:37:48 PM: 	COLUMN hours_logged HEADING "&lt;p class=right>Hours&lt;/p>" FORMAT 9,999
5:37:48 PM: 	COLUMN dollars_charged HEADING "&lt;p class=right>Dollars&lt;/p>" -
5:37:48 PM: 		   FORMAT $999,999.99
5:37:48 PM: Notice the class names I give the different headings. I use class=left for text columns, and class=right for numeric columns. In my CSS stylesheet for this report, I define the following two styles:
5:37:48 PM: p.left {text-align: left;}
5:37:48 PM: p.right {text-align: right;}
5:37:48 PM: SQL\*Plus takes care of left-aligning text data and right-aligning numeric data. Headings however, would be centered, but for my markup. The &lt;p> tags that I add to the COLUMN commands work in conjunction with these two CSS styles to align column headings in accordance with their respective data types.
5:37:48 PM: By the way, you don't seem to need to worry about truncating your numeric column headings. It isn't necessary to extend your numeric formats to accomodate the number of characters in their respective column headings. With text columns, you do need to worry about accomodating heading width, but not with numeric columns. I'm not entirely sure why that is, but I'm glad that it is.
5:37:48 PM: ## Spooling the Output
5:37:48 PM: All that's left is execute the query and spool the output. There's nothing new about doing those things. Following is the complete, report script:
5:37:48 PM: 	SET PAGESIZE 50000
5:37:48 PM: 	SET MARKUP HTML ON TABLE "class=detail cellspacing=0" ENTMAP OFF
5:37:48 PM: 	--Format the columns
5:37:48 PM: 	COLUMN employee_name HEADING "&lt;p class=left>Employee Name&lt;/p>" FORMAT A40
5:37:48 PM: 	COLUMN project_name HEADING "&lt;p class=left>Project Name&lt;/p>" FORMAT A40
5:37:48 PM: 	COLUMN hours_logged HEADING "&lt;p class=right>Hours&lt;/p>" FORMAT 9,999
5:37:48 PM: 	COLUMN dollars_charged HEADING "&lt;p class=right>Dollars&lt;/p>" -
5:37:48 PM: 		   FORMAT $999,999.99
5:37:48 PM: 	--Turn off feedback and set TERMOUT off to prevent the
5:37:48 PM: 	--report being scrolled to the screen.
5:37:48 PM: 	SET FEEDBACK OFF
5:37:48 PM: 	SET TERMOUT OFF
5:37:48 PM: 	--Execute the query to generate the report.
5:37:48 PM: 	SPOOL middle.html
5:37:48 PM: 	SELECT e.employee_name,
5:37:48 PM: 		   p.project_name,
5:37:48 PM: 		   SUM(ph.hours_logged) hours_logged,
5:37:48 PM: 		   SUM(ph.dollars_charged) dollars_charged
5:37:48 PM: 	FROM employee e INNER JOIN project_hours ph
5:37:48 PM: 		 ON e.employee_id = ph.employee_id
5:37:48 PM: 		 INNER JOIN project p
5:37:48 PM: 		 ON p.project_id = ph.project_id
5:37:48 PM: 	GROUP BY e.employee_id, e.employee_name,
5:37:48 PM: 			  p.project_id, p.project_name;
5:37:48 PM: 	SPOOL OFF
5:37:48 PM: 	EXIT
5:37:48 PM: ## What Do You Get?
5:37:48 PM: The resulting spool file will begin with a blank paragraph, I don't know why.
5:37:48 PM: Next, SQL\*Plus will begin a table for the column headings and report detail. Notice the contents of the &lt;table> tag reflect what I specified in the SET MARKUP command's TABLE parameter:
5:37:48 PM: 	<table class=detail cellspacing=0>
5:37:48 PM: The table will begin with a row of column headings, which are marked up using HTML's &lt;th> tags. You can see in these headings, the &lt;p> tags from my COLUMN commands:
5:37:48 PM: 	<tr>
5:37:48 PM: 	<th scope="col">
5:37:48 PM: 	<p class=left>Employee Name&lt;/p>
5:37:48 PM: 	</th>
5:37:48 PM: 	<th scope="col">
5:37:48 PM: 	<p class=left>Project Name&lt;/p>
5:37:48 PM: 	</th>
5:37:48 PM: 	<th scope="col">
5:37:48 PM: 	<p class=right>Hours&lt;/p>
5:37:48 PM: 	</th>
5:37:48 PM: 	<th scope="col">
5:37:48 PM: 	<p class=right>Dollars&lt;/p>
5:37:48 PM: 	</th>
5:37:48 PM: 	</tr>
5:37:48 PM: Next will be the rows of data, written into the same HTML table, but using &lt;td> tags. Here's the first row:
5:37:48 PM: 	<tr>
5:37:48 PM: 	<td>
5:37:48 PM: 	Marusia Churai
5:37:48 PM: 	</td>
5:37:48 PM: 	<td>
5:37:48 PM: 	Corporate Web Site
5:37:48 PM: 	</td>
5:37:48 PM: 	<td align="right">
5:37:48 PM: 		20
5:37:48 PM: 	</td>
5:37:48 PM: 	<td align="right">
5:37:48 PM: 	   $3,380.00
5:37:48 PM: 	</td>
5:37:48 PM: 	</tr>
5:37:48 PM: At this point, you don't have an HTML page. You've only got a fragment of a page sitting in a file named middle.html.
5:37:48 PM: ## Formatting the Table
5:37:48 PM: My stylesheet contains the following styles to format the query results in the table:
5:37:48 PM: 	table.detail {width: 100%;}
5:37:48 PM: 	table.detail td {padding-left: 5px; padding-right: 5px;
5:37:48 PM: 					 background: #eeeeee; color: black;}
5:37:48 PM: 	table.detail th {padding-left: 5px; padding-right: 5px;
5:37:48 PM: 					 text-decoration: underline;}
5:37:48 PM: The first, table.detail style simply sets the table width to 100% of the enclosing &lt;div> size. The second style formats the table detail, making the data rows appear in black text on a light-grey background. The third style, this time for the &lt;th> tag, but only in a table of the detail class, underlines the column headings.
5:37:48 PM: Any other styles in the stylesheet that I haven't mentioned yet in this article are there to format those parts of the page not generated by SQL\*Plus, and it's those I want to talk about next.
5:37:48 PM: ## Ok, So Where's the Page?
5:37:48 PM: To make it easy to embed the table generated by SQL\*Plus into a full-blown web page, I created the following two files:
5:37:48 PM: **top.html**—Contains all the markup that should precede the table. In my case, this includes opening &lt;html> and &lt;body> tags, two opening &lt;div> tags, and also all the &lt;head> content, including a link to an external, CSS stylesheet.
5:37:48 PM: **bottom.html**—Contains all the markup that should follow the table, including closing &lt;/div> tags, and also closing &lt;/body> and &lt;/html> tags.
5:37:48 PM: Generating a complete HTML page then, is as simple as concatenating all three files together:
5:37:48 PM: 	cat top.html middle.html bottom.html > report.html
5:37:48 PM: The result, report.html, is a complete web page. You can apply the same technique to generate web reports from SQL\*Plus that fit right in with the overall look-and-feel of your own site, or of any corporate intranet site.
5:37:48 PM: Skipping functions preparation step: no functions directory set
5:37:48 PM: Caching artifacts
5:37:48 PM: Started saving pip cache
5:37:48 PM: Finished saving pip cache
5:37:48 PM: Started saving emacs cask dependencies
5:37:48 PM: Finished saving emacs cask dependencies
5:37:48 PM: Started saving maven dependencies
5:37:48 PM: Finished saving maven dependencies
5:37:48 PM: Started saving boot dependencies
5:37:48 PM: Finished saving boot dependencies
5:37:48 PM: Started saving go dependencies
5:37:48 PM: Finished saving go dependencies
5:37:48 PM: Build script success
5:37:48 PM: Starting to deploy site from 'public'
5:37:48 PM: Creating deploy tree 
5:37:48 PM: 1 new files to upload
5:37:48 PM: 0 new functions to upload
5:38:00 PM: Finished processing build request in 24.505840016s

Hi,

Are you using the same Hugo version both locally and on Netlify?

As it happens, I just now checked on that. Netlify is running an older version of Hugo. Here’s what I’m seeing:

Netlify-> 7:37:33 PM: Hugo Static Site Generator v0.54.0-B1A82C61A/extended linux/amd64 BuildDate: 2019-02-01T10:04:38Z
My PC -> Hugo Static Site Generator v0.60.0-F2DEA9B0 windows/amd64 BuildDate: 2019-11-27T10:11:05Z

Are there release notes somewhere that I can look at? And do I have any influence over what release Netlify is executing?

Release notes on Github or docs; Netlify instructions here.

OK. I hate to admit was so simple, but setting the version on Netlify to 0.60.0 has fixed the problem. The instructions you linked to helped. I hadn’t been aware that I could specify the version to run. Thanks for the heads-up on that.

1 Like

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.