on: workflow_dispatch: inputs: container_tag: description: "Tag of the container to test" default: "preview" type: "string" jobs: unlighthouse: runs-on: docker container: image: forgejo.neshweb.net/ci-docker-images/unlighthouse:0.3.0 services: website: image: forgejo.neshweb.net/firq/firq-dev-website:${{ inputs.container_tag }} options: >- --workdir / steps: - name: Checkout repository uses: https://code.forgejo.org/actions/checkout@v3 - name: Run unlighthouse run: unlighthouse-ci --site "http://localhost:8081/" --disable-dynamic-sampling - name: Prepare artifacts run: cp serve.json unlighthouse-reports - name: Upload reports uses: actions/upload-artifact@v3 with: name: unlighthouse-reports path: unlighthouse-reports/ deploy-unlighthouse-files: needs: [ unlighthouse ] if: success() runs-on: docker env: DEPLOY_USER: ${{ secrets.DEPLOY_USER }} DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} steps: - name: Install and update ssh + rsync run: | which rsync || ( apt update -y && apt install rsync -y) which ssh-agent || ( apt update -y && apt install openssh-client -y) - name: Downloading static site artifacts uses: actions/download-artifact@v3 with: name: unlighthouse-reports path: public - name: Install SSH Key uses: https://github.com/shimataro/ssh-key-action@v2 with: key: ${{ secrets.SSH_PRIVATE_KEY }} known_hosts: unnecessary - name: Adding Known Hosts run: ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts - name: Stop screen session, delete old files uses: https://github.com/appleboy/ssh-action@master with: host: ${{ env.DEPLOY_HOST }} username: ${{ env.DEPLOY_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | screen -X -S firq_dev-unlighthouse kill rm -r -f firq_dev/unlighthouse/* - name: Copy files using rsync run: rsync -az --stats public/* ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }}:~/firq_dev/unlighthouse - name: Check files on deploy target uses: https://github.com/appleboy/ssh-action@master with: host: ${{ env.DEPLOY_HOST }} username: ${{ env.DEPLOY_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | cd firq_dev find unlighthouse -maxdepth 1 -printf "%p\n" deploy-unlighthouse-site: needs: [ deploy-unlighthouse-files ] if: success() runs-on: docker env: DEPLOY_USER: ${{ secrets.DEPLOY_USER }} DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} steps: - name: Install and update ssh + rsync run: | which rsync || ( apt update -y && apt install rsync -y) which ssh-agent || ( apt update -y && apt install openssh-client -y) - name: Install SSH Key uses: https://github.com/shimataro/ssh-key-action@v2 with: key: ${{ secrets.SSH_PRIVATE_KEY }} known_hosts: unnecessary - name: Adding Known Hosts run: ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts - name: Start new screen session uses: https://github.com/appleboy/ssh-action@master with: host: ${{ env.DEPLOY_HOST }} username: ${{ env.DEPLOY_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | PATH="$HOME/.local/bin:$PATH" screen -ls | grep 'firq_dev-unlighthouse' | awk '{print $1}' | xargs -I % -t screen -X -S % quit cd firq_dev screen -S firq_dev-unlighthouse -dm serve unlighthouse/ -p ${{ secrets.UNLIGHTHOUSE_DEPLOY_PORT }}