name: CI on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - name: "Cache JS modules" uses: actions/cache@v2 id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: "Cache gems" uses: actions/cache@v2 id: gem-cache with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} restore-keys: | ${{ runner.os }}-gems- - name: "Install Ruby and Javascript dependencies" env: RAILS_ENV: "test" NODE_ENV: "test" run: | bundle config set path 'vendor/bundle' bundle install --jobs 4 --retry 3 yarn --force yarn run webpack-single-shot - name: "Build site" run: bundle exec jekyll build - name: "Run rubocop" run: bundle exec rubocop - name: "Run tests" run: bundle exec rake - name: "Create tarball" run: tar czvf site.tar.gz _site - name: "Upload tarball" uses: appleboy/scp-action@master with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} port: ${{ secrets.PORT }} key: ${{ secrets.KEY }} passphrase: ${{ secrets.PASSPHRASE }} source: "site.tar.gz" target: "tmp" - name: "Update file system" uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} port: ${{ secrets.PORT }} key: ${{ secrets.KEY }} passphrase: ${{ secrets.PASSPHRASE }} script: | cd tmp tar xzvf site.tar.gz rm -rf ${{ secrets.DEST }}/* cp -r _site/* ${{ secrets.DEST }}/ rm -r _site site.tar.gz