web-landing-page/.gitea/workflows/jekyll.yaml

101 lines
3.4 KiB
YAML

name: Jekyll
on:
push:
branches:
- main
pull_request:
env:
_UID: 1000
_GID: 1000
WEB_DOMAIN: lafs.eval.latfa.net
WEB_USER: www
WEB_DIR: /var/www
jobs:
jekyll:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
id: checkout
uses: actions/checkout@v4
- name: Change file ownership
id: file_ownership
run: |
chown -R ${_UID}:${_GID} .
- name: Install requirements
id: install_requirements
run: |
apt-get -q update
apt-get -q install -y docker-compose rsync
apt-get -q clean
- name: Verify docker
id: verify_docker
run: |
docker run --rm hello-world:latest > /dev/null
docker rmi hello-world:latest > /dev/null
docker version
docker-compose version
docker volume ls
- name: Build Jekyll image
id: build_image
run: |
# The environment variables _UID and _GID can impact this image
docker-compose build jekyll
- name: Build Jekyll site
id: build_site
run: |
docker-compose run --rm -v "${JOB_CONTAINER_NAME}:/site" -w /site \
jekyll build --verbose
continue-on-error: true
- name: Prepare ssh key
id: prepare_ssh_key
if: ${{ gitea.ref == 'refs/heads/main' }}
run: |
echo "${{ secrets.WWW_DEPLOY_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
- name: Deploy Jekyll site
id: deploy_site
run: |
if [ "${{ gitea.ref }}" = 'refs/heads/main' ]; then
WEB_ROOT="${WEB_DIR}/site"
WEB_HOST="www.${WEB_DOMAIN}"
WEB_CONTEXT='/'
else
WEB_ROOT="${WEB_DIR}/preview"
WEB_HOST="preview.${WEB_DOMAIN}"
WEB_CONTEXT='/${{ gitea.event.pull_request.number }}/'
end
# Save those variabes in the environment for the next steps
echo "WEB_HOST=${WEB_HOST}" >> $GITEA_ENV
echo "WEB_CONTEXT=${WEB_CONTEXT}" >> $GITEA_ENV
# Synchronize the local and the remote site
rsync -halvi --delete \
-e "ssh -a -x -o StrictHostKeyChecking=no" \
"./_site/" "${WEB_USER}@${WEB_DOMAIN}:${WEB_ROOT}${WEB_CONTEXT}"
- name: Comment pull request
id: comment_pull_request
if: gitea.event_name == 'pull_request'
uses: exercism/pr-commenter-action@v1.5.1
with:
template-variables: |
{
"imageOutcome": "${{ steps.build_image.outcome }}",
"buildOutcome": "${{ steps.build_site.outcome }}",
"buildOutputsResult": ${{ toJSON(steps.build_site.outputs.result) }},
"deployOutcome": "${{ steps.deploy_site.outcome }}",
"deployWebHost": "${{ env.WEB_HOST }}",
"deployWebContext": "${{ env.WEB_CONTEXT }}",
"gitActor": "${{ gitea.actor }}",
"gitEventName": "${{ gitea.event_name }}",
"gitWorkflow": "${{ gitea.workflow }}",
"gitRunNumber": "${{ gitea.run_number }}",
"gitRunAttempt": "${{ gitea.run_attempt }}"
}
config-file: ".gitea/pr-commenter.yml"
- name: Fail on error
id: fail-on-error
if: |
steps.build_site.outcome != 'success'
|| (gittea.event_name == 'pull_request' && steps.deploy_site.outcome != 'success')
run: exit 1