Browse Source

switch to page bundles for attachments

itix-theme
Nicolas Massé 5 years ago
parent
commit
4199b2e850
  1. 3
      archetypes/default.md
  2. 4
      content/english/blog/airgap-openshift-installation-move-registry-created-using-oc-adm-release-mirror-between-environments/index.md
  3. 0
      content/english/blog/airgap-openshift-installation-move-registry-created-using-oc-adm-release-mirror-between-environments/pull.yaml
  4. 0
      content/english/blog/cleanup-playbook-3scale/cleanup.yaml
  5. 4
      content/english/blog/cleanup-playbook-3scale/index.md
  6. 4
      content/english/blog/configure-redhat-sso-3scale-cli/index.md
  7. 0
      content/english/blog/configure-redhat-sso-3scale-cli/openid-connect-issuer.png
  8. 4
      content/english/blog/install-openwrt-raspberry-pi/index.md
  9. 0
      content/english/blog/install-openwrt-raspberry-pi/uart-pins.jpeg
  10. 0
      content/english/blog/jmeter-assess-software-performances/control1.png
  11. 0
      content/english/blog/jmeter-assess-software-performances/control2.png
  12. 0
      content/english/blog/jmeter-assess-software-performances/control3.png
  13. 0
      content/english/blog/jmeter-assess-software-performances/if.png
  14. 14
      content/english/blog/jmeter-assess-software-performances/index.md
  15. 0
      content/english/blog/jmeter-assess-software-performances/thread-group.png
  16. 0
      content/english/blog/jmeter-assess-software-performances/udv.png
  17. 4
      content/english/blog/nginx-with-tls-on-openwrt/index.md
  18. 0
      content/english/blog/nginx-with-tls-on-openwrt/make-menuconfig.png
  19. 0
      content/english/blog/use-ansible-to-manage-the-qos-of-your-openshift-workload/change-qos.yaml
  20. 4
      content/english/blog/use-ansible-to-manage-the-qos-of-your-openshift-workload/index.md
  21. 0
      content/english/blog/use-google-account-openid-connect-provider/auth-ok.png
  22. 0
      content/english/blog/use-google-account-openid-connect-provider/auth.png
  23. 0
      content/english/blog/use-google-account-openid-connect-provider/authorized-domains.png
  24. 0
      content/english/blog/use-google-account-openid-connect-provider/create-credentials.png
  25. 0
      content/english/blog/use-google-account-openid-connect-provider/create-project.png
  26. 27
      content/english/blog/use-google-account-openid-connect-provider/index.md
  27. 0
      content/english/blog/use-google-account-openid-connect-provider/links.png
  28. 0
      content/english/blog/use-google-account-openid-connect-provider/oauth-consent.png
  29. 0
      content/english/blog/use-google-account-openid-connect-provider/project-name.png
  30. 0
      content/english/blog/use-google-account-openid-connect-provider/redirect-uri.png
  31. 0
      content/english/blog/use-google-account-openid-connect-provider/script-start.png
  32. 0
      content/english/blog/use-google-account-openid-connect-provider/script-url.png
  33. 0
      content/english/blog/use-google-account-openid-connect-provider/test-auth.sh
  34. 0
      content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift/github-add-webhook.png
  35. 0
      content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift/github-webhook.png
  36. 10
      content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift/index.md
  37. 0
      content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift/openshift-buildconfig-webhook.png
  38. 0
      content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift/openshift-rebuild.png
  39. 0
      content/english/blog/writing-workshop-instructions-with-hugo/hugo-screenshot.png
  40. 4
      content/english/blog/writing-workshop-instructions-with-hugo/index.md
  41. 14
      content/english/speaking/devoteam-tech-for-people-2018.md
  42. 0
      content/english/speaking/devoteam-tech-for-people-2018/2018-10-10-Devoteam-TechForPeople-1.jpg
  43. 0
      content/english/speaking/devoteam-tech-for-people-2018/2018-10-10-Devoteam-TechForPeople-2.jpg
  44. 0
      content/english/speaking/devoteam-tech-for-people-2018/2018-10-10-Devoteam-TechForPeople-3.jpg
  45. 0
      content/english/speaking/devoteam-tech-for-people-2018/2018-10-10-Devoteam-TechForPeople-4.jpg
  46. 16
      content/english/speaking/devoteam-tech-for-people-2018/index.md
  47. 0
      content/english/speaking/red-hat-tech-exchange-2018/2018-10-21-RHTE-Award.jpg
  48. 4
      content/english/speaking/red-hat-tech-exchange-2018/index.md
  49. 0
      content/english/speaking/red-hat-tech-exchange-2019/2019-10-21-RHTE-Award.png
  50. 4
      content/english/speaking/red-hat-tech-exchange-2019/index.md
  51. 12
      hugo
  52. 12
      layouts/shortcodes/attachedFigure.html
  53. 4
      layouts/shortcodes/attachedFileLink.html
  54. 2
      netlify.toml

