Skip to content

Publish Website

Publish Website #131

Workflow file for this run

name: Publish Website
on:
workflow_dispatch:
push:
branches:
- 1.3.x-ee
pull_request:
env:
WEBSITE_URL: 'test.eliatra.com'
jobs:
setup:
runs-on: ubuntu-latest
outputs:
ruby-version: '3.0'
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2'
bundler-cache: true
build:
needs: setup
runs-on: ubuntu-latest
outputs:
version: ${{ steps.config.outputs.version }}
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ needs.setup.outputs.ruby-version }}
bundler-cache: true
- id: config
name: Update _config.yml
run: |
sed -i '/^url:/c\url: "https://${{ env.WEBSITE_URL }}"' _config.yml
WEBSITE_VERSION=$(cat _config.yml | grep "^opensearch_major_minor_version:" | cut -d ':' -f2 | tr -d " '")
echo "version=$WEBSITE_VERSION" >> $GITHUB_OUTPUT
sed -i '/^baseurl:/c\baseurl: "/docs/'"$WEBSITE_VERSION"'"' _config.yml
cat _config.yml|grep -e "^url:" -e "^baseurl:"
- run: JEKYLL_ENV=production bundle exec jekyll build --future
- uses: actions/upload-artifact@v4
with:
name: site-artifacts
path: _site
retention-days: 1
deploy:
needs: build
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
steps:
- uses: actions/download-artifact@v4
with:
name: site-artifacts
path: _site
- name: Install SSH key
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.SFTP_SSH_PRIVATE_KEY }}
- name: Upload Folder
run: |
sudo apt install lftp -y
lftp --version
WEBSITE_VERSION=${{ needs.build.outputs.version }}
if [ -z "$WEBSITE_VERSION" ]; then
echo "WEBSITE_VERSION is empty"
exit 1
fi
echo "Start SFTP upload version: $WEBSITE_VERSION"
lftp -u opendistro, -e "set sftp:connect-program 'ssh -a -x -o StrictHostKeyChecking=no'; mkdir -p /var/www/opendistro/html/$WEBSITE_VERSION; mirror --reverse --parallel=20 --verbose _site/ /var/www/opendistro/html/$WEBSITE_VERSION/; quit" sftp://52.30.226.239
post_deploy:
needs: deploy
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
steps:
- name: Purge Cloudflare Cache
run: |
STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
-X POST "https://api.cloudflare.com/client/v4/zones/${{ secrets.ELIATRA_CLOUDFLARE_ZONEID }}/purge_cache" \
-H "Authorization: Bearer ${{ secrets.ELIATRA_CLOUDFLARE_DECACHE_TOKEN }}" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}')
if [ "$STATUS_CODE" -ne 200 ]; then
echo "Cloudflare API call failed with status $STATUS_CODE"
exit 1
else
echo "Cloudflare cache purged successfully"
fi