v2 upgrade (#125) #28
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
# | |
# This workflow takes care of running Development as well as building the app | |
# and deploying it to production on Fly.io. | |
# | |
name: 🚀 Deploy to prod | |
on: | |
push: | |
branches: | |
- main | |
permissions: | |
actions: write | |
contents: read | |
env: | |
FLY_REGION: dfw | |
FLY_ORG: remix-austin | |
ENVIRONMENT_NAME: production | |
ENVIRONMENT_URL: https://remixaustin.com/ | |
jobs: | |
log: | |
name: 🪵 Log some helpful vars | |
runs-on: ubuntu-latest | |
steps: | |
# Slashes in the ref_name will break Fly's Docker tags. | |
- name: Replace slashes in ref_name | |
id: clean_ref_name | |
uses: frabert/[email protected] | |
with: | |
pattern: '(\d+)/merge' | |
string: "${{ github.ref_name }}" | |
replace-with: "$1-merge" | |
flags: "g" | |
- run: | | |
echo "::group::Log some helpful vars" | |
echo "🏷 ref = ${{ github.ref }}" | |
echo "🏷 ref_name = ${{ github.ref_name }}" | |
echo "🏷 CLEAN_REF_NAME = ${{ steps.app_name.outputs.value }}" | |
echo "🏷 event_name = ${{ github.event_name }}" | |
echo "🏷 event.action = ${{ github.event.action }}" | |
echo "🏷 event.number = ${{ github.event.number }}" | |
echo "🏷 github.workspace = ${{ github.workspace }}" | |
echo "🏷 FLY_ORG = ${{ env.FLY_ORG }}" | |
echo "🏷 FLY_REGION = ${{ env.FLY_REGION }}" | |
echo "🏷 ENVIRONMENT_NAME = ${{ env.ENVIRONMENT_NAME }}" | |
echo "🏷 ENVIRONMENT_URL = ${{ env.ENVIRONMENT_URL }}" | |
echo "::endgroup:: " | |
development: | |
name: 👷 Development | |
uses: remix-austin/remixaustin-com/.github/workflows/development.yml@main | |
build: | |
name: 🐳 Build | |
# only build/deploy main branch on pushes | |
if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }} | |
needs: [development] | |
runs-on: ubuntu-latest | |
steps: | |
- name: 🛑 Cancel Previous Runs | |
uses: styfle/[email protected] | |
- name: ⬇️ Checkout repo | |
uses: actions/checkout@v3 | |
- name: 👀 Read app name | |
uses: SebRollen/[email protected] | |
id: app_name | |
with: | |
file: "fly.toml" | |
field: "app" | |
- name: 🐳 Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
# Setup cache | |
- name: ⚡️ Cache Docker layers | |
uses: actions/cache@v3 | |
with: | |
path: /tmp/.buildx-cache | |
key: ${{ runner.os }}-buildx-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-buildx- | |
- name: 🔑 Fly Registry Auth | |
uses: docker/login-action@v2 | |
with: | |
registry: registry.fly.io | |
username: x | |
password: ${{ secrets.FLY_API_TOKEN }} | |
- name: 🐳 Docker build | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
push: true | |
tags: registry.fly.io/${{ steps.app_name.outputs.value }}:${{ github.ref_name }}-${{ github.sha }} | |
build-args: | | |
COMMIT_SHA=${{ github.sha }} | |
cache-from: type=local,src=/tmp/.buildx-cache | |
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new | |
# This ugly bit is necessary if you don't want your cache to grow forever | |
# till it hits GitHub's limit of 5GB. | |
# Temp fix | |
# https://github.com/docker/build-push-action/issues/252 | |
# https://github.com/moby/buildkit/issues/1896 | |
- name: 🚚 Move cache | |
run: | | |
rm -rf /tmp/.buildx-cache | |
mv /tmp/.buildx-cache-new /tmp/.buildx-cache | |
deploy: | |
name: 🚀 Deploy | |
environment: | |
name: production | |
url: https://remixaustin.com/ | |
needs: [build] | |
runs-on: ubuntu-latest | |
if: > | |
github.ref == 'refs/heads/main' | |
&& github.event_name == 'push' | |
steps: | |
- name: 🛑 Cancel Previous Runs | |
uses: styfle/[email protected] | |
- name: ⬇️ Checkout repo | |
uses: actions/checkout@v3 | |
- name: 👀 Read app name | |
uses: SebRollen/[email protected] | |
id: app_name | |
with: | |
file: "fly.toml" | |
field: "app" | |
- uses: superfly/flyctl-actions/setup-flyctl@master | |
- name: 🚀 Deploy Production | |
run: "flyctl deploy --image registry.fly.io/${{ steps.app_name.outputs.value }}:${{ github.ref_name }}-${{ github.sha }}" | |
env: | |
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} | |
FLY_REGION: ${{ env.FLY_REGION }} | |
FLY_ORG: ${{ env.FLY_ORG }} |