Skip to content

Update main.yml

Update main.yml #183

Workflow file for this run

name: CI/CD
on:
push:
branches: [master]
pull_request:
branches: [master]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.4
- name: Setup Ruby enviornment
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.0
- name: Setup Node.js enviornemnt
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install yarn
run: |
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update && sudo apt install yarn
yarn --version
- name: Install all dependencies
run: |
cd website && bundle install --jobs=10 && cd ..
gem install jekyll --user-install
yarn
- name: Build assets (such as imgs, css, js, etc.) with gulp (pre-build of website)
run: gulp prebuild
- name: Build link redirect pages
run: node create_site_redirect_links.js
- name: Build site with Jekyll
run: cd website && bundle exec jekyll build && cd ..
- name: More gulp tasks for minification and optimization (post-build of website)
run: gulp postbuild
- name: Prepare
run: |
mkdir public
cp -r website/_site/* public
cd public
cd ..
- name: Save as an artifact
uses: actions/upload-artifact@v2
with:
name: public-website
path: ./public
# security-testing:
# runs-on: ubuntu-latest
# needs: [build]
# steps:
# - name: Download artifact
# uses: actions/download-artifact@v2
# with:
# name: public-website
# path: ./public
# - name: Setup Node.js enviornemnt
# uses: actions/setup-node@v1.4.4
# - name: Install http-server
# run: sudo npm install --global http-server
# - name: Run http-server
# run: http-server ./public &
# - name: OWASP ZAP Baseline Scan
# uses: zaproxy/action-baseline@v0.4.0
# with:
# target: http://localhost:8080
# cmd_options: -I
lighthouse-check:
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v2.3.4
- name: Download artifact
uses: actions/download-artifact@v2
with:
name: public-website
path: ./public
- name: Setup Node.js enviornemnt
uses: actions/setup-node@v1.4.4
- name: Install http-server
run: sudo npm install --global http-server
- name: Run http-server
run: http-server ./public &
- name: Make tempdir for artifacts
run: mkdir /tmp/artifacts
- name: Run Lighthouse
uses: foo-software/lighthouse-check-action@v2.0.5
with:
accessToken: ${{ secrets.GITHUB_TOKEN }}
author: ${{ github.actor }}
outputDirectory: /tmp/artifacts
urls: "http://localhost:8080/,http://localhost:8080/rover,http://localhost:8080/sumobot"
sha: ${{ github.sha }}
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: Lighthouse reports
path: /tmp/artifacts
html5-validation-testing:
runs-on: ubuntu-latest
needs: [build]
steps:
- name: Download artifact
uses: actions/download-artifact@v2
with:
name: public-website
path: ./public
- name: HTML5 Validation
uses: Cyb3r-Jak3/html5validator-action@v0.4.3
with:
root: ./public
deploy:
runs-on: ubuntu-latest
needs: [build, html5-validation-testing]
# needs: [build, security-testing, html5-validation-testing]
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v2.3.4
- name: Download artifact
uses: actions/download-artifact@v2
with:
name: public-website
path: ./public
- name: Deploy
uses: peaceiris/actions-gh-pages@v3.7.3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public