Last active
January 7, 2020 14:50
-
-
Save myobie/aafd9885aeea21aed19b85a60cacda4f to your computer and use it in GitHub Desktop.
Zeit's now preview and prod deploy Actions Workflow – emulates how Zeit's Now GitHub integration works, but is even better because it forces a rebuild even if the source code hasn't changed
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: now | |
on: | |
push: | |
jobs: | |
deploy-prod: | |
name: Deploy prod | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/master' | |
steps: | |
- name: Installing node | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 10.x | |
# Use the same node.js version as the one Zeit's uses (currently node10.x) | |
- name: Checking out the code | |
uses: actions/checkout@v1 | |
- name: Deploying now | |
run: now -C -f --prod --token "$ZEIT_TOKEN" | |
env: | |
ZEIT_TOKEN: ${{ secrets.ZEIT_TOKEN }} | |
deploy: | |
name: Deploy preview | |
runs-on: ubuntu-latest | |
if: github.ref != 'refs/heads/master' | |
steps: | |
- name: Installing node | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 10.x | |
# Use the same node.js version as the one Zeit's uses (currently node10.x) | |
- name: Checking out the code | |
uses: actions/checkout@v1 | |
- name: Detect metadata | |
run: | | |
IFS='/' read -ra ref_parts <<< "${GITHUB_REF}" | |
branch_parts=`echo "${ref_parts[@]:2}"` | |
branch=`echo "${branch_parts// /-}" | tr '[:upper:]' '[:lower:]'` | |
echo "branch: ${branch}" | |
u=`now whoami --token "${ZEIT_TOKEN}" | perl -pe 'chomp'` | |
echo "now user: ${u}" | |
project=`cat now.json | jq -r .name | tr -d '.' | perl -pe 'chomp'` | |
echo "now project: ${project}" | |
scope=`cat now.json | jq -r .scope | tr -d '.' | perl -pe 'chomp'` | |
if [[ -n "${scope}" ]]; then | |
echo "now scope: ${scope}" | |
echo "https://${project}-git-${branch}.${scope}.now.sh" > /tmp/preview_url.txt | |
else | |
echo "https://${project}-git-${branch}.${u}.now.sh" > /tmp/preview_url.txt | |
fi | |
cat /tmp/preview_url.txt | |
env: | |
ZEIT_TOKEN: ${{ secrets.ZEIT_TOKEN }} | |
- name: Deploying now | |
run: | | |
now -C -f -b PREVIEW_URL=`cat /tmp/preview_url.txt` --token "$ZEIT_TOKEN" > /tmp/deployment.txt | |
cat /tmp/deployment.txt | |
env: | |
ZEIT_TOKEN: ${{ secrets.ZEIT_TOKEN }} | |
- name: Aliasing deployment | |
run: | | |
deployment=`cat /tmp/deployment.txt` | |
preview_url=`cat /tmp/preview_url.txt` | |
now alias set "${deployment}" "${preview_url}" --token "${ZEIT_TOKEN}" | |
echo "deployment: ${deployment}" | |
echo "preview_url: ${preview_url}" | |
env: | |
ZEIT_TOKEN: ${{ secrets.ZEIT_TOKEN }} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment