Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deploying to multiple firebase sites using angularFire and ng deploy #3309

Open
h11a opened this issue Jan 20, 2023 · 12 comments
Open

Deploying to multiple firebase sites using angularFire and ng deploy #3309

h11a opened this issue Jan 20, 2023 · 12 comments
Assignees

Comments

@h11a
Copy link

h11a commented Jan 20, 2023

Versions:
"@angular/cli": "^14.2.10",
"@angular/cdk": "^14.2.1",
"@angular/fire": "^7.4.1",
"firebase": "^9.6.8",

I am having issues with setting up config to allow deploying to a dev/prod sites on Firebase hosting. The sites on firebase are in the same firebase project

I have followed this guide
https://github.com/angular/angularfire/blob/master/docs/deploy/getting-started.md

but I am receiving the same issue as these old unanswered github issues
#3077

#3076

Here is my setup

  1. angular.json
   "deploy": {
                    "builder": "@angular/fire:deploy",
                    "options": {
                        "firebaseProject": "<<MY_FIREBASE_PROJECT_ID>>",
                        "siteTarget": "devTarget",
                        "buildTarget": "<<MY_ANGULAR_PROJECT>>:build:development"
                    },
                    "configurations": {
                        "dev": {
                            "firebaseProject": "<<MY_FIREBASE_PROJECT_ID>>",
                            "siteTarget": "devTarget",
                            "buildTarget": "<<MY_ANGULAR_PROJECT>>:build:development"
                        },
                        "prod": {
                            "firebaseProject": "<<MY_FIREBASE_PROJECT_ID>>",
                            "siteTarget": "prodTarget",
                            "buildTarget": "<<MY_ANGULAR_PROJECT>>:build:development"
                        }
                    }
                }
            }
  1. firebase.json
{
    "hosting": [
        {
            "target": "devTarget",
            "public": "dist",
            "ignore": [
                "**/.*"
            ]
        },
        {
            "target": "prodTarget",
            "public": "dist",
            "ignore": [
                "**/.*"
            ]
        }
    ]
}
  1. .firebaserc
{
  "projects": {
    "default": "<<MY_FIREBASE_PROJECT_ID>>"
  },
  "targets": {
    "<<MY_FIREBASE_PROJECT_ID>>": {
      "hosting": {
        "devTarget": [
          "<<DEV_SITE_ID>>"
        ],
        "prodTarget": [
          "<<PROD_SITE_ID>>"
        ]
      }
    },
  "etags": {}
}

Should this work if i run ng deploy <<MY_ANGULAR_PROJECT>> --configuration='dev'?

I receive the following error from node_modules\@angular\fire\schematics\deploy\builder.js:36:15

An unhandled exception occurred: The Firebase Hosting Site specified by your angular.json or .firebaserc is in conflict
@google-oss-bot
Copy link

This issue does not seem to follow the issue template. Make sure you provide all the required information.

@liesahead
Copy link

There's ambiguous code which doesn't allow multiple hosts it seems 😠

image

@liesahead
Copy link

liesahead commented Apr 6, 2023

@davideast , could you clarify if the development team is planning to check the issues?

Because currently from what I see the relevant ones deserve no attention and it's easier to work with plain firebase as, for example, it's not possible to set up multiple hosts with angular fire.

@davideast
Copy link
Member

@liesahead We are working on getting AngularFire up to date with TypeScript 5 and the latest Firebase SDK. Once that is complete we'll focus on this issue

@davideast davideast self-assigned this Jun 26, 2023
@liesahead
Copy link

@davideast , great, thanks!

@AlmaniaM
Copy link

Any progress or updates on this? I have the same issue.

@JoanSernaLeiton
Copy link

any update on this ?

@pdela
Copy link

pdela commented Mar 7, 2024

Any update?

@pdela
Copy link

pdela commented Mar 7, 2024

I found out what's wrong:
In angularfire/schematics/deploy/builder.ts the function below receives the angular project name, not the firebase target alias:

const [defaultFirebaseProject, defulatFirebaseHostingSite] = getFirebaseProjectNameFromFs(
context.workspaceRoot,
context.target.project
);

I managed to have it working by manually adding this to .firebaserc:

"targets": {
[FIREBASE_PROJ_ID]: {
"hosting": {
.....
[ANGULAR_PROJECT_NAME]: [
"HOSTING_SITE_ID"
]
}
}
},

Of course this means to manually change the hosting site id everytime I want to switch from the "staging" site to the "production" site and viceversa.

PS
Unfortunately even this doesn't solve my problem as i'm trying to use firebase experimental webframework support for ssr.
While using ng deploy it seems the site got built once, but then firebase-tools kick in to deploy and, due to the webframework support, the site gets built again this time always using the production configuration, even if the default configuration in angular.json is set to staging. I'll post an issue with firebase-tools.

@alejandroquadri
Copy link

Having the same problem

@pdela
Copy link

pdela commented Mar 15, 2024

Having the same problem

The issue persists, but managed to do it by using firebase directly (no more ng deploy) using the FIREBASE_FRAMEWORKS_BUILD_TARGET variable.
here my npm scripts:
"b-d": "firebase deploy --only hosting:prod-web-target",
"b-d-test": "set FIREBASE_FRAMEWORKS_BUILD_TARGET=staging&& firebase deploy --only hosting:test-web-target",

Notice no space between "staging&&"

Where "staging" is my build option in angular.json.

Hope this helps.

@alejandroquadri
Copy link

alejandroquadri commented Mar 15, 2024

thanks @pdela! It works!

The correct script on a mac would be:
"b-d-test": "FIREBASE_FRAMEWORKS_BUILD_TARGET='staging' firebase deploy --only hosting:test-web-target",

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants