Skip to content

Repository files navigation

Build, test and deploy

CNCF.io Developer Instructions

Everyone is welcome to contribute to this project. Please follow these guidelines.

These instructions are based on you having access to the CNCF.io Pantheon account (and the CNCF.io WordPress database).

Install Local Instance

Requirements

  • Install Lando (a Docker Compose utility / abstraction layer). Using Homebrew for installation is not recommended. Lando Docs. Lando includes it's own versions of PHP, Node (14.19.0), NPM.

  • When setting up Lando with the Pantheon recipe it will automatically download Terminus (CLI for interaction with Pantheon). Follow all the instructions on that page to setup a machine token and SSH Authentication. Save the machine token for use in step 2 below.

  • Get a GitHub personal access token to use in place of a password for performing Git operations over HTTPS.

Lando Setup

(these steps were derived from instructions provided by Pantheon)

  1. Clone this repository: git clone git@github.com:cncf/cncf.io.git
  • Note that the repo does not contain all of WordPress, 3rd-party themes and plugins. They will be pulled in via composer in step 4.
  1. Run lando init and use the following values when prompted:
  • From where should we get your app's codebase? > current working directory
  • What recipe do you want to use? > pantheon
  • Enter a Pantheon machine token > [enter the Pantheon token you got above]
  • Which site? > cncfci

If you happen to get an error that looks like this ERROR ==> Need to give this composition a project name! then first run lando init --source pantheon. The command will fail since you already have a git repo. By running it, however, it will remember your auth for Pantheon so you won't have to enter your machine token again and the initial lando init should now work.

  1. Open the .lando.yml file and add the following to the file.
keys:
- pantheon_rsaproxy:
node:
- bs.cncfci.lndo.site:3000excludes:
- vendor
- /app/web/wp-content/themes/cncf-twenty-two/node_modulesservices:
node:
type: 'node:14'ssl: truescanner: falsetooling:
npm:
service: nodenpx:
service: nodenode:
service: nodesniff:
service: appservercmd: /app/vendor/bin/phpcs -nsfix:
service: appservercmd: /app/vendor/bin/phpcbf -swarnings:
service: appservercmd: /app/vendor/bin/phpcs -sdebug:
service: appservercmd: 'touch /app/web/wp-content/debug.log && tail -f /app/web/wp-content/debug.log'description: 'Get real-time WP debug log output'paths:
service: appservercmd: "/app/vendor/bin/phpcs -i"description: "See sniff paths"
  1. Run lando start and note the local site URL provided at the end of the process.

  2. Run lando composer install --no-ansi --no-interaction --optimize-autoloader --no-progress to download dependencies

  3. Run lando pull --code=none --files=none and follow the prompts to download the media files and database from Pantheon:

  • Pull database from? > dev
  1. Run this command to activate/deactivate multiple plugins that can help with local dev or are not needed for local dev. The Load Media Files from Production plugin will load media from the production server instead of needing to download them locally:
lando wp plugin activate debug-bar && lando wp plugin activate query-monitor && lando wp plugin deactivate shortpixel-image-optimiser && lando wp plugin deactivate pantheon-advanced-page-cache && lando wp plugin activate load-media-from-production
  1. You will need to compile the theme css/js before the site will render correctly:

    1. Go to the theme directory: cd web/wp-content/themes/cncf-twenty-two
    2. Install the Node.js dependencies: lando npm install
    3. Compile the files: lando npm run build
  2. Visit the local site URL saved from above. To find it again run lando info.

  3. In the admin you will need to edit the Search & Filter settings. The full url to the result pages are hardcoded in the "Display Results" of each filter. These will need to be set to the corresponding local instance url.

  4. Get your browser to trust the Lando SSL certificate by following these instructions. This step isn't essential but will stop you having to keep bypassing the privacy warning in your browser.

Notes

  • You can stop Lando with lando stop and start it again with lando start. You can turn it off completely with lando poweroff

  • Composer, Terminus, npm and wp-cli commands should be run in Lando rather than on the host machine. This is done by prefixing the desired command with lando. For example, after a change to composer.json, run lando composer update rather than composer update.

  • Repeat steps 6 and 7 above to download a fresh copy of the database.


Theme Development

To activate Browsersync to watch files, run lando npm start in the theme directory. You will then be able to browse the bs.* url listed previously and see the site auto-update whenever there is a change in the underlying source code.


Code Sniffs

The CI process will sniff the code to make sure it complies with WordPress coding standards. All Linux Foundation code should comply with these guidelines.

phpcs and the WordPress Coding Standards for PHP_CodeSniffer come as part of the repo and are installed in the vendor directory by composer.

You can get a report of required fixes on your code by running lando sniff and you can automatically fix some required changes by running lando fix. You can see warnings by running lando warnings.

The commands are setup to use WordPress Coding Standards and to run on the wp-content/themes/ directory as well as on custom plugins. This is controlled by the phpcs.xml file.

It's even more convenient to install into your IDE.

Since the cncf.io repo includes phpcs via Composer, your IDE should use that version of the binary even though you may have phpcs installed system-wide.


Upgrading WordPress core, themes and plugins

The dependencies of this project are managed by Composer. All dependencies of the project are set in composer.json and are pulled in at deploy time according to what is set in composer.lock.

composer.lock is generated from composer.json only when explicitly calling the lando composer update function. Any additional themes or plugins can be added first to composer.json and then lando composer update is run to update composer.lock and pull in the new files. Dependencies are pegged to a version according to the composer versioning rules.

It's good practice to keep WordPress and all plugins set at their latest releases to inherit any security patches and upgraded functionality. Upgrading to a new version, however, sometimes has unintended consequences so it's critical to run all tests before deploying live.

Refreshing external data

The following cron jobs are programmed to pull in data from remote sources for use in the website.

lf_sync_projects
lf_sync_ktps
lf_sync_kcds

To trigger fresh data locally, you can run:

lando wp cron event run lf_sync_kcds

or for remote triggering on a specific environment:

lando terminus wp cncfci.live -- cron event run lf_sync_kcds

To trigger all cron jobs, for example:

lando terminus wp cncfci.dev -- cron event run --all

For other data we use transients to store data:

cncf_homepage_metrics
cncf_whoweare_metrics
cncf_latest_endusers
tech_radars
cncf_project_maturity_data
cncf_eu_playlist
cncf_member_playlist

These can be deleted locally using:

lando wp transient delete cncf_project_maturity_data

These can be deleted remotely using:

lando terminus wp cncfci.dev transient delete cncf_homepage_metrics

About

☁️♮🏛🚧 The CNCF.io WordPress website

Topics

Resources

Code of conduct

Contributing

Stars

107 stars

Watchers

12 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - cncf/cncf.io: ☁️♮🏛🚧 The CNCF.io WordPress website · GitHub
Skip to content

