ci: test env docker-compose deployment (#48)
* ci: test env docker-compose deployment * ci: test deployment * fix: replace delimiter with pipe to avoid conflict * fix: API_EXTERNAL_URL_TEST from secrets * chore: remove unneeded deploy when pull request * fix: cloud public host name/address * chore: trigger: change to push * chore: add ext_url for exposed gotrue auth server
This commit is contained in:
parent
e9fc2af43c
commit
3c598f178e
|
|
@ -0,0 +1,34 @@
|
|||
name: Deployment for Test Environment
|
||||
on:
|
||||
push:
|
||||
branches: main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up env vars
|
||||
run: |
|
||||
cp dev.env .env
|
||||
|
||||
# jwt secret
|
||||
sed -i 's|GOTRUE_JWT_SECRET=.*|GOTRUE_JWT_SECRET=${{ secrets.GOTRUE_JWT_SECRET_TEST }}|' .env
|
||||
# smtp settings
|
||||
sed -i 's|GOTRUE_SMTP_HOST=.*|GOTRUE_SMTP_HOST=smtp.gmail.com|' .env
|
||||
sed -i 's|GOTRUE_SMTP_PORT=.*|GOTRUE_SMTP_PORT=465|' .env
|
||||
sed -i 's|GOTRUE_SMTP_USER=.*|GOTRUE_SMTP_USER=${{ secrets.GOTRUE_SMTP_USER_TEST }}|' .env
|
||||
sed -i 's|GOTRUE_SMTP_PASS=.*|GOTRUE_SMTP_PASS=${{ secrets.GOTRUE_SMTP_PASS_TEST }}|' .env
|
||||
sed -i 's|GOTRUE_SMTP_ADMIN_EMAIL=.*|GOTRUE_SMTP_ADMIN_EMAIL=${{ secrets.GOTRUE_SMTP_ADMIN_EMAIL_TEST }}|' .env
|
||||
sed -i 's|GOTRUE_MAILER_AUTOCONFIRM=.*|GOTRUE_MAILER_AUTOCONFIRM=false|' .env
|
||||
# Google OAuth
|
||||
sed -i 's|GOTRUE_EXTERNAL_GOOGLE_ENABLED=.*|GOTRUE_EXTERNAL_GOOGLE_ENABLED=true|' .env
|
||||
sed -i 's|GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=.*|GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=${{ secrets.GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID_TEST }}|' .env
|
||||
sed -i 's|GOTRUE_EXTERNAL_GOOGLE_SECRET=.*|GOTRUE_EXTERNAL_GOOGLE_SECRET=${{ secrets.GOTRUE_EXTERNAL_GOOGLE_SECRET_TEST }}|' .env
|
||||
sed -i 's|GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=.*|GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=${{ secrets.GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI_TEST }}|' .env
|
||||
# Server Host
|
||||
sed -i 's|API_EXTERNAL_URL=.*|API_EXTERNAL_URL=${{ secrets.API_EXTERNAL_URL_TEST }}|' .env
|
||||
|
||||
- name: Deploy docker-compose
|
||||
run: sudo docker-compose up -d --build
|
||||
1
dev.env
1
dev.env
|
|
@ -16,6 +16,7 @@ GOTRUE_SMTP_PASS=email_sender_password
|
|||
GOTRUE_SMTP_ADMIN_EMAIL=comp_admin@@some_company.com
|
||||
|
||||
# clicking on email verification link will redirect to this host
|
||||
# change this to your own domain where you host the docker-compose or gotrue
|
||||
API_EXTERNAL_URL=http://localhost:9998
|
||||
|
||||
# the account that the test will pick up as a registered user
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ services:
|
|||
- GOTRUE_SITE_URL=appflowy-flutter:// # redirected to AppFlowy application
|
||||
- GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET} # authentication secret
|
||||
- GOTRUE_DB_DRIVER=postgres
|
||||
- API_EXTERNAL_URL=${API_EXTERNAL_URL:-http://localhost:9998} # change 'localhost' to the public host of machine that is running on
|
||||
- API_EXTERNAL_URL=${API_EXTERNAL_URL}
|
||||
- DATABASE_URL=postgres://supabase_auth_admin:root@postgres:5432/postgres
|
||||
- PORT=9999
|
||||
- GOTRUE_SMTP_HOST=${GOTRUE_SMTP_HOST} # e.g. smtp.gmail.com
|
||||
|
|
@ -44,6 +44,6 @@ services:
|
|||
- GOTRUE_EXTERNAL_GOOGLE_ENABLED=${GOTRUE_EXTERNAL_GOOGLE_ENABLED}
|
||||
- GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=${GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID}
|
||||
- GOTRUE_EXTERNAL_GOOGLE_SECRET=${GOTRUE_EXTERNAL_GOOGLE_SECRET}
|
||||
- GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=http://localhost:9998/callback
|
||||
- GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=${GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI}
|
||||
ports:
|
||||
- 9998:9999
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ services:
|
|||
- GOTRUE_SITE_URL=appflowy-flutter:// # redirected to AppFlowy application
|
||||
- GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET} # authentication secret
|
||||
- GOTRUE_DB_DRIVER=postgres
|
||||
- API_EXTERNAL_URL=${API_EXTERNAL_URL:-http://localhost:9998} # change 'localhost' to the public host of machine that is running on
|
||||
- API_EXTERNAL_URL=${API_EXTERNAL_URL}
|
||||
- DATABASE_URL=postgres://supabase_auth_admin:root@postgres:5432/postgres
|
||||
- PORT=9999
|
||||
- GOTRUE_SMTP_HOST=${GOTRUE_SMTP_HOST} # e.g. smtp.gmail.com
|
||||
|
|
@ -53,6 +53,7 @@ services:
|
|||
environment:
|
||||
- APP_ENVIRONMENT=production
|
||||
- APP__GOTRUE__JWT_SECRET=${GOTRUE_JWT_SECRET}
|
||||
- APP__GOTRUE__EXT_URL=${API_EXTERNAL_URL}
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
|
|
|
|||
|
|
@ -8,14 +8,16 @@ use infra::reqwest::{check_response, from_body, from_response};
|
|||
#[derive(Clone)]
|
||||
pub struct Client {
|
||||
client: reqwest::Client,
|
||||
pub base_url: String,
|
||||
base_url: String,
|
||||
pub ext_url: String,
|
||||
}
|
||||
|
||||
impl Client {
|
||||
pub fn new(client: reqwest::Client, url: &str) -> Self {
|
||||
pub fn new(client: reqwest::Client, base_url: &str, ext_url: &str) -> Self {
|
||||
Self {
|
||||
client,
|
||||
base_url: url.to_string(),
|
||||
base_url: base_url.to_owned(),
|
||||
ext_url: ext_url.to_owned(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -154,7 +154,8 @@ async fn migrate(pool: &PgPool) {
|
|||
}
|
||||
|
||||
async fn get_gotrue_client(setting: &GoTrueSetting) -> gotrue::api::Client {
|
||||
let gotrue_client = gotrue::api::Client::new(reqwest::Client::new(), &setting.base_url);
|
||||
let gotrue_client =
|
||||
gotrue::api::Client::new(reqwest::Client::new(), &setting.base_url, &setting.ext_url);
|
||||
gotrue_client
|
||||
.health()
|
||||
.await
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ pub async fn oauth(gotrue_client: &Client, provider: OAuthProvider) -> Result<OA
|
|||
Ok(OAuthURL {
|
||||
url: format!(
|
||||
"{}/authorize?provider={}",
|
||||
gotrue_client.base_url,
|
||||
gotrue_client.ext_url,
|
||||
provider.as_str(),
|
||||
),
|
||||
})
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ pub struct Config {
|
|||
#[derive(serde::Deserialize, Clone, Debug)]
|
||||
pub struct GoTrueSetting {
|
||||
pub base_url: String,
|
||||
pub ext_url: String, // public url
|
||||
pub jwt_secret: Secret<String>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@ use gotrue::api::Client;
|
|||
#[tokio::test]
|
||||
async fn gotrue_health() {
|
||||
let http_client = reqwest::Client::new();
|
||||
let gotrue_client = Client::new(http_client, "http://localhost:9998");
|
||||
let gotrue_client = Client::new(
|
||||
http_client,
|
||||
"http://localhost:9998",
|
||||
"http://localhost:9998",
|
||||
);
|
||||
gotrue_client.health().await.unwrap();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@ use gotrue::api::Client;
|
|||
#[tokio::test]
|
||||
async fn gotrue_settings() {
|
||||
let http_client = reqwest::Client::new();
|
||||
let gotrue_client = Client::new(http_client, "http://localhost:9998");
|
||||
let gotrue_client = Client::new(
|
||||
http_client,
|
||||
"http://localhost:9998",
|
||||
"http://localhost:9998",
|
||||
);
|
||||
gotrue_client.settings().await.unwrap();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue