tuxmas phase 4 (#90) #98
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Deploy | |
on: | |
push: | |
branches: | |
- master | |
- staging | |
jobs: | |
Lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Setup Node.js | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 12.x | |
- name: Install | |
run: npm ci | |
- name: Lint | |
run: npm run lint | |
Test_Browser_Ubuntu: | |
name: Test (${{ matrix.browser }} on ubuntu) | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
browser: | |
- chrome | |
- firefox | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Setup Node.js | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 12.x | |
- name: Install | |
run: npm ci | |
- name: Setup | |
run: sudo apt-get install -y xvfb | |
- name: Build | |
run: npm run build | |
env: | |
NODE_ENV: test | |
- name: Test | |
run: | | |
xvfb-run --auto-servernum npx testcafe ${{ matrix.browser }}:headless test/browser/** | |
- name: Teardown | |
if: always() | |
run: | | |
xvfb_pids=`ps aux | grep tmp/xvfb-run | grep -v grep | awk '{print $2}'` | |
if [ "$xvfb_pids" != "" ]; then | |
sudo kill $xvfb_pids || true | |
fi | |
- name: Upload | |
uses: actions/upload-artifact@v1 | |
if: failure() | |
with: | |
name: ${{ matrix.browser }} on ubuntu | |
path: test/screenshots | |
Test_Browser_Windows: | |
name: Test (${{ matrix.browser }} on windows) | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
browser: | |
- chrome | |
- edge | |
- firefox | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Setup Node.js | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 12.x | |
- name: Install | |
run: npm ci | |
- name: Build | |
run: npm run build | |
env: | |
NODE_ENV: test | |
- name: Test | |
run: npx testcafe ${{ matrix.browser }} test/browser/** | |
- name: Upload | |
uses: actions/upload-artifact@v1 | |
if: failure() | |
with: | |
name: ${{ matrix.browser }} on windows | |
path: test/screenshots | |
Build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Setup mdBook | |
uses: peaceiris/actions-mdbook@v1 | |
with: | |
mdbook-version: '0.4.15' | |
- name: Build Docs | |
run: mdbook build | |
- name: Setup Node.js | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 12.x | |
- name: Install | |
run: npm ci | |
- name: Build Website | |
run: npm run build | |
env: | |
NODE_ENV: production | |
Deploy: | |
runs-on: ubuntu-latest | |
needs: | |
- Lint | |
- Test_Browser_Ubuntu | |
- Test_Browser_Windows | |
- Build | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Setup AWS | |
run: sudo apt install -y awscli | |
- name: Setup mdBook | |
uses: peaceiris/actions-mdbook@v1 | |
with: | |
mdbook-version: '0.4.15' | |
- name: Build Docs | |
run: mdbook build | |
- name: Setup Node.js | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 12.x | |
- name: Install | |
run: npm ci | |
- name: Environment | |
run: | | |
if [ $GITHUB_REF == "refs/heads/master" ]; then | |
echo "DEPLOY_ENV=production" >> $GITHUB_ENV | |
echo "AWS_ACCESS_KEY_ID=${{ secrets.PRODUCTION_ACCESS_KEY }}" >> $GITHUB_ENV | |
echo "AWS_SECRET_ACCESS_KEY=${{ secrets.PRODUCTION_ACCESS_SECRET }}" >> $GITHUB_ENV | |
echo "AWS_DEFAULT_REGION=${{ secrets.PRODUCTION_REGION }}" >> $GITHUB_ENV | |
echo "AWS_BUCKET=${{ secrets.PRODUCTION_BUCKET }}" >> $GITHUB_ENV | |
else | |
echo "DEPLOY_ENV=staging" >> $GITHUB_ENV | |
echo "AWS_ACCESS_KEY_ID=${{ secrets.STAGING_ACCESS_KEY }}" >> $GITHUB_ENV | |
echo "AWS_SECRET_ACCESS_KEY=${{ secrets.STAGING_ACCESS_SECRET }}" >> $GITHUB_ENV | |
echo "AWS_DEFAULT_REGION=${{ secrets.STAGING_REGION }}" >> $GITHUB_ENV | |
echo "AWS_BUCKET=${{ secrets.STAGING_BUCKET }}" >> $GITHUB_ENV | |
fi | |
- name: Build Website | |
run: npm run build | |
- name: Upload | |
run: | | |
aws s3 sync dist s3://$AWS_BUCKET/ \ | |
--acl public-read \ | |
--cache-control public,max-age=31556952,immutable \ | |
--exclude "*" \ | |
--include "/_nuxt/*" | |
aws s3 sync dist s3://$AWS_BUCKET/ \ | |
--acl public-read \ | |
--cache-control public,max-age=86400 \ | |
--exclude "/_nuxt/*" \ | |
--exclude "*.html" | |
aws s3 sync dist s3://$AWS_BUCKET/ \ | |
--acl public-read \ | |
--cache-control public,max-age=3600,stale-while-revalidate=300 \ | |
--exclude "*" \ | |
--include "*.html" |