Repository files navigation

Build, test and deploy

CNCF.io Developer Instructions

Everyone is welcome to contribute to this project. Please follow these guidelines.

These instructions are based on you having access to the CNCF.io Pantheon account (and the CNCF.io WordPress database).

Install Local Instance

Requirements

  • Install Lando (a Docker Compose utility / abstraction layer). Using Homebrew for installation is not recommended. Lando Docs. Lando includes it's own versions of PHP, Node (14.19.0), NPM.

  • When setting up Lando with the Pantheon recipe it will automatically download Terminus (CLI for interaction with Pantheon). Follow all the instructions on that page to setup a machine token and SSH Authentication. Save the machine token for use in step 2 below.

  • Get a GitHub personal access token to use in place of a password for performing Git operations over HTTPS.

Lando Setup

(these steps were derived from instructions provided by Pantheon)

  1. Clone this repository: git clone git@github.com:cncf/cncf.io.git
  • Note that the repo does not contain all of WordPress, 3rd-party themes and plugins. They will be pulled in via composer in step 4.
  1. Run lando init and use the following values when prompted:
  • From where should we get your app's codebase? > current working directory
  • What recipe do you want to use? > pantheon
  • Enter a Pantheon machine token > [enter the Pantheon token you got above]
  • Which site? > cncfci

If you happen to get an error that looks like this ERROR ==> Need to give this composition a project name! then first run lando init --source pantheon. The command will fail since you already have a git repo. By running it, however, it will remember your auth for Pantheon so you won't have to enter your machine token again and the initial lando init should now work.

  1. Open the .lando.yml file and add the following to the file.
keys:
- pantheon_rsaproxy:
node:
- bs.cncfci.lndo.site:3000excludes:
- vendor
- /app/web/wp-content/themes/cncf-twenty-two/node_modulesservices:
node:
type: 'node:14'ssl: truescanner: falsetooling:
npm:
service: nodenpx:
service: nodenode:
service: nodesniff:
service: appservercmd: /app/vendor/bin/phpcs -nsfix:
service: appservercmd: /app/vendor/bin/phpcbf -swarnings:
service: appservercmd: /app/vendor/bin/phpcs -sdebug:
service: appservercmd: 'touch /app/web/wp-content/debug.log && tail -f /app/web/wp-content/debug.log'description: 'Get real-time WP debug log output'paths:
service: appservercmd: "/app/vendor/bin/phpcs -i"description: "See sniff paths"
  1. Run lando start and note the local site URL provided at the end of the process.

  2. Run lando composer install --no-ansi --no-interaction --optimize-autoloader --no-progress to download dependencies

  3. Run lando pull --code=none --files=none and follow the prompts to download the media files and database from Pantheon:

  • Pull database from? > dev
  1. Run this command to activate/deactivate multiple plugins that can help with local dev or are not needed for local dev. The Load Media Files from Production plugin will load media from the production server instead of needing to download them locally:
lando wp plugin activate debug-bar && lando wp plugin activate query-monitor && lando wp plugin deactivate shortpixel-image-optimiser && lando wp plugin deactivate pantheon-advanced-page-cache && lando wp plugin activate load-media-from-production
  1. You will need to compile the theme css/js before the site will render correctly:

    1. Go to the theme directory: cd web/wp-content/themes/cncf-twenty-two
    2. Install the Node.js dependencies: lando npm install
    3. Compile the files: lando npm run build
  2. Visit the local site URL saved from above. To find it again run lando info.

  3. In the admin you will need to edit the Search & Filter settings. The full url to the result pages are hardcoded in the "Display Results" of each filter. These will need to be set to the corresponding local instance url.

  4. Get your browser to trust the Lando SSL certificate by following these instructions. This step isn't essential but will stop you having to keep bypassing the privacy warning in your browser.

Notes

  • You can stop Lando with lando stop and start it again with lando start. You can turn it off completely with lando poweroff

  • Composer, Terminus, npm and wp-cli commands should be run in Lando rather than on the host machine. This is done by prefixing the desired command with lando. For example, after a change to composer.json, run lando composer update rather than composer update.

  • Repeat steps 6 and 7 above to download a fresh copy of the database.


Theme Development

To activate Browsersync to watch files, run lando npm start in the theme directory. You will then be able to browse the bs.* url listed previously and see the site auto-update whenever there is a change in the underlying source code.


Code Sniffs

The CI process will sniff the code to make sure it complies with WordPress coding standards. All Linux Foundation code should comply with these guidelines.

phpcs and the WordPress Coding Standards for PHP_CodeSniffer come as part of the repo and are installed in the vendor directory by composer.

You can get a report of required fixes on your code by running lando sniff and you can automatically fix some required changes by running lando fix. You can see warnings by running lando warnings.

The commands are setup to use WordPress Coding Standards and to run on the wp-content/themes/ directory as well as on custom plugins. This is controlled by the phpcs.xml file.

It's even more convenient to install into your IDE.

Since the cncf.io repo includes phpcs via Composer, your IDE should use that version of the binary even though you may have phpcs installed system-wide.


Upgrading WordPress core, themes and plugins

The dependencies of this project are managed by Composer. All dependencies of the project are set in composer.json and are pulled in at deploy time according to what is set in composer.lock.

composer.lock is generated from composer.json only when explicitly calling the lando composer update function. Any additional themes or plugins can be added first to composer.json and then lando composer update is run to update composer.lock and pull in the new files. Dependencies are pegged to a version according to the composer versioning rules.

It's good practice to keep WordPress and all plugins set at their latest releases to inherit any security patches and upgraded functionality. Upgrading to a new version, however, sometimes has unintended consequences so it's critical to run all tests before deploying live.

Refreshing external data

The following cron jobs are programmed to pull in data from remote sources for use in the website.

lf_sync_projects
lf_sync_ktps
lf_sync_kcds

To trigger fresh data locally, you can run:

lando wp cron event run lf_sync_kcds

or for remote triggering on a specific environment:

lando terminus wp cncfci.live -- cron event run lf_sync_kcds

To trigger all cron jobs, for example:

lando terminus wp cncfci.dev -- cron event run --all

For other data we use transients to store data:

cncf_homepage_metrics
cncf_whoweare_metrics
cncf_latest_endusers
tech_radars
cncf_project_maturity_data
cncf_eu_playlist
cncf_member_playlist

These can be deleted locally using:

lando wp transient delete cncf_project_maturity_data

These can be deleted remotely using:

lando terminus wp cncfci.dev transient delete cncf_homepage_metrics

About

☁️♮🏛🚧 The CNCF.io WordPress website

Topics

Resources

Code of conduct

Contributing

Stars

107 stars

Watchers

12 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - cncf/cncf.io: ☁️♮🏛🚧 The CNCF.io WordPress website · GitHub
Skip to content