3
archetypes/default.md

@ -6,6 +6,9 @@ opensource:
- project1
topics:
- topic1
resources:
#- src: '*.yaml'
#- src: '*.png'
---
Headline.

4
content/english/blog/airgap-openshift-installation-move-registry-created-using-oc-adm-release-mirror-between-environments.md → content/english/blog/airgap-openshift-installation-move-registry-created-using-oc-adm-release-mirror-between-environments/index.md

@ -7,6 +7,8 @@ opensource:
- Skopeo
topics:
- Containers
resources:
- src: '*.yaml'
---
Some customers, especially large banks, have very tight security requirements.
@ -145,7 +147,7 @@ Finally, skopeo is called to download each image to */tmp/oci_registry*.
with_items: '{{ images }}'
```
The complete playbook [is available here](pull.yaml) and can be run as follow.
The complete playbook [is available here]({{< attachedFileLink src="pull.yaml" >}}) and can be run as follow.
```sh
ansible-playbook pull.yaml -e token=$TOKEN

0
static/blog/airgap-openshift-installation-move-registry-created-using-oc-adm-release-mirror-between-environments/pull.yaml → content/english/blog/airgap-openshift-installation-move-registry-created-using-oc-adm-release-mirror-between-environments/pull.yaml

0
static/blog/cleanup-playbook-3scale/cleanup.yaml → content/english/blog/cleanup-playbook-3scale/cleanup.yaml

4
content/english/blog/cleanup-playbook-3scale.md → content/english/blog/cleanup-playbook-3scale/index.md

@ -7,6 +7,8 @@ opensource:
topics:
- API Management
- IT Automation
resources:
- src: '*.yaml'
---
If you are running integration tests embedding 3scale or are doing a lot of 3scale demos, you might sooner or later **have plenty of services declared in the 3scale Admin console**, which could reveal difficult to work with.
@ -59,7 +61,7 @@ export THREESCALE_TOKEN="$(oc get secret system-seed -o go-template --template='
Fetch the cleanup playbook.
```sh
curl -Lo cleanup.yaml {{< baseurl >}}blog/cleanup-playbook-3scale/cleanup.yaml
curl -Lo cleanup.yaml {{< attachedFileLink src="cleanup.yaml" >}}
```
## Cleanup 3scale

4
content/english/blog/configure-redhat-sso-3scale-cli.md → content/english/blog/configure-redhat-sso-3scale-cli/index.md

