|
# Simple workflow for deploying static content to GitHub Pages |
|
name: Deploy static content to Pages |
|
|
|
on: |
|
# Runs on pushes targeting the default branch |
|
push: |
|
branches: ["master"] |
|
pull_request: |
|
branches: |
|
- '*' |
|
|
|
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages |
|
|
|
|
|
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. |
|
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. |
|
concurrency: |
|
group: "pages" |
|
cancel-in-progress: false |
|
|
|
jobs: |
|
build: |
|
runs-on: ubuntu-latest |
|
steps: |
|
- name: Checkout |
|
uses: actions/checkout@v4 |
|
- name: Setup Node.js |
|
uses: actions/setup-node@v4 |
|
with: |
|
node-version: 20 |
|
- name: Install the dependencies |
|
run: npm ci |
|
- name: Build |
|
run: npm run build |
|
- name: Upload artifact |
|
uses: actions/upload-pages-artifact@v3 |
|
with: |
|
path: ./build |
|
|
|
deploy: |
|
needs: build |
|
if: github.ref == 'refs/heads/master' |
|
environment: |
|
name: github-pages |
|
url: ${{ steps.deployment.outputs.page_url }} |
|
runs-on: ubuntu-latest |
|
permissions: |
|
contents: read |
|
pages: write |
|
id-token: write |
|
steps: |
|
- name: Deploy to GitHub Pages |
|
id: deployment |
|
uses: actions/deploy-pages@v4 |
|
|
|
deploy-s3: |
|
needs: build |
|
if: github.ref == 'refs/heads/master' |
|
runs-on: ubuntu-latest |
|
steps: |
|
- name: Checkout |
|
uses: actions/checkout@v4 |
|
|
|
- name: Install s3cmd |
|
run: sudo apt-get update && sudo apt-get install -y s3cmd |
|
|
|
- name: Download build artifact |
|
uses: actions/download-artifact@v4 |
|
with: |
|
name: github-pages |
|
path: build |
|
|
|
- name: Extract artifact |
|
run: | |
|
tar -xf build/artifact.tar -C build |
|
|
|
- name: Check secret |
|
run: | |
|
if [ -z "${{ secrets.SCW_ACCESS_KEY }}" ]; then |
|
echo "Secret SCW_ACCESS_KEY is not set" |
|
exit 1 |
|
fi |
|
|
|
- name: Create s3cmd config |
|
run: | |
|
echo "[default]" > /home/runner/.s3cfg |
|
echo "access_key = ${{ secrets.SCW_ACCESS_KEY }}" >> /home/runner/.s3cfg |
|
echo "secret_key = ${{ secrets.SCW_SECRET_KEY }}" >> /home/runner/.s3cfg |
|
echo "host_base = s3.fr-par.scw.cloud" >> /home/runner/.s3cfg |
|
echo "host_bucket = %(bucket)s.s3.fr-par.scw.cloud" >> /home/runner/.s3cfg |
|
echo "use_https = True" >> /home/runner/.s3cfg |
|
|
|
- name: Sync build to S3 |
|
run: | |
|
s3cmd sync build/ s3://quantstack-site/ --acl-public \ |
|
--delete-removed --exclude '*.css' --exclude '*.js' --force |
|
s3cmd sync build/ s3://quantstack-site/ --acl-public \ |
|
--mime-type=text/css --exclude '*' --include '*.css' --force |
|
s3cmd sync build/ s3://quantstack-site/ --acl-public \ |
|
--mime-type=application/javascript --exclude '*' --include '*.js' --force |
|
|
|
- name: Ensure public ACL |
|
run: s3cmd setacl s3://quantstack-site/ --acl-public --recursive |