Repository files navigation

Build, test and deploy

CNCF.io Developer Instructions

Everyone is welcome to contribute to this project. Please follow these guidelines.

These instructions are based on you having access to the CNCF.io Pantheon account (and the CNCF.io WordPress database).

Install Local Instance

Requirements

  • Install Lando (a Docker Compose utility / abstraction layer). Using Homebrew for installation is not recommended. Lando Docs. Lando includes it's own versions of PHP, Node (14.19.0), NPM.

  • When setting up Lando with the Pantheon recipe it will automatically download Terminus (CLI for interaction with Pantheon). Follow all the instructions on that page to setup a machine token and SSH Authentication. Save the machine token for use in step 2 below.

  • Get a GitHub personal access token to use in place of a password for performing Git operations over HTTPS.

Lando Setup

(these steps were derived from instructions provided by Pantheon)

  1. Clone this repository: git clone git@github.com:cncf/cncf.io.git
  • Note that the repo does not contain all of WordPress, 3rd-party themes and plugins. They will be pulled in via composer in step 4.
  1. Run lando init and use the following values when prompted:
  • From where should we get your app's codebase? > current working directory
  • What recipe do you want to use? > pantheon
  • Enter a Pantheon machine token > [enter the Pantheon token you got above]
  • Which site? > cncfci

If you happen to get an error that looks like this ERROR ==> Need to give this composition a project name! then first run lando init --source pantheon. The command will fail since you already have a git repo. By running it, however, it will remember your auth for Pantheon so you won't have to enter your machine token again and the initial lando init should now work.

  1. Open the .lando.yml file and add the following to the file.
keys:
- pantheon_rsaproxy:
node:
- bs.cncfci.lndo.site:3000excludes:
- vendor
- /app/web/wp-content/themes/cncf-twenty-two/node_modulesservices:
node:
type: 'node:14'ssl: truescanner: falsetooling:
npm:
service: nodenpx:
service: nodenode:
service: nodesniff:
service: appservercmd: /app/vendor/bin/phpcs -nsfix:
service: appservercmd: /app/vendor/bin/phpcbf -swarnings:
service: appservercmd: /app/vendor/bin/phpcs -sdebug:
service: appservercmd: 'touch /app/web/wp-content/debug.log && tail -f /app/web/wp-content/debug.log'description: 'Get real-time WP debug log output'paths:
service: appservercmd: "/app/vendor/bin/phpcs -i"description: "See sniff paths"
  1. Run lando start and note the local site URL provided at the end of the process.

  2. Run lando composer install --no-ansi --no-interaction --optimize-autoloader --no-progress to download dependencies

  3. Run lando pull --code=none --files=none and follow the prompts to download the media files and database from Pantheon:

  • Pull database from? > dev
  1. Run this command to activate/deactivate multiple plugins that can help with local dev or are not needed for local dev. The Load Media Files from Production plugin will load media from the production server instead of needing to download them locally:
lando wp plugin activate debug-bar && lando wp plugin activate query-monitor && lando wp plugin deactivate shortpixel-image-optimiser && lando wp plugin deactivate pantheon-advanced-page-cache && lando wp plugin activate load-media-from-production
  1. You will need to compile the theme css/js before the site will render correctly:

    1. Go to the theme directory: cd web/wp-content/themes/cncf-twenty-two
    2. Install the Node.js dependencies: lando npm install
    3. Compile the files: lando npm run build
  2. Visit the local site URL saved from above. To find it again run lando info.

  3. In the admin you will need to edit the Search & Filter settings. The full url to the result pages are hardcoded in the "Display Results" of each filter. These will need to be set to the corresponding local instance url.

  4. Get your browser to trust the Lando SSL certificate by following these instructions. This step isn't essential but will stop you having to keep bypassing the privacy warning in your browser.

Notes

  • You can stop Lando with lando stop and start it again with lando start. You can turn it off completely with lando poweroff

  • Composer, Terminus, npm and wp-cli commands should be run in Lando rather than on the host machine. This is done by prefixing the desired command with lando. For example, after a change to composer.json, run lando composer update rather than composer update.

  • Repeat steps 6 and 7 above to download a fresh copy of the database.


Theme Development

To activate Browsersync to watch files, run lando npm start in the theme directory. You will then be able to browse the bs.* url listed previously and see the site auto-update whenever there is a change in the underlying source code.


Code Sniffs

The CI process will sniff the code to make sure it complies with WordPress coding standards. All Linux Foundation code should comply with these guidelines.

phpcs and the WordPress Coding Standards for PHP_CodeSniffer come as part of the repo and are installed in the vendor directory by composer.

You can get a report of required fixes on your code by running lando sniff and you can automatically fix some required changes by running lando fix. You can see warnings by running lando warnings.

The commands are setup to use WordPress Coding Standards and to run on the wp-content/themes/ directory as well as on custom plugins. This is controlled by the phpcs.xml file.

It's even more convenient to install into your IDE.

Since the cncf.io repo includes phpcs via Composer, your IDE should use that version of the binary even though you may have phpcs installed system-wide.


Upgrading WordPress core, themes and plugins

The dependencies of this project are managed by Composer. All dependencies of the project are set in composer.json and are pulled in at deploy time according to what is set in composer.lock.

composer.lock is generated from composer.json only when explicitly calling the lando composer update function. Any additional themes or plugins can be added first to composer.json and then lando composer update is run to update composer.lock and pull in the new files. Dependencies are pegged to a version according to the composer versioning rules.

It's good practice to keep WordPress and all plugins set at their latest releases to inherit any security patches and upgraded functionality. Upgrading to a new version, however, sometimes has unintended consequences so it's critical to run all tests before deploying live.

Refreshing external data

The following cron jobs are programmed to pull in data from remote sources for use in the website.

lf_sync_projects
lf_sync_ktps
lf_sync_kcds

To trigger fresh data locally, you can run:

lando wp cron event run lf_sync_kcds

or for remote triggering on a specific environment:

lando terminus wp cncfci.live -- cron event run lf_sync_kcds

To trigger all cron jobs, for example:

lando terminus wp cncfci.dev -- cron event run --all

For other data we use transients to store data:

cncf_homepage_metrics
cncf_whoweare_metrics
cncf_latest_endusers
tech_radars
cncf_project_maturity_data
cncf_eu_playlist
cncf_member_playlist

These can be deleted locally using:

lando wp transient delete cncf_project_maturity_data

These can be deleted remotely using:

lando terminus wp cncfci.dev transient delete cncf_homepage_metrics

About

☁️♮🏛🚧 The CNCF.io WordPress website

Topics

Resources

Code of conduct

Contributing

Stars

107 stars

Watchers

12 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - cncf/cncf.io: ☁️♮🏛🚧 The CNCF.io WordPress website · GitHub
Skip to content

