You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by jm...@apache.org on 2023/03/31 19:15:55 UTC

[guacamole-website] branch GUACAMOLE-1754-PR-build created (now 76be8cc0)

This is an automated email from the ASF dual-hosted git repository.

jmuehlner pushed a change to branch GUACAMOLE-1754-PR-build
in repository https://gitbox.apache.org/repos/asf/guacamole-website.git


      at 76be8cc0 GUACAMOLE-1754: Add new Dockerfile for local testing, and run docker build for PR CI using it.

This branch includes the following new commits:

     new 76be8cc0 GUACAMOLE-1754: Add new Dockerfile for local testing, and run docker build for PR CI using it.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[guacamole-website] 01/01: GUACAMOLE-1754: Add new Dockerfile for local testing, and run docker build for PR CI using it.

Posted by jm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jmuehlner pushed a commit to branch GUACAMOLE-1754-PR-build
in repository https://gitbox.apache.org/repos/asf/guacamole-website.git

commit 76be8cc03c26dd261eee16f8f2578289102c7700
Author: James Muehlner <ja...@guac-dev.org>
AuthorDate: Fri Mar 31 19:15:43 2023 +0000

    GUACAMOLE-1754: Add new Dockerfile for local testing, and run docker build for PR CI using it.
---
 .github/workflows/pr-build.yml | 29 ++++++++++++++++++++++++++++
 Dockerfile                     | 43 ++++++++++++++++++++++++++++++++++++++++++
 README.md                      | 11 +++++++++++
 3 files changed, 83 insertions(+)

diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml
new file mode 100644
index 00000000..19f24bbe
--- /dev/null
+++ b/.github/workflows/pr-build.yml
@@ -0,0 +1,29 @@
+name: Pull request CI build
+
+# Run build for all pull requests
+on:
+  pull_request:
+
+# Limit to only one build for a given PR source branch at a time,
+# cancelling any in-progress builds
+concurrency:
+  group: guacamole-website-pr-${{ github.head_ref }}
+  cancel-in-progress: true
+
+jobs:
+
+  docker_build:
+    name: Run docker build
+    runs-on: ubuntu-latest
+    steps:
+
+      - name: Check out code
+        uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
+          persist-credentials: false
+
+      - name: Build Docker container
+        shell: sh
+        run: |
+          docker build --pull --no-cache --force-rm .
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..2da1b46a
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,43 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+#
+# Dockerfile for guacamole-website
+# 
+# See the README for more information on how to use this file.
+
+# Perform the build using ruby and jekyll 
+FROM ruby
+
+# Install jeykll
+RUN gem install jekyll bundler
+
+# Set the working directory for the remainder of the build process
+WORKDIR /website
+
+# Copy the website source into the working directory and build it
+COPY ./ ./
+RUN ./build.sh
+
+# The port at which the website should be hosted. Make sure to
+# expose this port when running this docker image.
+ENV PORT=8080
+
+# Host the website at the configured port
+CMD ["sh", "-c", "./build.sh ${PORT}"] 
diff --git a/README.md b/README.md
index ff8378de..49ca3d4a 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,7 @@ licensed project, the repository contains the following critical files:
 | `add-tracking.pl` | Utility script which edits specified HTML files in-place, adding the project's Google Analytics tracking code at the end of the `<body>` (requires Perl).
 | `build.sh`    | The website build script (usage documented below).
 | `doc/`        | Per-release documentation for Apache Guacamole. This directory contains one subdirectory per release, where each subdirectory contains the overall manual (`.../gug/`) API documentation for each part of the Guacamole core (`.../libguac/`, `.../guacamole-common/`, etc.). Files in this directory are not interpreted by Jekyll, as there are far too many files for this to be reasonable. They are instead copied into place by the `build.sh` script.
+| `Dockerfile`  | A docker file that can be used to build and serve the website.
 | `images/`     | Images which are referenced within the website HTML and CSS.
 | `pub/`        | Miscellaneous public files, such as test scripts. The test scripts in this directory have historically been shared to users to help with debugging.
 | `styles/`     | All CSS files referenced by the website HTML.
@@ -88,6 +89,16 @@ To test your changes to the website, you can either invoke `./build.sh` to build
 When done testing your local changes, press `Ctrl`&nbsp;+&nbsp;`C` to stop the
 web server and return to the shell.
 
+Build and serve using docker
+-----------------------
+
+Alternatively, as opposed to installing Jekyll locally, the website can be built and served locally using the provided `Dockerfile`. To build and serve the website locally, simply build a Docker container containing the current website and run the container, as below.
+
+1. Build a new docker image: `docker build . -tag some-website`.
+2. Run the docker image at a configured port: `docker run -e PORT=8080 -p 8080:8080 -it --rm some-website`
+
+The website will be served just as when `build.sh` is invoked directly. Press `Ctrl`&nbsp;+&nbsp;`C` to stop the docker container. 
+
 Publishing changes
 ------------------