-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c825d3d
commit e44c77f
Showing
1 changed file
with
16 additions
and
14 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,12 +16,14 @@ You can copy the files located at [`.github/workflows/`](./.github/workflows/) a | |
You will then need to set the following secrets in your repository: | ||
|
||
- `FLY_API_TOKEN`: Your Fly.io API token, you can find it in your Fly.io account settings. | ||
- `NEON_PROJECT_ID`: The ID of your Neon project, you can find it in your Neon project settings. | ||
- `NEON_API_KEY`: Your Neon API key, you can find it in your Neon account settings. | ||
- `NEON_DATABASE_USERNAME`: The username for your Neon database. This is the same as the username for your production database. | ||
- `DATABASE_URL`: The connection string for your production database. You can find it in your Neon project's connection details. | ||
- `GH_TOKEN`: A GitHub token with access to your repository, you can create one in your GitHub account settings. You will need to give it access to the `repo` scope so that the `deploy-preview` workflow can comment on the pull request. You can uncomment the step which uses this token in the `.github/workflows/deploy-preview.yml` workflow file. | ||
|
||
You will then need to set the following variables: | ||
|
||
- `NEON_PROJECT_ID`: The ID of your Neon project, you can find it in your Neon project settings. | ||
|
||
## How it works | ||
|
||
### Preview deployment | ||
|
@@ -32,7 +34,7 @@ Activated on a `pull_request` event | |
on: [pull_request] | ||
``` | ||
|
||
Requires the `NEON_API_KEY`, `NEON_PROJECT_ID`, `GH_TOKEN`, `FLY_API_TOKEN` and `NEON_DATABASE_USERNAME` secrets that are set in the repository. | ||
Requires the `NEON_API_KEY`, `NEON_PROJECT_ID`, `GH_TOKEN`, and `FLY_API_TOKEN` secrets that are set in the repository. | ||
|
||
The workflow has a single job called `deploy-preview` | ||
```yaml | ||
|
@@ -48,36 +50,36 @@ In that job it consists of the following steps: | |
group: pr-${{ github.event.number }} | ||
``` | ||
|
||
2. Check out the codebase using [`actions/checkout@v4`](https://github.com/marketplace/actions/checkout). | ||
1. Check out the codebase using [`actions/checkout@v4`](https://github.com/marketplace/actions/checkout). | ||
```yaml | ||
- uses: actions/checkout@v4 | ||
``` | ||
3. Sets up PNPM with [`pnpm/action-setup@v2`](https://github.com/marketplace/actions/setup-pnpm). (You can use another package manager depending on your setup.) | ||
1. Sets up PNPM with [`pnpm/action-setup@v2`](https://github.com/marketplace/actions/setup-pnpm). (You can use another package manager depending on your setup.) | ||
```yaml | ||
- uses: pnpm/action-setup@v2 | ||
with: | ||
version: 8 | ||
``` | ||
4. Configures Node.js version with caching for PNPM via `actions/setup-node@v4`. | ||
1. Configures Node.js version with caching for PNPM via `actions/setup-node@v4`. | ||
```yaml | ||
- name: Use Node.js 18 | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18 | ||
cache: "pnpm" | ||
``` | ||
5. Installs dependencies using `pnpm install`. | ||
1. Installs dependencies using `pnpm install`. | ||
```yaml | ||
- name: Install dependencies | ||
run: pnpm install | ||
``` | ||
6. Retrieves and normalizes the branch name using [`tj-actions/branch-names@v8`](https://github.com/marketplace/actions/branch-names). | ||
1. Retrieves and normalizes the branch name using [`tj-actions/branch-names@v8`](https://github.com/marketplace/actions/branch-names). | ||
```yaml | ||
- name: Get branch name | ||
id: branch-name | ||
uses: tj-actions/branch-names@v8 | ||
``` | ||
7. Creates a Neon database branch for the pull request with [`neondatabase/create-branch-action@v4`](https://github.com/marketplace/actions/neon-database-create-branch-action). By default, the branch name will be `preview/<git-branch-name>-<commit_SHA>` | ||
1. Creates a Neon database branch for the pull request with [`neondatabase/create-branch-action@v5`](https://github.com/marketplace/actions/neon-database-create-branch-action). By default, the branch name will be `preview/<git-branch-name>-<commit_SHA>` | ||
```yaml | ||
- name: Create Neon Branch | ||
id: create-branch | ||
|
@@ -86,10 +88,10 @@ In that job it consists of the following steps: | |
project_id: ${{ env.NEON_PROJECT_ID }} | ||
# parent: dev # optional (defaults to your primary branch) | ||
branch_name: preview/pr-${{ github.event.number }}-${{ steps.branch-name.outputs.current_branch }} | ||
username: ${{ env.NEON_DATABASE_USERNAME }} | ||
username: "neondb_owner" # change this to your Neon database username if you're not using the default | ||
api_key: ${{ env.NEON_API_KEY }} | ||
``` | ||
8. Executes database migrations by setting up the `.env` file and running migration scripts. | ||
1. Executes database migrations by setting up the `.env` file and running migration scripts. | ||
``` | ||
- name: Run Migrations | ||
run: | | ||
|
@@ -99,15 +101,15 @@ In that job it consists of the following steps: | |
pnpm run db:migrate | ||
``` | ||
9. Deploys the application with [`superfly/[email protected].0`](https://github.com/marketplace/actions/github-action-for-deplying-staging-apps-on-fly-io), while including the Neon database URL. | ||
1. Deploys the application with [`superfly/[email protected].1`](https://github.com/marketplace/actions/github-action-for-deplying-staging-apps-on-fly-io), while including the Neon database URL. | ||
```yaml | ||
- name: Deploy | ||
id: deploy | ||
uses: superfly/[email protected].0 | ||
uses: superfly/[email protected].1 | ||
with: | ||
secrets: DATABASE_URL=${{ steps.create-branch.outputs.db_url }}?sslmode=require | ||
``` | ||
10. Comments on the pull request with deployment and database branch details using `thollander/actions-comment-pull-request@v2`. Here's an [example comment](https://github.com/neondatabase/preview-branches-with-fly/pull/9#issuecomment-1924660371) | ||
1. Comments on the pull request with deployment and database branch details using `thollander/actions-comment-pull-request@v2`. Here's an [example comment](https://github.com/neondatabase/preview-branches-with-fly/pull/9#issuecomment-1924660371) | ||
```yaml | ||
- name: Comment on Pull Request | ||
uses: thollander/actions-comment-pull-request@v2 | ||
|