Repository files navigation

Build, test and deploy

CNCF.io Developer Instructions

Everyone is welcome to contribute to this project. Please follow these guidelines.

These instructions are based on you having access to the CNCF.io Pantheon account (and the CNCF.io WordPress database).

Install Local Instance

Requirements

  • Install Lando (a Docker Compose utility / abstraction layer). Using Homebrew for installation is not recommended. Lando Docs. Lando includes it's own versions of PHP, Node (14.19.0), NPM.

  • When setting up Lando with the Pantheon recipe it will automatically download Terminus (CLI for interaction with Pantheon). Follow all the instructions on that page to setup a machine token and SSH Authentication. Save the machine token for use in step 2 below.

  • Get a GitHub personal access token to use in place of a password for performing Git operations over HTTPS.

Lando Setup

(these steps were derived from instructions provided by Pantheon)

  1. Clone this repository: git clone git@github.com:cncf/cncf.io.git
  • Note that the repo does not contain all of WordPress, 3rd-party themes and plugins. They will be pulled in via composer in step 4.
  1. Run lando init and use the following values when prompted:
  • From where should we get your app's codebase? > current working directory
  • What recipe do you want to use? > pantheon
  • Enter a Pantheon machine token > [enter the Pantheon token you got above]
  • Which site? > cncfci

If you happen to get an error that looks like this ERROR ==> Need to give this composition a project name! then first run lando init --source pantheon. The command will fail since you already have a git repo. By running it, however, it will remember your auth for Pantheon so you won't have to enter your machine token again and the initial lando init should now work.

  1. Open the .lando.yml file and add the following to the file.
keys:
- pantheon_rsaproxy:
node:
- bs.cncfci.lndo.site:3000excludes:
- vendor
- /app/web/wp-content/themes/cncf-twenty-two/node_modulesservices:
node:
type: 'node:14'ssl: truescanner: falsetooling:
npm:
service: nodenpx:
service: nodenode:
service: nodesniff:
service: appservercmd: /app/vendor/bin/phpcs -nsfix:
service: appservercmd: /app/vendor/bin/phpcbf -swarnings:
service: appservercmd: /app/vendor/bin/phpcs -sdebug:
service: appservercmd: 'touch /app/web/wp-content/debug.log && tail -f /app/web/wp-content/debug.log'description: 'Get real-time WP debug log output'paths:
service: appservercmd: "/app/vendor/bin/phpcs -i"description: "See sniff paths"
  1. Run lando start and note the local site URL provided at the end of the process.

  2. Run lando composer install --no-ansi --no-interaction --optimize-autoloader --no-progress to download dependencies

  3. Run lando pull --code=none --files=none and follow the prompts to download the media files and database from Pantheon:

  • Pull database from? > dev
  1. Run this command to activate/deactivate multiple plugins that can help with local dev or are not needed for local dev. The Load Media Files from Production plugin will load media from the production server instead of needing to download them locally:
lando wp plugin activate debug-bar && lando wp plugin activate query-monitor && lando wp plugin deactivate shortpixel-image-optimiser && lando wp plugin deactivate pantheon-advanced-page-cache && lando wp plugin activate load-media-from-production
  1. You will need to compile the theme css/js before the site will render correctly:

    1. Go to the theme directory: cd web/wp-content/themes/cncf-twenty-two
    2. Install the Node.js dependencies: lando npm install
    3. Compile the files: lando npm run build
  2. Visit the local site URL saved from above. To find it again run lando info.

  3. In the admin you will need to edit the Search & Filter settings. The full url to the result pages are hardcoded in the "Display Results" of each filter. These will need to be set to the corresponding local instance url.

  4. Get your browser to trust the Lando SSL certificate by following these instructions. This step isn't essential but will stop you having to keep bypassing the privacy warning in your browser.

Notes

  • You can stop Lando with lando stop and start it again with lando start. You can turn it off completely with lando poweroff

  • Composer, Terminus, npm and wp-cli commands should be run in Lando rather than on the host machine. This is done by prefixing the desired command with lando. For example, after a change to composer.json, run lando composer update rather than composer update.

  • Repeat steps 6 and 7 above to download a fresh copy of the database.


Theme Development

To activate Browsersync to watch files, run lando npm start in the theme directory. You will then be able to browse the bs.* url listed previously and see the site auto-update whenever there is a change in the underlying source code.


Code Sniffs

The CI process will sniff the code to make sure it complies with WordPress coding standards. All Linux Foundation code should comply with these guidelines.

phpcs and the WordPress Coding Standards for PHP_CodeSniffer come as part of the repo and are installed in the vendor directory by composer.

You can get a report of required fixes on your code by running lando sniff and you can automatically fix some required changes by running lando fix. You can see warnings by running lando warnings.

The commands are setup to use WordPress Coding Standards and to run on the wp-content/themes/ directory as well as on custom plugins. This is controlled by the phpcs.xml file.

It's even more convenient to install into your IDE.

Since the cncf.io repo includes phpcs via Composer, your IDE should use that version of the binary even though you may have phpcs installed system-wide.


Upgrading WordPress core, themes and plugins

The dependencies of this project are managed by Composer. All dependencies of the project are set in composer.json and are pulled in at deploy time according to what is set in composer.lock.

composer.lock is generated from composer.json only when explicitly calling the lando composer update function. Any additional themes or plugins can be added first to composer.json and then lando composer update is run to update composer.lock and pull in the new files. Dependencies are pegged to a version according to the composer versioning rules.

It's good practice to keep WordPress and all plugins set at their latest releases to inherit any security patches and upgraded functionality. Upgrading to a new version, however, sometimes has unintended consequences so it's critical to run all tests before deploying live.

Refreshing external data

The following cron jobs are programmed to pull in data from remote sources for use in the website.

lf_sync_projects
lf_sync_ktps
lf_sync_kcds

To trigger fresh data locally, you can run:

lando wp cron event run lf_sync_kcds

or for remote triggering on a specific environment:

lando terminus wp cncfci.live -- cron event run lf_sync_kcds

To trigger all cron jobs, for example:

lando terminus wp cncfci.dev -- cron event run --all

For other data we use transients to store data:

cncf_homepage_metrics
cncf_whoweare_metrics
cncf_latest_endusers
tech_radars
cncf_project_maturity_data
cncf_eu_playlist
cncf_member_playlist

These can be deleted locally using:

lando wp transient delete cncf_project_maturity_data

These can be deleted remotely using:

lando terminus wp cncfci.dev transient delete cncf_homepage_metrics

About

☁️♮🏛🚧 The CNCF.io WordPress website

Topics

Resources

Code of conduct

Contributing

Stars

107 stars

Watchers

12 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - cncf/cncf.io: ☁️♮🏛🚧 The CNCF.io WordPress website · GitHub
Skip to content

