From 256b7b5852d8f265bf331adb032078bb6b74d292 Mon Sep 17 00:00:00 2001 From: Alexander Henderson Date: Thu, 6 Jun 2024 13:31:41 -0400 Subject: [PATCH] add ci.yml --- .github/workflows/ci.yml | 151 ++++++++++++++++++++++++++++++++ src/layouts/DefaultLayout.astro | 4 +- 2 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f110678 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,151 @@ +name: Deploy Site + +on: + push: + branches: + - dev + - main + +jobs: + prod: + if: github.ref =='refs/heads/main' && !contains(github.event.head_commit.message, '!noci') + runs-on: ubuntu-latest + steps: + - name: checkout repo + uses: actions/checkout@v4 + + - name: setup node + uses: actions/setup-node@v4 + with: + node-version: '20.12.1' + cache: 'npm' + + - name: Public IP + id: ip + uses: candidob/get-runner-ip@v1.0.0 + + - name: Setup Linode Cloud Firewall + uses: linode/action-linode-cli@v1 + with: + token: "${{ secrets.LINODE_CLI_TOKEN }}" + + - name: build dev + id: build + run: | + sed -i -e 's#{GA_ID}#'${{ secrets.GOOGLE_ANALYTICS_ID }}'#g' ./src/layouts/DefaultLayout.astro + npm install + npm run build + + - name: test production site + uses: chabad360/htmlproofer@master + id: testing + with: + directory: "./dist/" + arguments: --disable-external --checks --allow-hash-href --ignore_urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/" + + - name: Setup SSH + id: ssh-setup + run: | + mkdir ~/.ssh + touch ~/.ssh/known_hosts + echo ${{ secrets.LINODEFINGERPRINT }} >> ~/.ssh/known_hosts + + - name: Open Linode Cloud Firewall for GH + if: (steps.ssh-setup.outcome == 'success') + id: linode-fw-open + env: + PUB_IP: "${{ steps.ip.outputs.ipv4 }}/32" + HOME_IP: "${{ secrets.HOMEIP }}" + LINODE_FW_ID: "${{ secrets.LINODE_FW_ID }}" + run: | + wget https://raw.githubusercontent.com/alexandzors/utils/main/linode-scripts/linode.sh + bash ./linode.sh -a --verbose + + - name: deploy blog + uses: burnett01/rsync-deployments@5.2.1 + id: deploy + with: + switches: -avr + path: ./dist/ + remote_path: /opt/sites/agnet/ + remote_host: ${{ secrets.LINODEHOST }} + remote_port: 22 + remote_user: ${{ secrets.LINODEUSER }} + remote_key: ${{ secrets.LINODESSHKEY }} + + - name: Close Linode Cloud Firewall for GH + if: (steps.deploy.outcome == 'success') || (steps.deploy.outcome == 'failed' || steps.deploy.outcome == 'skipped') + id: linode-fw-close + run: | + bash ./linode.sh -d --verbose + + dev: + if: github.ref =='refs/heads/dev' && !contains(github.event.head_commit.message, '!noci') + runs-on: ubuntu-latest + steps: + - name: checkout repo + uses: actions/checkout@v4 + + - name: setup node + uses: actions/setup-node@v4 + with: + node-version: '20.12.1' + cache: 'npm' + + - name: Public IP + id: ip + uses: candidob/get-runner-ip@v1.0.0 + + - name: Setup Linode Cloud Firewall + uses: linode/action-linode-cli@v1 + with: + token: "${{ secrets.LINODE_CLI_TOKEN }}" + + - name: build dev + id: build + run: | + npm install + npm run build + + - name: test production site + uses: chabad360/htmlproofer@master + id: testing + with: + directory: "./dist/" + arguments: --disable-external --checks --allow-hash-href --ignore_urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/" + + - name: Setup SSH + id: ssh-setup + run: | + mkdir ~/.ssh + touch ~/.ssh/known_hosts + echo ${{ secrets.LINODEFINGERPRINT }} >> ~/.ssh/known_hosts + + - name: Open Linode Cloud Firewall for GH + if: (steps.ssh-setup.outcome == 'success') + id: linode-fw-open + env: + PUB_IP: "${{ steps.ip.outputs.ipv4 }}/32" + HOME_IP: "${{ secrets.HOMEIP }}" + LINODE_FW_ID: "${{ secrets.LINODE_FW_ID }}" + run: | + wget https://raw.githubusercontent.com/alexandzors/utils/main/linode-scripts/linode.sh + bash ./linode.sh -a --verbose + + - name: deploy blog + uses: burnett01/rsync-deployments@5.2.1 + id: deploy + with: + switches: -avr + path: ./dist/ + remote_path: /opt/sites/agnet-dev/ + remote_host: ${{ secrets.LINODEHOST }} + remote_port: 22 + remote_user: ${{ secrets.LINODEUSER }} + remote_key: ${{ secrets.LINODESSHKEY }} + + - name: Close Linode Cloud Firewall for GH + if: (steps.deploy.outcome == 'success') || (steps.deploy.outcome == 'failed' || steps.deploy.outcome == 'skipped') + id: linode-fw-close + run: | + bash ./linode.sh -d --verbose \ No newline at end of file diff --git a/src/layouts/DefaultLayout.astro b/src/layouts/DefaultLayout.astro index 1064701..4416b0a 100644 --- a/src/layouts/DefaultLayout.astro +++ b/src/layouts/DefaultLayout.astro @@ -17,7 +17,7 @@ const {