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 - project1
topics: topics:
- topic1 - topic1
resources:
#- src: '*.yaml'
#- src: '*.png'
--- ---
Headline. 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 - Skopeo
topics: topics:
- Containers - Containers
resources:
- src: '*.yaml'
--- ---
Some customers, especially large banks, have very tight security requirements. 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 }}' 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 ```sh
ansible-playbook pull.yaml -e token=$TOKEN 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: topics:
- API Management - API Management
- IT Automation - 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. 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. Fetch the cleanup playbook.
```sh ```sh
curl -Lo cleanup.yaml {{< baseurl >}}blog/cleanup-playbook-3scale/cleanup.yaml curl -Lo cleanup.yaml {{< attachedFileLink src="cleanup.yaml" >}}
``` ```
## Cleanup 3scale ## 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 - Keycloak
topics: topics:
- OpenID Connect - 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. [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 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: 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 - OpenWRT
topics: topics:
- Embedded Systems - Embedded Systems
resources:
- src: '*.jpeg'
--- ---
[OpenWRT](https://openwrt.org/) is a Linux distribution for embedded systems. [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. 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. 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: topics:
- Performance testing - Performance testing
resources: 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. 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. 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. 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). 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. 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. 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). 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**. 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. 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! 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.). 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. 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. 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. 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. And finally, a **Loop** component with three **If Controllers** underneath.
Each **If Controller** holds an **HTTP Probe** configured for the target scenario. 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. 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 - nginx
topics: topics:
- Embedded Systems - 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. 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** * Press space to unset **Select all userspace packages by default**
* Leave **Cryptographically sign packages** set * 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. 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 - Ansible
topics: topics:
- IT Automation - IT Automation
resources:
- src: '*.yaml'
--- ---
As I was administering my OpenShift cluster, I found out that I had a too 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 when: obj.namespace not in namespace_blacklist
{{< / highlight >}} {{< / 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 very rough and would need to more work to be used on a daily basis but for a
single use this is sufficient. 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 date: 2020-03-27T00:00:00+02:00
topics: topics:
- OpenID Connect - 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. 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**. 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**. 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**. 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). Choose an application name (free choice).
Leave the default scopes. 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**. For instance, if your target service is at *raspberry-pi.example.test*, add **example.test**.
**DO NOT FORGET to press Enter!** **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**. 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**. 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**. Under **Application type**, select **Web Application**.
Choose a name for your application (free choice). 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**. 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! 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. Download the following script and make it executable.
```sh ```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 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. 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. 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. 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. 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.** **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. Remember that the Authorization Code is very short lived.
So, be quick! 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. 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: opensource:
- Hugo - Hugo
- OpenShift - OpenShift
resources:
- '*.png'
--- ---
This is the third part of my series covering how to 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 - Open the **Configuration** tab
- Copy the **GitHub Webhook URL** - 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: Then, go on your GitHub repository and add a webhook:
- Go to **Settings** > **Webhooks** - Go to **Settings** > **Webhooks**
- Click **Add webhook** - 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 - Paste your Webhook URL in the **Payload URL** field
- Select `application/json` in the **Content type** dropdown list - 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 - Check **Disable** in the **SSL verification** section if your OpenShift console has a self-signed certificate
- Click **Add webhook** - 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! 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 ## 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 date: 2019-02-20T00:00:00+02:00
opensource: opensource:
- Hugo - Hugo
resources:
- '*.png'
--- ---
In my professional life, I often have to lead workshops with customers or 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 Congratulations! You now have your training instructions neatly organised and
clearly presented. Maintenance and collaboration have been greatly simplified! 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 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. 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" title: "Red Hat Tech Exchange 2018"
date: 2018-09-21T00:00:00+02:00 date: 2018-09-21T00:00:00+02:00
draft: false draft: false
resources:
- '*.jpg'
--- ---
From the 17th to 21th Septembre 2018, I co-presented two sessions: 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 For the session _An API Journey: from mock to deployment_, we received an award
based on the amazing feedbacks from the public! 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" title: "Red Hat Tech Exchange 2019"
date: 2019-10-21T00:00:00+02:00 date: 2019-10-21T00:00:00+02:00
draft: false draft: false
resources:
- '*.png'
--- ---
During the three Red Hat Tech Exchange sessions (Americas, EMEA and APAC), I presented two sessions: 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! 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() { function cleanup() {
trap - SIGINT SIGTERM ERR EXIT 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 find content/french -type l -print0 | while IFS= read -r -d $'\0' filename; do
if realpath "$filename" | grep -E "^$PWD/" > /dev/null; then if realpath "$filename" | grep -E "^$PWD/" > /dev/null; then
rm -f "$filename" rm -f "$filename"
@ -13,12 +15,22 @@ function cleanup() {
done 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 (cd content/english && find * -type f -name '*.md') | while read file; do
if [ ! -e "content/french/$file" ]; then if [ ! -e "content/french/$file" ]; then
ln -s ../../../content/english/$file content/french/$file ln -s ../../../content/english/$file content/french/$file
fi fi
done done
# Remove dangling links
find content/french -xtype l -exec rm -f {} \; find content/french -xtype l -exec rm -f {} \;
hugo gen chromastyles --style=borland > static/css/chroma.css 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 --> <!-- This shortcode renders an HTML figure based on a page resource -->
{{ $filename := .Get "src" }} {{- $filename := .Get "src" -}}
{{ $image := .Page.Resources.GetMatch (printf "%s" $filename) }} {{- $image := .Page.Resources.GetMatch (printf "%s" $filename) -}}
<figure> <figure>
<img src="{{ $image.Permalink }}"> <img src="{{ $image.RelPermalink }}">
{{ with .Get "title" }} {{- with .Get "title" }}
<figcaption> <figcaption>
{{ . }} {{- . -}}
</figcaption> </figcaption>
{{ end }} {{- end }}
</figure> </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] [build]
publish = "public" publish = "public"
command = "./hugo" command = "./hugo --baseURL https://www.itix.fr"
[build.environment] # Global [build.environment] # Global
HUGO_VERSION = "0.42" HUGO_VERSION = "0.42"

Loading…
Cancel
Save