Repository files navigation

Build, test and deploy

CNCF.io Developer Instructions

Everyone is welcome to contribute to this project. Please follow these guidelines.

These instructions are based on you having access to the CNCF.io Pantheon account (and the CNCF.io WordPress database).

Install Local Instance

Requirements

  • Install Lando (a Docker Compose utility / abstraction layer). Using Homebrew for installation is not recommended. Lando Docs. Lando includes it's own versions of PHP, Node (14.19.0), NPM.

  • When setting up Lando with the Pantheon recipe it will automatically download Terminus (CLI for interaction with Pantheon). Follow all the instructions on that page to setup a machine token and SSH Authentication. Save the machine token for use in step 2 below.

  • Get a GitHub personal access token to use in place of a password for performing Git operations over HTTPS.

Lando Setup

(these steps were derived from instructions provided by Pantheon)

  1. Clone this repository: git clone git@github.com:cncf/cncf.io.git
  • Note that the repo does not contain all of WordPress, 3rd-party themes and plugins. They will be pulled in via composer in step 4.
  1. Run lando init and use the following values when prompted:
  • From where should we get your app's codebase? > current working directory
  • What recipe do you want to use? > pantheon
  • Enter a Pantheon machine token > [enter the Pantheon token you got above]
  • Which site? > cncfci

If you happen to get an error that looks like this ERROR ==> Need to give this composition a project name! then first run lando init --source pantheon. The command will fail since you already have a git repo. By running it, however, it will remember your auth for Pantheon so you won't have to enter your machine token again and the initial lando init should now work.

  1. Open the .lando.yml file and add the following to the file.
keys:
- pantheon_rsaproxy:
node:
- bs.cncfci.lndo.site:3000excludes:
- vendor
- /app/web/wp-content/themes/cncf-twenty-two/node_modulesservices:
node:
type: 'node:14'ssl: truescanner: falsetooling:
npm:
service: nodenpx:
service: nodenode:
service: nodesniff:
service: appservercmd: /app/vendor/bin/phpcs -nsfix:
service: appservercmd: /app/vendor/bin/phpcbf -swarnings:
service: appservercmd: /app/vendor/bin/phpcs -sdebug:
service: appservercmd: 'touch /app/web/wp-content/debug.log && tail -f /app/web/wp-content/debug.log'description: 'Get real-time WP debug log output'paths:
service: appservercmd: "/app/vendor/bin/phpcs -i"description: "See sniff paths"
  1. Run lando start and note the local site URL provided at the end of the process.

  2. Run lando composer install --no-ansi --no-interaction --optimize-autoloader --no-progress to download dependencies

  3. Run lando pull --code=none --files=none and follow the prompts to download the media files and database from Pantheon:

  • Pull database from? > dev
  1. Run this command to activate/deactivate multiple plugins that can help with local dev or are not needed for local dev. The Load Media Files from Production plugin will load media from the production server instead of needing to download them locally:
lando wp plugin activate debug-bar && lando wp plugin activate query-monitor && lando wp plugin deactivate shortpixel-image-optimiser && lando wp plugin deactivate pantheon-advanced-page-cache && lando wp plugin activate load-media-from-production
  1. You will need to compile the theme css/js before the site will render correctly:

    1. Go to the theme directory: cd web/wp-content/themes/cncf-twenty-two
    2. Install the Node.js dependencies: lando npm install
    3. Compile the files: lando npm run build
  2. Visit the local site URL saved from above. To find it again run lando info.

  3. In the admin you will need to edit the Search & Filter settings. The full url to the result pages are hardcoded in the "Display Results" of each filter. These will need to be set to the corresponding local instance url.

  4. Get your browser to trust the Lando SSL certificate by following these instructions. This step isn't essential but will stop you having to keep bypassing the privacy warning in your browser.

Notes

  • You can stop Lando with lando stop and start it again with lando start. You can turn it off completely with lando poweroff

  • Composer, Terminus, npm and wp-cli commands should be run in Lando rather than on the host machine. This is done by prefixing the desired command with lando. For example, after a change to composer.json, run lando composer update rather than composer update.

  • Repeat steps 6 and 7 above to download a fresh copy of the database.


Theme Development

To activate Browsersync to watch files, run lando npm start in the theme directory. You will then be able to browse the bs.* url listed previously and see the site auto-update whenever there is a change in the underlying source code.


Code Sniffs

The CI process will sniff the code to make sure it complies with WordPress coding standards. All Linux Foundation code should comply with these guidelines.

phpcs and the WordPress Coding Standards for PHP_CodeSniffer come as part of the repo and are installed in the vendor directory by composer.

You can get a report of required fixes on your code by running lando sniff and you can automatically fix some required changes by running lando fix. You can see warnings by running lando warnings.

The commands are setup to use WordPress Coding Standards and to run on the wp-content/themes/ directory as well as on custom plugins. This is controlled by the phpcs.xml file.

It's even more convenient to install into your IDE.

Since the cncf.io repo includes phpcs via Composer, your IDE should use that version of the binary even though you may have phpcs installed system-wide.


Upgrading WordPress core, themes and plugins

The dependencies of this project are managed by Composer. All dependencies of the project are set in composer.json and are pulled in at deploy time according to what is set in composer.lock.

composer.lock is generated from composer.json only when explicitly calling the lando composer update function. Any additional themes or plugins can be added first to composer.json and then lando composer update is run to update composer.lock and pull in the new files. Dependencies are pegged to a version according to the composer versioning rules.

It's good practice to keep WordPress and all plugins set at their latest releases to inherit any security patches and upgraded functionality. Upgrading to a new version, however, sometimes has unintended consequences so it's critical to run all tests before deploying live.

Refreshing external data

The following cron jobs are programmed to pull in data from remote sources for use in the website.

lf_sync_projects
lf_sync_ktps
lf_sync_kcds

To trigger fresh data locally, you can run:

lando wp cron event run lf_sync_kcds

or for remote triggering on a specific environment:

lando terminus wp cncfci.live -- cron event run lf_sync_kcds

To trigger all cron jobs, for example:

lando terminus wp cncfci.dev -- cron event run --all

For other data we use transients to store data:

cncf_homepage_metrics
cncf_whoweare_metrics
cncf_latest_endusers
tech_radars
cncf_project_maturity_data
cncf_eu_playlist
cncf_member_playlist

These can be deleted locally using:

lando wp transient delete cncf_project_maturity_data

These can be deleted remotely using:

lando terminus wp cncfci.dev transient delete cncf_homepage_metrics

About

☁️♮🏛🚧 The CNCF.io WordPress website

Topics

Resources

Code of conduct

Contributing

Stars

107 stars

Watchers

12 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - cncf/cncf.io: ☁️♮🏛🚧 The CNCF.io WordPress website · GitHub
Skip to content

