Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 89 additions & 43 deletions .github/workflows/deploy_to_netlify.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,41 +25,49 @@ jobs:
env:
DEPLOY_ENVIRONMENT: pr-${{ github.event.number }}
run: |
echo "DEPLOY_ENVIRONMENT=$DEPLOY_ENVIRONMENT" >> $GITHUB_ENV
echo "NETLIFY_DEPLOY_PREFIX=${DEPLOY_ENVIRONMENT}--" >> $GITHUB_ENV
echo "NETLIFY_DEPLOY_ALIAS=$DEPLOY_ENVIRONMENT" >> $GITHUB_ENV
{
echo "DEPLOY_ENVIRONMENT=$DEPLOY_ENVIRONMENT"
echo "NETLIFY_DEPLOY_PREFIX=${DEPLOY_ENVIRONMENT}--"
echo "NETLIFY_DEPLOY_ALIAS=$DEPLOY_ENVIRONMENT"
} >> "$GITHUB_ENV"

- name: Set deploy environment as preview
if: github.base_ref == 'develop' && github.event.action == 'closed' && github.event.pull_request.merged == true
env:
DEPLOY_ENVIRONMENT: preview
PR_DEPLOY_ENVIRONMENT: pr-${{ github.event.number }}
run: |
echo "DEPLOY_ENVIRONMENT=$DEPLOY_ENVIRONMENT" >> $GITHUB_ENV
echo "PR_DEPLOY_ENVIRONMENT=$PR_DEPLOY_ENVIRONMENT" >> $GITHUB_ENV
echo "NETLIFY_DEPLOY_PREFIX=${DEPLOY_ENVIRONMENT}--" >> $GITHUB_ENV
echo "NETLIFY_DEPLOY_ALIAS=$DEPLOY_ENVIRONMENT" >> $GITHUB_ENV
{
echo "DEPLOY_ENVIRONMENT=$DEPLOY_ENVIRONMENT"
echo "PR_DEPLOY_ENVIRONMENT=$PR_DEPLOY_ENVIRONMENT"
echo "NETLIFY_DEPLOY_PREFIX=${DEPLOY_ENVIRONMENT}--"
echo "NETLIFY_DEPLOY_ALIAS=$DEPLOY_ENVIRONMENT"
} >> "$GITHUB_ENV"

- name: Set deploy environment as staging
if: github.base_ref == 'main' && contains(fromJSON('["opened", "synchronize"]'), github.event.action)
env:
DEPLOY_ENVIRONMENT: staging
run: |
echo "DEPLOY_ENVIRONMENT=$DEPLOY_ENVIRONMENT" >> $GITHUB_ENV
echo "NETLIFY_DEPLOY_PREFIX=${DEPLOY_ENVIRONMENT}--" >> $GITHUB_ENV
echo "NETLIFY_DEPLOY_ALIAS=$DEPLOY_ENVIRONMENT" >> $GITHUB_ENV
{
echo "DEPLOY_ENVIRONMENT=$DEPLOY_ENVIRONMENT"
echo "NETLIFY_DEPLOY_PREFIX=${DEPLOY_ENVIRONMENT}--"
echo "NETLIFY_DEPLOY_ALIAS=$DEPLOY_ENVIRONMENT"
} >> "$GITHUB_ENV"

- name: Set deploy environment as production
if: github.base_ref == 'main' && github.event.action == 'closed' && github.event.pull_request.merged == true
run: echo "DEPLOY_ENVIRONMENT=production" >> $GITHUB_ENV
run: echo "DEPLOY_ENVIRONMENT=production" >> "$GITHUB_ENV"

- name: Set deploy environment output
id: deploy_environment
run: |
echo "github_environment=$DEPLOY_ENVIRONMENT" >> $GITHUB_OUTPUT
echo "github_pr_environment=$PR_DEPLOY_ENVIRONMENT" >> $GITHUB_OUTPUT
echo "netlify_deploy_prefix=$NETLIFY_DEPLOY_PREFIX" >> $GITHUB_OUTPUT
echo "netlify_deploy_alias=$NETLIFY_DEPLOY_ALIAS" >> $GITHUB_OUTPUT
{
echo "github_environment=$DEPLOY_ENVIRONMENT"
echo "github_pr_environment=$PR_DEPLOY_ENVIRONMENT"
echo "netlify_deploy_prefix=$NETLIFY_DEPLOY_PREFIX"
echo "netlify_deploy_alias=$NETLIFY_DEPLOY_ALIAS"
} >> "$GITHUB_OUTPUT"