@ -6,6 +6,8 @@ opensource:
- Keycloak
topics:
- OpenID Connect
resources:
- src: '*.png'
---
[3scale API Management](https://3scale.github.io/) can be used in conjunction with [Red Hat SSO](https://access.redhat.com/products/red-hat-single-sign-on) / [Keycloak](https://www.keycloak.org/) to secure APIs managed by 3scale using the OpenID Connect protocol.
@ -96,7 +98,7 @@ You can use the following URL for the **OpenID Connect Issuer** (replace $SSO_HO
https://zync:s3cr3t@$SSO_HOSTNAME/auth/realms/3scale
```
![openid-connect-issuer](openid-connect-issuer.png)
{{< figure src="openid-connect-issuer.png" title="OpenID Connect Issuer settings in the 3scale Admin Portal." >}}
Or when [deploying an API in 3scale with the 3scale toolbox](https://developers.redhat.com/blog/2019/07/29/3scale-toolbox-deploy-an-api-from-the-cli/), you can use:

0
static/blog/configure-redhat-sso-3scale-cli/openid-connect-issuer.png → content/english/blog/configure-redhat-sso-3scale-cli/openid-connect-issuer.png

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

4
content/english/blog/install-openwrt-raspberry-pi.md → content/english/blog/install-openwrt-raspberry-pi/index.md

@ -5,6 +5,8 @@ opensource:
- OpenWRT
topics:
- Embedded Systems
resources:
- src: '*.jpeg'
---
[OpenWRT](https://openwrt.org/) is a Linux distribution for embedded systems.
@ -70,7 +72,7 @@ screen /dev/ttyUSB0 115200
You then need to connect the VIN, GND, TXD and RXD wires to the correct GPIO pins of your Raspberry PI.
![GPIO UART pins](uart-pins.jpeg)
{{< figure src="uart-pins.jpeg" title="The UART Pins of the Raspberry PI 3" >}}
Power-on your Raspberry PI, wait a couple seconds and press enter to display the OpenWRT prompt.

0
static/blog/install-openwrt-raspberry-pi/uart-pins.jpeg → content/english/blog/install-openwrt-raspberry-pi/uart-pins.jpeg

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

0
static/blog/jmeter-assess-software-performances/control1.png → content/english/blog/jmeter-assess-software-performances/control1.png

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 177 KiB

0
static/blog/jmeter-assess-software-performances/control2.png → content/english/blog/jmeter-assess-software-performances/control2.png

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 255 KiB

0
static/blog/jmeter-assess-software-performances/control3.png → content/english/blog/jmeter-assess-software-performances/control3.png

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 143 KiB

0
static/blog/jmeter-assess-software-performances/if.png → content/english/blog/jmeter-assess-software-performances/if.png

Before

Width:  |  Height:  |  Size: 622 KiB

After

Width:  |  Height:  |  Size: 622 KiB

14
content/english/blog/jmeter-assess-software-performances.md → content/english/blog/jmeter-assess-software-performances/index.md

@ -6,7 +6,7 @@ opensource:
topics:
- Performance testing
resources:
- '**.png'
- '*.png'
---
One of my side projects (the [Telegram Photo Bot](https://github.com/nmasse-itix/Telegram-Photo-Album-Bot)), have some performance issues that I will have to tackle.
@ -104,7 +104,7 @@ http {
My first measure on the control (nginx) gave strange results.
{{< figure src="control1.png" title="First measure gave results too low to be representative of nginx's performances." >}}
{{< attachedFigure src="control1.png" title="First measure gave results too low to be representative of nginx's performances." >}}
Less than 30 tps, even on an old ARM board, is definitely too low to be representative of nginx's performances.
Using [Wireshark](https://www.wireshark.org/), I discovered that JMeter did not established [Keep-Alive connections](https://sqa.stackexchange.com/questions/38211/re-using-the-tcp-connections-with-jmeter-like-a-real-browser).
@ -137,13 +137,13 @@ httpclient.reset_state_on_thread_group_iteration=false
With Keep-Alive enabled, the 1200 tps are much more inline with the known performance level of nginx.
Except there is a performance drop every 10-15 seconds that is not expected.
{{< figure src="control2.png" title="Second measure shows a periodic performance drop." >}}
{{< attachedFigure src="control2.png" title="Second measure shows a periodic performance drop." >}}
Using Wireshark, I discovered that during those performance drops, there are [TCP packets retransmissions](https://wiki.wireshark.org/DuplicatePackets).
At that time, my Macbook Pro hosting the injector was connected **using Wifi**.
I switched to a good old Ethernet cable, and this time the results on the control were as expected.
{{< figure src="control3.png" title="Third measure is ok." >}}
{{< attachedFigure src="control3.png" title="Third measure is ok." >}}
As a conclusion, always have a control in your experience!
@ -151,7 +151,7 @@ As a conclusion, always have a control in your experience!
To build my JMeter Test Plan, I started by adding a **User Defined Variables** component that holds all the settings related to lab environment (DNS names, ports, tokens, etc.).
{{< figure src="udv.png" title="JMeter User Defined Variables" >}}
{{< attachedFigure src="udv.png" title="JMeter User Defined Variables" >}}
I added a variable named **scenario** whose value will be passed to JMeter from the CLI.
This enables me to run all my experiments automatically from a script, one after another.
@ -163,12 +163,12 @@ ${__P(parameter-name,default-value)}
I configured a **Thread Group** based on the **jp@gc - Ultimate Thread Group** with five concurrent users.
{{< figure src="thread-group.png" title="JMeter Thread Group" >}}
{{< attachedFigure src="thread-group.png" title="JMeter Thread Group" >}}
And finally, a **Loop** component with three **If Controllers** underneath.
Each **If Controller** holds an **HTTP Probe** configured for the target scenario.
{{< figure src="if.png" title="JMeter If Controller" >}}
{{< attachedFigure src="if.png" title="JMeter If Controller" >}}
The If Controllers are defined with a **jexl3** expression, asserting the value of the **scenario** variable.

0
static/blog/jmeter-assess-software-performances/thread-group.png → content/english/blog/jmeter-assess-software-performances/thread-group.png

Before

Width:  |  Height:  |  Size: 644 KiB

After

Width:  |  Height:  |  Size: 644 KiB

0
static/blog/jmeter-assess-software-performances/udv.png → content/english/blog/jmeter-assess-software-performances/udv.png

Before

Width:  |  Height:  |  Size: 600 KiB

After

Width:  |  Height:  |  Size: 600 KiB

4
content/english/blog/nginx-with-tls-on-openwrt.md → content/english/blog/nginx-with-tls-on-openwrt/index.md

@ -6,6 +6,8 @@ opensource:
- nginx
topics:
- Embedded Systems
resources:
- '*.png'
---
In the article "[Install OpenWRT on your Raspberry PI](../install-openwrt-raspberry-pi/)", I explained how to install OpenWRT on a Raspberry PI and the first steps as an OpenWRT user.
@ -85,7 +87,7 @@ Enter **Global Build Settings** and:
* Press space to unset **Select all userspace packages by default**
* Leave **Cryptographically sign packages** set
![make menuconfig](make-menuconfig.png)
{{< attachedFigure src="make-menuconfig.png" title="Parameters to activate in your make menuconfig" >}}
Go back to the root menu.

0
static/blog/nginx-with-tls-on-openwrt/make-menuconfig.png → content/english/blog/nginx-with-tls-on-openwrt/make-menuconfig.png

Before

Width:  |  Height:  |  Size: 332 KiB

After

Width:  |  Height:  |  Size: 332 KiB

0
static/blog/use-ansible-to-manage-the-qos-of-your-openshift-workload/change-qos.yaml → content/english/blog/use-ansible-to-manage-the-qos-of-your-openshift-workload/change-qos.yaml

4
content/english/blog/use-ansible-to-manage-the-qos-of-your-openshift-workload.md → content/english/blog/use-ansible-to-manage-the-qos-of-your-openshift-workload/index.md

@ -6,6 +6,8 @@ opensource:
- Ansible
topics:
- IT Automation
resources:
- src: '*.yaml'
---
As I was administering my OpenShift cluster, I found out that I had a too
@ -192,6 +194,6 @@ blacklist of critical namespaces that should not be touched.
when: obj.namespace not in namespace_blacklist
{{< / highlight >}}
You can find the complete playbook [here](change-qos.yaml). Of course, it is
You can find the complete playbook [here]({{< attachedFileLink src="change-qos.yaml" >}}). Of course, it is
very rough and would need to more work to be used on a daily basis but for a
single use this is sufficient.

0
static/blog/use-google-account-openid-connect-provider/auth-ok.png → content/english/blog/use-google-account-openid-connect-provider/auth-ok.png

Before

Width:  |  Height:  |  Size: 497 KiB

After

Width:  |  Height:  |  Size: 497 KiB

0
static/blog/use-google-account-openid-connect-provider/auth.png → content/english/blog/use-google-account-openid-connect-provider/auth.png

Before

Width:  |  Height:  |  Size: 527 KiB

After

Width:  |  Height:  |  Size: 527 KiB

0
static/blog/use-google-account-openid-connect-provider/authorized-domains.png → content/english/blog/use-google-account-openid-connect-provider/authorized-domains.png

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

0
static/blog/use-google-account-openid-connect-provider/create-credentials.png → content/english/blog/use-google-account-openid-connect-provider/create-credentials.png

Before

Width:  |  Height:  |  Size: 340 KiB

After

Width:  |  Height:  |  Size: 340 KiB

0
static/blog/use-google-account-openid-connect-provider/create-project.png → content/english/blog/use-google-account-openid-connect-provider/create-project.png

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

27
content/english/blog/use-google-account-openid-connect-provider.md → content/english/blog/use-google-account-openid-connect-provider/index.md

@ -3,6 +3,9 @@ title: "Use your Google Account as an OpenID Connect provider"
date: 2020-03-27T00:00:00+02:00
topics:
- OpenID Connect
resources:
- src: '*.png'
- src: '*.sh'
---
We have passwords everywhere: to unlock our computer, to reach our inbox, to login as root on our Raspberry PI, etc.
@ -47,15 +50,15 @@ First, connect to the [Google Developer Console](https://console.developers.goog
Click **Create Project**.
![create project](create-project.png)
{{< attachedFigure src="create-project.png" title="Click 'Create Project'." >}}
Fill-in the **Project name** (free choice). The location does not matter. Click **Create**.
![project name](project-name.png)
{{< attachedFigure src="project-name.png" title="Fill-in the 'Project name'. Click 'Create'." >}}
Click **OAuth Consent screen**. If you are a Google Suite user, select **Internal**. If you are a regular GMail user, select **External**. Click **Create**.
![oauth-consent](oauth-consent.png)
{{< attachedFigure src="oauth-consent.png" title="The OAuth Consent screen." >}}
Choose an application name (free choice).
Leave the default scopes.
@ -63,15 +66,15 @@ Add your personal domain to the list of **Authorized Domains**.
For instance, if your target service is at *raspberry-pi.example.test*, add **example.test**.
**DO NOT FORGET to press Enter!**
![authorized-domains](authorized-domains.png)
{{< attachedFigure src="authorized-domains.png" title="Add your personal domain to the list of Authorized Domains." >}}
Fill-in the **Application Homepage Link** and **Application Privacy Policy Link** (free choices). Click **Save**.
![links](links.png)
{{< attachedFigure src="links.png" title="Fill-in the links." >}}
Click **Credentials**. Select **+ Create Credentials**, then **OAuth Client ID**.
![create-credentials](create-credentials.png)
{{< attachedFigure src="create-credentials.png" title="Create the OAuth credentials." >}}
Under **Application type**, select **Web Application**.
Choose a name for your application (free choice).
@ -83,7 +86,7 @@ To be able to do so, we need to add a special Redirect URI: **http://localhost:6
Click **Create**.
![redirect-uri](redirect-uri.png)
{{< attachedFigure src="redirect-uri.png" title="Fill-in the Redirect URI." >}}
Google generated a **Client ID** and **Client Secret** for you. Keep them somewhere safe!
@ -94,7 +97,7 @@ There are several open source tools to test your OpenID Connect setup but a very
Download the following script and make it executable.
```sh
curl -o test-auth.sh {{< baseurl >}}blog/use-google-account-openid-connect-provider/test-auth.sh
curl -o test-auth.sh {{< attachedFileLink src="test-auth.sh" >}}
chmod 755 test-auth.sh
```
@ -113,15 +116,15 @@ Now, run this script!
The script generates a URL that you need to copy and paste in your web browser.
![script-start](script-start.png)
{{< attachedFigure src="script-start.png" title="The script generates a URL that you need to copy and paste in your web browser." >}}
If you are not yet logged in, Google asks you to authenticate.
![auth](auth.png)
{{< attachedFigure src="auth.png" title="If you are not yet logged in, Google asks you to authenticate." >}}
Once logged in or if you are already logged in, you are redirected to the fake Redirect URI we registered earlier.
![auth-ok](auth-ok.png)
{{< attachedFigure src="auth-ok.png" title="You are redirected to the fake Redirect URI we registered earlier" >}}
We registered a fake Redirect URI so that we could play each part of the OpenID Connect exchange manually.
**So, if you see an error message from your web browser saying that it cannot connect to the target service: THIS IS EXPECTED FOR OUR TEST.**
@ -131,7 +134,7 @@ Once the browser is redirected at `http://localhost:666/stop-here`, copy the red
Remember that the Authorization Code is very short lived.
So, be quick!
![script-url](script-url.png)
{{< attachedFigure src="script-url.png" title="Paste the Redirect URI." >}}
The script contacts the Authorization Server to get an Access Token from the Authorization Code captured in the Redirect URI.

0
static/blog/use-google-account-openid-connect-provider/links.png → content/english/blog/use-google-account-openid-connect-provider/links.png

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 157 KiB

0
static/blog/use-google-account-openid-connect-provider/oauth-consent.png → content/english/blog/use-google-account-openid-connect-provider/oauth-consent.png

Before

Width:  |  Height:  |  Size: 286 KiB

After

Width:  |  Height:  |  Size: 286 KiB

0
static/blog/use-google-account-openid-connect-provider/project-name.png → content/english/blog/use-google-account-openid-connect-provider/project-name.png

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 186 KiB

0
static/blog/use-google-account-openid-connect-provider/redirect-uri.png → content/english/blog/use-google-account-openid-connect-provider/redirect-uri.png

Before

Width:  |  Height:  |  Size: 287 KiB

After

Width:  |  Height:  |  Size: 287 KiB

0
static/blog/use-google-account-openid-connect-provider/script-start.png → content/english/blog/use-google-account-openid-connect-provider/script-start.png

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 270 KiB

0
static/blog/use-google-account-openid-connect-provider/script-url.png → content/english/blog/use-google-account-openid-connect-provider/script-url.png

Before

Width:  |  Height:  |  Size: 320 KiB

After

Width:  |  Height:  |  Size: 320 KiB

0
static/blog/use-google-account-openid-connect-provider/test-auth.sh → content/english/blog/use-google-account-openid-connect-provider/test-auth.sh

0
static/blog/writing-workshop-instructions-with-hugo-deploy-openshift/github-add-webhook.png → content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift/github-add-webhook.png

Before

Width:  |  Height:  |  Size: 249 KiB

After

Width:  |  Height:  |  Size: 249 KiB

0
static/blog/writing-workshop-instructions-with-hugo-deploy-openshift/github-webhook.png → content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift/github-webhook.png

Before

Width:  |  Height:  |  Size: 281 KiB

After

Width:  |  Height:  |  Size: 281 KiB

10
content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift.md → content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift/index.md

@ -4,6 +4,8 @@ date: 2019-02-27T00:00:00+02:00
opensource:
- Hugo
- OpenShift
resources:
- '*.png'
---
This is the third part of my series covering how to
@ -166,25 +168,25 @@ First, get the GitHub Webhook URL of your BuildConfig:
- Open the **Configuration** tab
- Copy the **GitHub Webhook URL**
![The BuildConfig on OpenShift](openshift-buildconfig-webhook.png)
{{< attachedFigure src="openshift-buildconfig-webhook.png" title="The BuildConfig on OpenShift." >}}
Then, go on your GitHub repository and add a webhook:
- Go to **Settings** > **Webhooks**
- Click **Add webhook**
![Add a webhook on GitHub](github-add-webhook.png)
{{< attachedFigure src="github-add-webhook.png" title="Add a webhook on GitHub." >}}
- Paste your Webhook URL in the **Payload URL** field
- Select `application/json` in the **Content type** dropdown list
- Check **Disable** in the **SSL verification** section if your OpenShift console has a self-signed certificate
- Click **Add webhook**
![The GitHub webhook](github-webhook.png)
{{< attachedFigure src="github-webhook.png" title="The GitHub webhook." >}}
Try to push some changes to your GitHub repository and see OpenShift rebuilding and deploying your website!
![OpenShift rebuilding and redeploying your website](openshift-rebuild.png)
{{< attachedFigure src="openshift-rebuild.png" title="OpenShift rebuilding and redeploying your website" >}}
## Conclusion

0
static/blog/writing-workshop-instructions-with-hugo-deploy-openshift/openshift-buildconfig-webhook.png → content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift/openshift-buildconfig-webhook.png

Before

Width:  |  Height:  |  Size: 335 KiB

After

Width:  |  Height:  |  Size: 335 KiB

0
static/blog/writing-workshop-instructions-with-hugo-deploy-openshift/openshift-rebuild.png → content/english/blog/writing-workshop-instructions-with-hugo-deploy-openshift/openshift-rebuild.png

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 255 KiB

0
static/blog/writing-workshop-instructions-with-hugo/hugo-screenshot.png → content/english/blog/writing-workshop-instructions-with-hugo/hugo-screenshot.png

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 185 KiB

4
content/english/blog/writing-workshop-instructions-with-hugo.md → content/english/blog/writing-workshop-instructions-with-hugo/index.md

@ -3,6 +3,8 @@ title: "Writing workshop instructions with Hugo"
date: 2019-02-20T00:00:00+02:00
opensource:
- Hugo
resources:
- '*.png'
---
In my professional life, I often have to lead workshops with customers or
@ -199,7 +201,7 @@ git push -u origin master
Congratulations! You now have your training instructions neatly organised and
clearly presented. Maintenance and collaboration have been greatly simplified!
![Screenshot of our mini-training](hugo-screenshot.png)
{{< attachedFigure src="hugo-screenshot.png" title="Screenshot of our mini-training." >}}
In this first part of the series, we presented a very light introduction to
Hugo and its application to workshop instructions. Be sure to read [part 2: Writing workshop instructions with Hugo, with variables in your content](../writing-workshop-instructions-with-hugo-variables/) to discover advanced usages.

14
content/english/speaking/devoteam-tech-for-people-2018.md

@ -1,14 +0,0 @@
---
title: "Devoteam #TechForPeople 2018"
date: 2018-10-10T00:00:00+02:00
draft: false
---
The 10th Septembre 2018, I co-presented a session named _"No API, No Future"_
in which I exhibited the Red Hat's API Lifecycle Automation. The event
`#TechForPeople` was organized by Devoteam.
![Devoteam #TechForPeople](/speaking/2018-10-10-Devoteam-TechForPeople-1.jpg)
![Devoteam #TechForPeople](/speaking/2018-10-10-Devoteam-TechForPeople-2.jpg)
![Devoteam #TechForPeople](/speaking/2018-10-10-Devoteam-TechForPeople-3.jpg)
![Devoteam #TechForPeople](/speaking/2018-10-10-Devoteam-TechForPeople-4.jpg)

0
static/speaking/2018-10-10-Devoteam-TechForPeople-1.jpg → content/english/speaking/devoteam-tech-for-people-2018/2018-10-10-Devoteam-TechForPeople-1.jpg

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 134 KiB

0
static/speaking/2018-10-10-Devoteam-TechForPeople-2.jpg → content/english/speaking/devoteam-tech-for-people-2018/2018-10-10-Devoteam-TechForPeople-2.jpg

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 148 KiB

0
static/speaking/2018-10-10-Devoteam-TechForPeople-3.jpg → content/english/speaking/devoteam-tech-for-people-2018/2018-10-10-Devoteam-TechForPeople-3.jpg

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB

0
static/speaking/2018-10-10-Devoteam-TechForPeople-4.jpg → content/english/speaking/devoteam-tech-for-people-2018/2018-10-10-Devoteam-TechForPeople-4.jpg

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

16
content/english/speaking/devoteam-tech-for-people-2018/index.md

@ -0,0 +1,16 @@
---
title: "Devoteam #TechForPeople 2018"
date: 2018-10-10T00:00:00+02:00
draft: false
resources:
- '*.png'
---
The 10th Septembre 2018, I co-presented a session named _"No API, No Future"_
in which I exhibited the Red Hat's API Lifecycle Automation. The event
`#TechForPeople` was organized by Devoteam.
{{< attachedFigure src="2018-10-10-Devoteam-TechForPeople-1.jpg" >}}
{{< attachedFigure src="2018-10-10-Devoteam-TechForPeople-2.jpg" >}}
{{< attachedFigure src="2018-10-10-Devoteam-TechForPeople-3.jpg" >}}
{{< attachedFigure src="2018-10-10-Devoteam-TechForPeople-4.jpg" >}}

0
static/speaking/2018-10-21-RHTE-Award.jpg → content/english/speaking/red-hat-tech-exchange-2018/2018-10-21-RHTE-Award.jpg

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

4
content/english/speaking/red-hat-tech-exchange-2018.md → content/english/speaking/red-hat-tech-exchange-2018/index.md

@ -2,6 +2,8 @@
title: "Red Hat Tech Exchange 2018"
date: 2018-09-21T00:00:00+02:00
draft: false
resources:
- '*.jpg'
---
From the 17th to 21th Septembre 2018, I co-presented two sessions:
@ -12,4 +14,4 @@ From the 17th to 21th Septembre 2018, I co-presented two sessions:
For the session _An API Journey: from mock to deployment_, we received an award
based on the amazing feedbacks from the public!
![We received our award, on-stage!](/speaking/2018-10-21-RHTE-Award.jpg)
{{< attachedFigure src="2018-10-21-RHTE-Award.jpg" title="We received our award, on-stage!" >}}

0
static/speaking/2019-10-21-RHTE-Award.png → content/english/speaking/red-hat-tech-exchange-2019/2019-10-21-RHTE-Award.png

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

4
content/english/speaking/red-hat-tech-exchange-2019.md → content/english/speaking/red-hat-tech-exchange-2019/index.md

@ -2,6 +2,8 @@
title: "Red Hat Tech Exchange 2019"
date: 2019-10-21T00:00:00+02:00
draft: false
resources:
- '*.png'
---
During the three Red Hat Tech Exchange sessions (Americas, EMEA and APAC), I presented two sessions:
@ -11,4 +13,4 @@ During the three Red Hat Tech Exchange sessions (Americas, EMEA and APAC), I pre
The session _Leverage the power of open source communities to manage your APIs_ has been the second best voted session in RHTE APAC!
![I received an award!](/speaking/2019-10-21-RHTE-Award.png)
{{< attachedFigure src="2019-10-21-RHTE-Award.png" title="I received an award!" >}}

12
hugo

@ -6,6 +6,8 @@ trap cleanup SIGINT SIGTERM ERR EXIT
function cleanup() {
trap - SIGINT SIGTERM ERR EXIT
# On exit, remove any symbolic link in content/french that points
# to content/english
find content/french -type l -print0 | while IFS= read -r -d $'\0' filename; do
if realpath "$filename" | grep -E "^$PWD/" > /dev/null; then
rm -f "$filename"
@ -13,12 +15,22 @@ function cleanup() {
done
}
# First, try to find page bundles. In that case, link the directory
(cd content/english && find * -type f -name 'index.md') | while read file; do
if [ ! -e "content/french/$file" ]; then
d="$(dirname $file)"
ln -s ../../../content/english/$d content/french/$d
fi
done
# Then, find the regular pages and link the files directly.
(cd content/english && find * -type f -name '*.md') | while read file; do
if [ ! -e "content/french/$file" ]; then
ln -s ../../../content/english/$file content/french/$file
fi
done
# Remove dangling links
find content/french -xtype l -exec rm -f {} \;
hugo gen chromastyles --style=borland > static/css/chroma.css

12
layouts/shortcodes/attachedFigure.html

@ -1,11 +1,11 @@
<!-- This shortcode renders an HTML figure based on a page resource -->
{{ $filename := .Get "src" }}
{{ $image := .Page.Resources.GetMatch (printf "%s" $filename) }}
{{- $filename := .Get "src" -}}
{{- $image := .Page.Resources.GetMatch (printf "%s" $filename) -}}
<figure>
<img src="{{ $image.Permalink }}">
{{ with .Get "title" }}
<img src="{{ $image.RelPermalink }}">
{{- with .Get "title" }}
<figcaption>
{{ . }}
{{- . -}}
</figcaption>
{{ end }}
{{- end }}
</figure>

4
layouts/shortcodes/attachedFileLink.html

@ -0,0 +1,4 @@
<!-- This shortcode renders an HTML figure based on a page resource -->
{{- $filename := .Get "src" -}}
{{- $file := .Page.Resources.GetMatch (printf "%s" $filename) -}}
{{- $file.Permalink -}}

2
netlify.toml

@ -1,6 +1,6 @@
[build]
publish = "public"
command = "./hugo"
command = "./hugo --baseURL https://www.itix.fr"
[build.environment] # Global
HUGO_VERSION = "0.42"

Loading…
Cancel
Save