Repository files navigation

Build, test and deploy

CNCF.io Developer Instructions

Everyone is welcome to contribute to this project. Please follow these guidelines.

These instructions are based on you having access to the CNCF.io Pantheon account (and the CNCF.io WordPress database).

Install Local Instance

Requirements

  • Install Lando (a Docker Compose utility / abstraction layer). Using Homebrew for installation is not recommended. Lando Docs. Lando includes it's own versions of PHP, Node (14.19.0), NPM.

  • When setting up Lando with the Pantheon recipe it will automatically download Terminus (CLI for interaction with Pantheon). Follow all the instructions on that page to setup a machine token and SSH Authentication. Save the machine token for use in step 2 below.

  • Get a GitHub personal access token to use in place of a password for performing Git operations over HTTPS.

Lando Setup

(these steps were derived from instructions provided by Pantheon)

  1. Clone this repository: git clone git@github.com:cncf/cncf.io.git
  • Note that the repo does not contain all of WordPress, 3rd-party themes and plugins. They will be pulled in via composer in step 4.
  1. Run lando init and use the following values when prompted:
  • From where should we get your app's codebase? > current working directory
  • What recipe do you want to use? > pantheon
  • Enter a Pantheon machine token > [enter the Pantheon token you got above]
  • Which site? > cncfci

If you happen to get an error that looks like this ERROR ==> Need to give this composition a project name! then first run lando init --source pantheon. The command will fail since you already have a git repo. By running it, however, it will remember your auth for Pantheon so you won't have to enter your machine token again and the initial lando init should now work.

  1. Open the .lando.yml file and add the following to the file.
keys:
- pantheon_rsaproxy:
node:
- bs.cncfci.lndo.site:3000excludes:
- vendor
- /app/web/wp-content/themes/cncf-twenty-two/node_modulesservices:
node:
type: 'node:14'ssl: truescanner: falsetooling:
npm:
service: nodenpx:
service: nodenode:
service: nodesniff:
service: appservercmd: /app/vendor/bin/phpcs -nsfix:
service: appservercmd: /app/vendor/bin/phpcbf -swarnings:
service: appservercmd: /app/vendor/bin/phpcs -sdebug:
service: appservercmd: 'touch /app/web/wp-content/debug.log && tail -f /app/web/wp-content/debug.log'description: 'Get real-time WP debug log output'paths:
service: appservercmd: "/app/vendor/bin/phpcs -i"description: "See sniff paths"
  1. Run lando start and note the local site URL provided at the end of the process.

  2. Run lando composer install --no-ansi --no-interaction --optimize-autoloader --no-progress to download dependencies

  3. Run lando pull --code=none --files=none and follow the prompts to download the media files and database from Pantheon:

  • Pull database from? > dev
  1. Run this command to activate/deactivate multiple plugins that can help with local dev or are not needed for local dev. The Load Media Files from Production plugin will load media from the production server instead of needing to download them locally:
lando wp plugin activate debug-bar && lando wp plugin activate query-monitor && lando wp plugin deactivate shortpixel-image-optimiser && lando wp plugin deactivate pantheon-advanced-page-cache && lando wp plugin activate load-media-from-production
  1. You will need to compile the theme css/js before the site will render correctly:

    1. Go to the theme directory: cd web/wp-content/themes/cncf-twenty-two
    2. Install the Node.js dependencies: lando npm install
    3. Compile the files: lando npm run build
  2. Visit the local site URL saved from above. To find it again run lando info.

  3. In the admin you will need to edit the Search & Filter settings. The full url to the result pages are hardcoded in the "Display Results" of each filter. These will need to be set to the corresponding local instance url.

  4. Get your browser to trust the Lando SSL certificate by following these instructions. This step isn't essential but will stop you having to keep bypassing the privacy warning in your browser.

Notes

  • You can stop Lando with lando stop and start it again with lando start. You can turn it off completely with lando poweroff

  • Composer, Terminus, npm and wp-cli commands should be run in Lando rather than on the host machine. This is done by prefixing the desired command with lando. For example, after a change to composer.json, run lando composer update rather than composer update.

  • Repeat steps 6 and 7 above to download a fresh copy of the database.


Theme Development

To activate Browsersync to watch files, run lando npm start in the theme directory. You will then be able to browse the bs.* url listed previously and see the site auto-update whenever there is a change in the underlying source code.


Code Sniffs

The CI process will sniff the code to make sure it complies with WordPress coding standards. All Linux Foundation code should comply with these guidelines.

phpcs and the WordPress Coding Standards for PHP_CodeSniffer come as part of the repo and are installed in the vendor directory by composer.

You can get a report of required fixes on your code by running lando sniff and you can automatically fix some required changes by running lando fix. You can see warnings by running lando warnings.

The commands are setup to use WordPress Coding Standards and to run on the wp-content/themes/ directory as well as on custom plugins. This is controlled by the phpcs.xml file.

It's even more convenient to install into your IDE.

Since the cncf.io repo includes phpcs via Composer, your IDE should use that version of the binary even though you may have phpcs installed system-wide.


Upgrading WordPress core, themes and plugins

The dependencies of this project are managed by Composer. All dependencies of the project are set in composer.json and are pulled in at deploy time according to what is set in composer.lock.

composer.lock is generated from composer.json only when explicitly calling the lando composer update function. Any additional themes or plugins can be added first to composer.json and then lando composer update is run to update composer.lock and pull in the new files. Dependencies are pegged to a version according to the composer versioning rules.

It's good practice to keep WordPress and all plugins set at their latest releases to inherit any security patches and upgraded functionality. Upgrading to a new version, however, sometimes has unintended consequences so it's critical to run all tests before deploying live.

Refreshing external data

The following cron jobs are programmed to pull in data from remote sources for use in the website.

lf_sync_projects
lf_sync_ktps
lf_sync_kcds

To trigger fresh data locally, you can run:

lando wp cron event run lf_sync_kcds

or for remote triggering on a specific environment:

lando terminus wp cncfci.live -- cron event run lf_sync_kcds

To trigger all cron jobs, for example:

lando terminus wp cncfci.dev -- cron event run --all

For other data we use transients to store data:

cncf_homepage_metrics
cncf_whoweare_metrics
cncf_latest_endusers
tech_radars
cncf_project_maturity_data
cncf_eu_playlist
cncf_member_playlist

These can be deleted locally using:

lando wp transient delete cncf_project_maturity_data

These can be deleted remotely using:

lando terminus wp cncfci.dev transient delete cncf_homepage_metrics

About

☁️♮🏛🚧 The CNCF.io WordPress website

Topics

Resources

Code of conduct

Contributing

Stars

107 stars

Watchers

12 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - cncf/cncf.io: ☁️♮🏛🚧 The CNCF.io WordPress website · GitHub
Skip to content