outputs:
github_environment: ${{ steps.deploy_environment.outputs.github_environment }}
Expand Down Expand Up @@ -91,7 +99,7 @@ jobs:

- name: Get PNPM store directory
id: pnpm-cache
run: echo "pnpm_store_path=$(pnpm store path)" >> $GITHUB_OUTPUT
run: echo "pnpm_store_path=$(pnpm store path)" >> "$GITHUB_OUTPUT"

- name: Setup pnpm cache
uses: actions/cache@v3
Expand All @@ -109,7 +117,7 @@ jobs:

- name: Set as production environment
if: needs.set_deploy_environment.outputs.github_environment == 'production'
run: echo "PROD=true" >> $GITHUB_ENV
run: echo "PROD=true" >> "$GITHUB_ENV"

- name: Deploy ${{ needs.set_deploy_environment.outputs.github_environment }}
id: deploy
Expand All @@ -124,11 +132,11 @@ jobs:
shell: bash
run: |
set -e
[[ ${PROD:-false} == "true" ]] && \
([[ ${PROD:-false} == "true" ]] && \
OUTPUT=$(GA_ID=$SITE_GA_ID \
SWETRIX_ID=$SITE_SWETRIX_ID \
COUNTER_ANALYTICS_ID=$SITE_COUNTER_ANALYTICS_ID \
DISQUS_ID=$SITE_DISQUS_ID \
SWETRIX_ID="${SITE_SWETRIX_ID}" \
COUNTER_ANALYTICS_ID="${SITE_COUNTER_ANALYTICS_ID}" \
DISQUS_ID="${SITE_DISQUS_ID}" \
pnpm netlify deploy \
--auth ${{ env.NETLIFY_AUTH_TOKEN }} \
--site ${{ env.NETLIFY_SITE_ID }} \
Expand All @@ -137,22 +145,26 @@ jobs:
--context production \
--message "$(git log -1 --pretty=%s)" \
--prod \
| tr '\n' ' ') || \
OUTPUT=$(pnpm netlify deploy \
--auth ${{ env.NETLIFY_AUTH_TOKEN }} \
--site ${{ env.NETLIFY_SITE_ID }} \
--json \
--build \
--context deploy-preview \
--alias ${NETLIFY_DEPLOY_ALIAS} \
--message "$(git log -1 --pretty=%s)" \
| tr '\n' ' ')
| tr '\n' ' ')) || \
OUTPUT=$(
SWETRIX_ID="${SITE_SWETRIX_ID}" \
COUNTER_ANALYTICS_ID="${SITE_COUNTER_ANALYTICS_ID}" \
DISQUS_ID="${SITE_DISQUS_ID}" \
pnpm netlify deploy \
--auth ${{ env.NETLIFY_AUTH_TOKEN }} \
--site ${{ env.NETLIFY_SITE_ID }} \
--json \
--build \
--context deploy-preview \
--alias "${NETLIFY_DEPLOY_ALIAS}" \
--message "$(git log -1 --pretty=%s)" \
| tr '\n' ' ')
set +e

NETLIFY_OUTPUT=$(echo "$OUTPUT")
NETLIFY_OUTPUT="$OUTPUT"

echo "netlify_output=$NETLIFY_OUTPUT" >> $GITHUB_OUTPUT
echo "success=true" >> $GITHUB_OUTPUT
echo "netlify_output=$NETLIFY_OUTPUT" >> "$GITHUB_OUTPUT"
echo "success=true" >> "$GITHUB_OUTPUT"

- name: Post deploy ${{ needs.set_deploy_environment.outputs.github_environment }}
id: post_deploy
Expand All @@ -162,30 +174,64 @@ jobs:
NETLIFY_PROD_URL: ${{ fromJson(steps.deploy.outputs.netlify_output).url }}
run: |
[[ ${PROD:-false} == "true" ]] && \
echo "netlify_deploy_url=$NETLIFY_PROD_URL" >> $GITHUB_OUTPUT || \
echo "netlify_deploy_url=$NETLIFY_DRAFT_URL" >> $GITHUB_OUTPUT
echo "netlify_deploy_url=$NETLIFY_PROD_URL" >> "$GITHUB_OUTPUT" || \
echo "netlify_deploy_url=$NETLIFY_DRAFT_URL" >> "$GITHUB_OUTPUT"

