From 7080a5d54d4964c7b9cf1973d4d8698674266155 Mon Sep 17 00:00:00 2001 From: almouse Date: Tue, 11 Jul 2023 23:49:30 +0000 Subject: [PATCH] Swap to jerryjvl build repo --- Dockerfile | 15 ++---------- LICENSE | 21 +++++++++++++++++ README.md | 64 ++++++++++++++++++++++++++------------------------- action.yml | 14 +++-------- entrypoint.sh | 27 ++++++++++++++-------- 5 files changed, 76 insertions(+), 65 deletions(-) create mode 100644 LICENSE diff --git a/Dockerfile b/Dockerfile index fe95074..f2d75be 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,7 @@ -FROM jekyll/minimal:latest -LABEL version="1.2.0" -LABEL description="Minimal Jekyll image with basic build tools." -LABEL maintainer="Vivien Richter " - -# Requirements +# This image is cached on the Github Actions VM, so it drastically reduces build time +FROM jekyll/builder:latest USER root -RUN apk --no-cache add build-base -EXPOSE 4000/tcp -# Entry point COPY entrypoint.sh /entrypoint.sh -COPY ./ / - -RUN chmod +x /entrypoint.sh -RUN chmod +w / ENTRYPOINT ["/entrypoint.sh"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9c546f2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Jerry van Leeuwen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index e70320e..3400fad 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,46 @@ -# Jekyll action -[![License](https://img.shields.io/badge/%E2%9A%96%EF%B8%8F-CC%20BY%204.0-brightgreen)](https://creativecommons.org/licenses/by/4.0) +# jekyll-build-action +Plain in-place Jekyll build action to be used in pipelines with a variety of possible deploy targets. -This action provides just Jekyll and some basic build tools ([Alpine's `build-base`](https://pkgs.alpinelinux.org/package/v3.3/main/x86/build-base)). -It's based on the [jekyll/minimal:latest](https://github.com/envygeeks/jekyll-docker) [Docker](https://docker.com) image and the [jerryjvl/jekyll-build-action](https://github.com/jerryjvl/jekyll-build-action). +# Usage +This Action literally only invokes a Jekyll build, so your pipeline needs to ensure the Jekyll source is first gathered, and once this action completes you must copy the contents of the destination folder to your intended hosting location. -## Usage +A typical example would be a GitHub repository with Jekyll source, and publishing the output to an S3 bucket configured for static site hosting. + +The pipeline to realize this would look something like the following: ```yaml jobs: jekyll: - name: Build and store Jekyll site + name: Build and deploy Jekyll site runs-on: ubuntu-latest + steps: - - name: Checkout 📥 - uses: actions/checkout@v2.3.4 - with: - lfs: true - fetch-depth: 1 + - name: Checkout + uses: actions/checkout@v2 - - name: Build ⚙️ - uses: vivi90/jekyll-minimal-action@v1.1.0 - with: - command: jekyll build + - name: Build + uses: jerryjvl/jekyll-build-action@v1 - - name: Store 📦 - uses: actions/upload-artifact@v2.2.4 - if: success() - with: - name: site - path: _site + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + + - name: Sync output to S3 + run: | + aws s3 sync ./_site/ s3://my-s3-bucket --delete ``` -Just use the `command` option as you like: - - `jekyll build --trace` - - `jekyll serve` - - and so on.. -## Contribution -Please feel free to create issues and/or pull requests. +# References +For more technical details on these steps and associated setup, see: +- [actions/checkout](https://github.com/actions/checkout) +- [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials) +- [Creating encrypted secrets in GitHub](https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets) -## License -This project is free software under the terms of the CC BY 4.0 license. -For more details please see the LICENSE file or: [Creative Commons](http://creativecommons.org/licenses/by/4.0) +# A Note on Security +Please be mindful of the third-party actions you trust with your secrets, credentials and content. Without investigation you should assume a third-party action might exfiltrate your content to some secondary location, or modify contents before they are published. -*The licenses of the installed components may differ.* +Futhermore, if you rely on versioning that the publisher of an action can control, the action you think you are running could be changed later without your knowledge. + +... Trust but verify! diff --git a/action.yml b/action.yml index 7995a55..c408fe3 100644 --- a/action.yml +++ b/action.yml @@ -1,16 +1,8 @@ -name: 'Jekyll Minimal Action' -author: 'Vivien Richter ' -description: 'Pure minimal Jekyll pipeline with basic build tools for universal usage.' -inputs: - command: - description: 'Complete Jekyll command' - required: true - default: 'jekyll --help' +name: 'Build Jekyll' +description: 'Local pipeline build of Jekyll content; follow-on actions must publish it somewhere' runs: using: 'docker' image: 'Dockerfile' - args: - - ${{ inputs.command }} branding: icon: 'book-open' - color: 'red' + color: 'white' diff --git a/entrypoint.sh b/entrypoint.sh index 04c5614..36c33b9 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,17 +1,24 @@ #!/bin/sh -# Set verbose mode -set -x +set -x # verbose mode +set -e # stop executing after error -# Stop executing after error -set -e +echo "Starting Jekyll build" -# Change permissions -chmod -R a+w ./ +#################################################### +# Set workspace permissions +#################################################### -pwd +chmod -R a+w /github/workspace -ls -R +#################################################### +# Build the Jekyll site +#################################################### -# Run command -jekyll build \ No newline at end of file +jekyll build --trace + +#################################################### +# Build completed +#################################################### + +echo "Completed Jekll build"