Repository files navigation

Build, test and deploy

CNCF.io Developer Instructions

Everyone is welcome to contribute to this project. Please follow these guidelines.

These instructions are based on you having access to the CNCF.io Pantheon account (and the CNCF.io WordPress database).

Install Local Instance

Requirements

  • Install Lando (a Docker Compose utility / abstraction layer). Using Homebrew for installation is not recommended. Lando Docs. Lando includes it's own versions of PHP, Node (14.19.0), NPM.

  • When setting up Lando with the Pantheon recipe it will automatically download Terminus (CLI for interaction with Pantheon). Follow all the instructions on that page to setup a machine token and SSH Authentication. Save the machine token for use in step 2 below.

  • Get a GitHub personal access token to use in place of a password for performing Git operations over HTTPS.

Lando Setup

(these steps were derived from instructions provided by Pantheon)

  1. Clone this repository: git clone git@github.com:cncf/cncf.io.git
  • Note that the repo does not contain all of WordPress, 3rd-party themes and plugins. They will be pulled in via composer in step 4.
  1. Run lando init and use the following values when prompted:
  • From where should we get your app's codebase? > current working directory
  • What recipe do you want to use? > pantheon
  • Enter a Pantheon machine token > [enter the Pantheon token you got above]
  • Which site? > cncfci

If you happen to get an error that looks like this ERROR ==> Need to give this composition a project name! then first run lando init --source pantheon. The command will fail since you already have a git repo. By running it, however, it will remember your auth for Pantheon so you won't have to enter your machine token again and the initial lando init should now work.

  1. Open the .lando.yml file and add the following to the file.
keys:
- pantheon_rsaproxy:
node:
- bs.cncfci.lndo.site:3000excludes:
- vendor
- /app/web/wp-content/themes/cncf-twenty-two/node_modulesservices:
node:
type: 'node:14'ssl: truescanner: falsetooling:
npm:
service: nodenpx:
service: nodenode:
service: nodesniff:
service: appservercmd: /app/vendor/bin/phpcs -nsfix:
service: appservercmd: /app/vendor/bin/phpcbf -swarnings:
service: appservercmd: /app/vendor/bin/phpcs -sdebug:
service: appservercmd: 'touch /app/web/wp-content/debug.log && tail -f /app/web/wp-content/debug.log'description: 'Get real-time WP debug log output'paths:
service: appservercmd: "/app/vendor/bin/phpcs -i"description: "See sniff paths"
  1. Run lando start and note the local site URL provided at the end of the process.

  2. Run lando composer install --no-ansi --no-interaction --optimize-autoloader --no-progress to download dependencies

  3. Run lando pull --code=none --files=none and follow the prompts to download the media files and database from Pantheon:

  • Pull database from? > dev
  1. Run this command to activate/deactivate multiple plugins that can help with local dev or are not needed for local dev. The Load Media Files from Production plugin will load media from the production server instead of needing to download them locally:
lando wp plugin activate debug-bar && lando wp plugin activate query-monitor && lando wp plugin deactivate shortpixel-image-optimiser && lando wp plugin deactivate pantheon-advanced-page-cache && lando wp plugin activate load-media-from-production
  1. You will need to compile the theme css/js before the site will render correctly:

    1. Go to the theme directory: cd web/wp-content/themes/cncf-twenty-two
    2. Install the Node.js dependencies: lando npm install
    3. Compile the files: lando npm run build
  2. Visit the local site URL saved from above. To find it again run lando info.

  3. In the admin you will need to edit the Search & Filter settings. The full url to the result pages are hardcoded in the "Display Results" of each filter. These will need to be set to the corresponding local instance url.

  4. Get your browser to trust the Lando SSL certificate by following these instructions. This step isn't essential but will stop you having to keep bypassing the privacy warning in your browser.

Notes

  • You can stop Lando with lando stop and start it again with lando start. You can turn it off completely with lando poweroff

  • Composer, Terminus, npm and wp-cli commands should be run in Lando rather than on the host machine. This is done by prefixing the desired command with lando. For example, after a change to composer.json, run lando composer update rather than composer update.

  • Repeat steps 6 and 7 above to download a fresh copy of the database.


Theme Development

To activate Browsersync to watch files, run lando npm start in the theme directory. You will then be able to browse the bs.* url listed previously and see the site auto-update whenever there is a change in the underlying source code.


Code Sniffs

The CI process will sniff the code to make sure it complies with WordPress coding standards. All Linux Foundation code should comply with these guidelines.

phpcs and the WordPress Coding Standards for PHP_CodeSniffer come as part of the repo and are installed in the vendor directory by composer.

You can get a report of required fixes on your code by running lando sniff and you can automatically fix some required changes by running lando fix. You can see warnings by running lando warnings.

The commands are setup to use WordPress Coding Standards and to run on the wp-content/themes/ directory as well as on custom plugins. This is controlled by the phpcs.xml file.

It's even more convenient to install into your IDE.

Since the cncf.io repo includes phpcs via Composer, your IDE should use that version of the binary even though you may have phpcs installed system-wide.


Upgrading WordPress core, themes and plugins

The dependencies of this project are managed by Composer. All dependencies of the project are set in composer.json and are pulled in at deploy time according to what is set in composer.lock.

composer.lock is generated from composer.json only when explicitly calling the lando composer update function. Any additional themes or plugins can be added first to composer.json and then lando composer update is run to update composer.lock and pull in the new files. Dependencies are pegged to a version according to the composer versioning rules.

It's good practice to keep WordPress and all plugins set at their latest releases to inherit any security patches and upgraded functionality. Upgrading to a new version, however, sometimes has unintended consequences so it's critical to run all tests before deploying live.

Refreshing external data

The following cron jobs are programmed to pull in data from remote sources for use in the website.

lf_sync_projects
lf_sync_ktps
lf_sync_kcds

To trigger fresh data locally, you can run:

lando wp cron event run lf_sync_kcds

or for remote triggering on a specific environment:

lando terminus wp cncfci.live -- cron event run lf_sync_kcds

To trigger all cron jobs, for example:

lando terminus wp cncfci.dev -- cron event run --all

For other data we use transients to store data:

cncf_homepage_metrics
cncf_whoweare_metrics
cncf_latest_endusers
tech_radars
cncf_project_maturity_data
cncf_eu_playlist
cncf_member_playlist

These can be deleted locally using:

lando wp transient delete cncf_project_maturity_data

These can be deleted remotely using:

lando terminus wp cncfci.dev transient delete cncf_homepage_metrics

About

☁️♮🏛🚧 The CNCF.io WordPress website

Topics

Resources

Code of conduct

Contributing

Stars

107 stars

Watchers