- name: Debug deploy ${{ needs.set_deploy_environment.outputs.github_environment }}
id: debug-deploy
if: always() && (steps.deploy.outcome == 'failure' || steps.post_deploy.outcome == 'failure' )
env:
NETLIFY_DEPLOY_PREFIX: ${{ needs.set_deploy_environment.outputs.netlify_deploy_prefix }}
NETLIFY_DEPLOY_ALIAS: ${{ needs.set_deploy_environment.outputs.netlify_deploy_alias }}
SITE_GA_ID: ${{ vars.SITE_GA_ID }}
SITE_SWETRIX_ID: ${{ vars.SITE_SWETRIX_ID }}
SITE_COUNTER_ANALYTICS_ID: ${{ vars.SITE_COUNTER_ANALYTICS_ID }}
SITE_DISQUS_ID: ${{ vars.SITE_DISQUS_ID }}
shell: bash
run: |
echo "node version $(node -v)"
echo "pnpm version $(pnpm -v)"
([[ ${PROD:-false} == "true" ]] && \
GA_ID=$SITE_GA_ID \
SWETRIX_ID="${SITE_SWETRIX_ID}" \
COUNTER_ANALYTICS_ID="${SITE_COUNTER_ANALYTICS_ID}" \
DISQUS_ID="${SITE_DISQUS_ID}" \
pnpm netlify deploy \
--auth ${{ env.NETLIFY_AUTH_TOKEN }} \
--site ${{ env.NETLIFY_SITE_ID }} \
--build \
--context production \
--message "$(git log -1 --pretty=%s)" \
--prod) || \
GA_ID=$SITE_GA_ID \
SWETRIX_ID="${SITE_SWETRIX_ID}" \
COUNTER_ANALYTICS_ID="${SITE_COUNTER_ANALYTICS_ID}" \
DISQUS_ID="${SITE_DISQUS_ID}" \
pnpm netlify deploy \
--auth ${{ env.NETLIFY_AUTH_TOKEN }} \
--site ${{ env.NETLIFY_SITE_ID }} \
--build \
--context deploy-preview \
--alias "${NETLIFY_DEPLOY_ALIAS}" \
--message "$(git log -1 --pretty=%s)"
outputs:
success: ${{ steps.deploy.outputs.success }}

delete_resources:
needs:
- set_deploy_environment
- deploy
if: needs.deploy.outputs.success == 'true' &&
github.base_ref == 'develop' &&
github.event.action == 'closed' &&
github.event.pull_request.merged == true
if: needs.deploy.outputs.success == 'true' && github.base_ref == 'develop' && github.event.action == 'closed' && github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- name: Delete the PR branch after merged into develop
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
GIT_REF_PATH: /repos/${{ github.repository }}/git/refs/heads/${{ github.head_ref }}
run: |
STATUS_CODE=$(gh api -i -H "Accept: application/vnd.github+json" $GIT_REF_PATH | head -1)
[[ "$STATUS_CODE" == "HTTP/2.0 200 OK" ]] && \
gh api --method DELETE -H "Accept: application/vnd.github+json" $GIT_REF_PATH || \
STATUS_CODE=$(gh api -i -H "Accept: application/vnd.github+json" "${GIT_REF_PATH}" | head -1)
([[ "$STATUS_CODE" == "HTTP/2.0 200 OK" ]] && \
gh api --method DELETE -H "Accept: application/vnd.github+json" "${GIT_REF_PATH}") || \
echo "Branch does not exist, deleting was ignored."

- name: Delete the environment ${{ needs.set_deploy_environment.outputs.github_pr_environment }}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"@astrojs/rss": "^2.4.3",
"@astrojs/sitemap": "^1.3.1",
"@astrojs/tailwind": "^3.1.3",
"astro": "2.4.5",
"astro": "2.5.3",
"astro-compress": "^1.1.44",
"astro-purgecss": "^2.0.1",
"tailwindcss": "^3.3.2"
Expand Down
Loading