12 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - cncf/cncf.io: ☁️♮🏛🚧 The CNCF.io WordPress website · GitHub
Skip to content

Repository files navigation

Build, test and deploy

CNCF.io Developer Instructions

Everyone is welcome to contribute to this project. Please follow these guidelines.

These instructions are based on you having access to the CNCF.io Pantheon account (and the CNCF.io WordPress database).

Install Local Instance

Requirements

  • Install Lando (a Docker Compose utility / abstraction layer). Using Homebrew for installation is not recommended. Lando Docs. Lando includes it's own versions of PHP, Node (14.19.0), NPM.

  • When setting up Lando with the Pantheon recipe it will automatically download Terminus (CLI for interaction with Pantheon). Follow all the instructions on that page to setup a machine token and SSH Authentication. Save the machine token for use in step 2 below.

  • Get a GitHub personal access token to use in place of a password for performing Git operations over HTTPS.

Lando Setup

(these steps were derived from instructions provided by Pantheon)

  1. Clone this repository: git clone git@github.com:cncf/cncf.io.git
  • Note that the repo does not contain all of WordPress, 3rd-party themes and plugins. They will be pulled in via composer in step 4.
  1. Run lando init and use the following values when prompted:
  • From where should we get your app's codebase? > current working directory
  • What recipe do you want to use? > pantheon
  • Enter a Pantheon machine token > [enter the Pantheon token you got above]
  • Which site? > cncfci

If you happen to get an error that looks like this ERROR ==> Need to give this composition a project name! then first run lando init --source pantheon. The command will fail since you already have a git repo. By running it, however, it will remember your auth for Pantheon so you won't have to enter your machine token again and the initial lando init should now work.

  1. Open the .lando.yml file and add the following to the file.
keys:
- pantheon_rsaproxy:
node:
- bs.cncfci.lndo.site:3000excludes:
- vendor
- /app/web/wp-content/themes/cncf-twenty-two/node_modulesservices:
node:
type: 'node:14'ssl: truescanner: falsetooling:
npm:
service: nodenpx:
service: nodenode:
service: nodesniff:
service: appservercmd: /app/vendor/bin/phpcs -nsfix:
service: appservercmd: /app/vendor/bin/phpcbf -swarnings:
service: appservercmd: /app/vendor/bin/phpcs -sdebug:
service: appservercmd: 'touch /app/web/wp-content/debug.log && tail -f /app/web/wp-content/debug.log'description: 'Get real-time WP debug log output'paths:
service: appservercmd: "/app/vendor/bin/phpcs -i"description: "See sniff paths"
  1. Run lando start and note the local site URL provided at the end of the process.

  2. Run lando composer install --no-ansi --no-interaction --optimize-autoloader --no-progress to download dependencies

  3. Run lando pull --code=none --files=none and follow the prompts to download the media files and database from Pantheon:

  • Pull database from? > dev
  1. Run this command to activate/deactivate multiple plugins that can help with local dev or are not needed for local dev. The Load Media Files from Production plugin will load media from the production server instead of needing to download them locally:
lando wp plugin activate debug-bar && lando wp plugin activate query-monitor && lando wp plugin deactivate shortpixel-image-optimiser && lando wp plugin deactivate pantheon-advanced-page-cache && lando wp plugin activate load-media-from-production
  1. You will need to compile the theme css/js before the site will render correctly:

    1. Go to the theme directory: cd web/wp-content/themes/cncf-twenty-two
    2. Install the Node.js dependencies: lando npm install
    3. Compile the files: lando npm run build
  2. Visit the local site URL saved from above. To find it again run lando info.

  3. In the admin you will need to edit the Search & Filter settings. The full url to the result pages are hardcoded in the "Display Results" of each filter. These will need to be set to the corresponding local instance url.

  4. Get your browser to trust the Lando SSL certificate by following these instructions. This step isn't essential but will stop you having to keep bypassing the privacy warning in your browser.

Notes

  • You can stop Lando with lando stop and start it again with lando start. You can turn it off completely with lando poweroff

  • Composer, Terminus, npm and wp-cli commands should be run in Lando rather than on the host machine. This is done by prefixing the desired command with lando. For example, after a change to composer.json, run lando composer update rather than composer update.

  • Repeat steps 6 and 7 above to download a fresh copy of the database.


Theme Development

To activate Browsersync to watch files, run lando npm start in the theme directory. You will then be able to browse the bs.* url listed previously and see the site auto-update whenever there is a change in the underlying source code.


Code Sniffs

The CI process will sniff the code to make sure it complies with WordPress coding standards. All Linux Foundation code should comply with these guidelines.

phpcs and the WordPress Coding Standards for PHP_CodeSniffer come as part of the repo and are installed in the vendor directory by composer.

You can get a report of required fixes on your code by running lando sniff and you can automatically fix some required changes by running lando fix. You can see warnings by running lando warnings.

The commands are setup to use WordPress Coding Standards and to run on the wp-content/themes/ directory as well as on custom plugins. This is controlled by the phpcs.xml file.

It's even more convenient to install into your IDE.

Since the cncf.io repo includes phpcs via Composer, your IDE should use that version of the binary even though you may have phpcs installed system-wide.


Upgrading WordPress core, themes and plugins

The dependencies of this project are managed by Composer. All dependencies of the project are set in composer.json and are pulled in at deploy time according to what is set in composer.lock.

composer.lock is generated from composer.json only when explicitly calling the lando composer update function. Any additional themes or plugins can be added first to composer.json and then lando composer update is run to update composer.lock and pull in the new files. Dependencies are pegged to a version according to the composer versioning rules.

It's good practice to keep WordPress and all plugins set at their latest releases to inherit any security patches and upgraded functionality. Upgrading to a new version, however, sometimes has unintended consequences so it's critical to run all tests before deploying live.

Refreshing external data

The following cron jobs are programmed to pull in data from remote sources for use in the website.

lf_sync_projects
lf_sync_ktps
lf_sync_kcds

To trigger fresh data locally, you can run:

lando wp cron event run lf_sync_kcds

or for remote triggering on a specific environment:

lando terminus wp cncfci.live -- cron event run lf_sync_kcds

To trigger all cron jobs, for example:

lando terminus wp cncfci.dev -- cron event run --all

For other data we use transients to store data:

cncf_homepage_metrics
cncf_whoweare_metrics
cncf_latest_endusers
tech_radars
cncf_project_maturity_data
cncf_eu_playlist
cncf_member_playlist

These can be deleted locally using:

lando wp transient delete cncf_project_maturity_data

These can be deleted remotely using:

lando terminus wp cncfci.dev transient delete cncf_homepage_metrics

About

☁️♮🏛🚧 The CNCF.io WordPress website

Topics

Resources

Code of conduct

Contributing

Stars

107 stars

Watchers

12 watching

Forks

Used by

Contributors

Languages