diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml index 11afdab88..de292052a 100644 --- a/.github/workflows/deploy-production.yml +++ b/.github/workflows/deploy-production.yml @@ -35,8 +35,9 @@ jobs: - name: Build and Push Images run: | - ./k8s/build-img.py -p production + ./scripts/build-img.py env: + IMAGE_REPOSITORY: ${{ secrets.PRODUCTION_IMAGE_REPOSITORY }} BACKEND_URL: ${{ secrets.NEXT_PUBLIC_BACKEND_URL }} NEXT_PUBLIC_GOOGLE_ANALYTICS_TRACKING_ID: ${{ secrets.NEXT_PUBLIC_GOOGLE_ANALYTICS_TRACKING_ID }} NEXT_PUBLIC_ALGOLIA_APP_ID: ${{ secrets.NEXT_PUBLIC_ALGOLIA_APP_ID }} diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml index f401d162c..a994a4c06 100644 --- a/.github/workflows/deploy-staging.yml +++ b/.github/workflows/deploy-staging.yml @@ -35,8 +35,9 @@ jobs: - name: Build and Push Images run: | - ./k8s/build-img.py -p staging + ./scripts/build-img.py env: + IMAGE_REPOSITORY: ${{ secrets.STAGING_IMAGE_REPOSITORY }} BACKEND_URL: ${{ secrets.STAGING_NEXT_PUBLIC_BACKEND_URL }} NEXT_PUBLIC_GOOGLE_ANALYTICS_TRACKING_ID: ${{ secrets.NEXT_PUBLIC_GOOGLE_ANALYTICS_TRACKING_ID }} NEXT_PUBLIC_ALGOLIA_APP_ID: ${{ secrets.NEXT_PUBLIC_ALGOLIA_APP_ID }} @@ -45,51 +46,10 @@ jobs: NEWSLETTER_BASE_URL: ${{ secrets.NEWSLETTER_BASE_URL }} SENDER_TOKEN: ${{ secrets.SENDER_TOKEN }} - deploy: - name: Deployment - runs-on: ubuntu-latest - - needs: - - build - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Setup Gcloud Auth - uses: google-github-actions/auth@v1 - with: - credentials_json: "${{ secrets.ORG_SANDBOX_DEPLOYMENT_KEY }}" - - - name: Setup Cloud SDK - uses: google-github-actions/setup-gcloud@v1 - - - name: Set Image Tag - id: lookup - run: echo "version=$(git describe --always --dirty=-wip)" >> $GITHUB_OUTPUT - - - name: Turnstyle - uses: softprops/turnstyle@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Deploy to Staging - env: - IMAGE_TAG: ${{ steps.lookup.outputs.version }} - HELM_NAME: staging - NAMESPACE: docs-staging - GKE_PROJECT: fetch-ai-sandbox - GKE_CLUSTER: london-b - GKE_ZONE: europe-west2-b - + - name: Repository Dispatch run: | - gcloud components install gke-gcloud-auth-plugin - gcloud container clusters get-credentials $GKE_CLUSTER \ - --zone $GKE_ZONE \ - --project $GKE_PROJECT - helm upgrade --install --wait --timeout 300s $HELM_NAME \ - ./k8s/docs/ \ - --set-string website.image.tag=$IMAGE_TAG \ - -n $NAMESPACE + curl -f -H "Accept: application/vnd.github.everest-preview+json" \ + -H "Authorization: token ${{ secrets.ORG_DISPATCH_RENDER_TOKEN }}" \ + --request POST \ + --data '{"event_type": "docs-staging-build", "client_payload": {"image": "'"${{ secrets.STAGING_IMAGE_REPOSITORY }}"'" , "image_path": "values", "key_path": ".website.image.tag", "commit_message_service": "Docs Staging", "tag": "'"${{ steps.lookup.outputs.version }}"'"}}' \ + https://api.github.com/repos/fetchai/infra-sandbox-london-b-deployment/dispatches diff --git a/.github/workflows/ephemeral-delete.yaml b/.github/workflows/ephemeral-delete.yaml deleted file mode 100644 index 43ace2c1d..000000000 --- a/.github/workflows/ephemeral-delete.yaml +++ /dev/null @@ -1,50 +0,0 @@ -name: Clean Ephemeral Deployment - -on: - pull_request: - types: - - closed - -jobs: - clean-deployment: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Setup Gcloud Auth - uses: google-github-actions/auth@v1 - with: - credentials_json: "${{ secrets.ORG_SANDBOX_DEPLOYMENT_KEY }}" - - - name: Setup Cloud SDK - uses: google-github-actions/setup-gcloud@v1 - - - name: Set Image Tag - id: lookup - run: echo "version=$(git describe --always --dirty=-wip)" >> $GITHUB_OUTPUT - - - name: Turnstyle - uses: softprops/turnstyle@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Uninstall Deployment - env: - HELM_NAME: ephemeral-${{ github.event.pull_request.number }} - NAMESPACE: docs-staging - GKE_PROJECT: fetch-ai-sandbox - GKE_CLUSTER: london-b - GKE_ZONE: europe-west2-b - PR_NUMBER: ${{ github.event.pull_request.number }} - HELM_NAME_INGRESS: ephemeral-ingress-${{ github.event.pull_request.number }} - - run: | - gcloud components install gke-gcloud-auth-plugin - gcloud container clusters get-credentials $GKE_CLUSTER \ - --zone $GKE_ZONE \ - --project $GKE_PROJECT - helm uninstall $HELM_NAME -n $NAMESPACE diff --git a/.github/workflows/ephemeral-deploy.yaml b/.github/workflows/ephemeral-deploy.yaml deleted file mode 100644 index 032be3537..000000000 --- a/.github/workflows/ephemeral-deploy.yaml +++ /dev/null @@ -1,103 +0,0 @@ -name: Ephemeral (Testing) Deployment - -on: - pull_request: - types: - - opened - - reopened - - synchronize - -jobs: - build: - name: Build Images - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Setup Gcloud Auth - uses: google-github-actions/auth@v1 - with: - credentials_json: "${{ secrets.ORG_SANDBOX_DEPLOYMENT_KEY }}" - - - name: Setup Cloud SDK - uses: google-github-actions/setup-gcloud@v1 - - - name: Set Image Tag - id: lookup - run: echo "version=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - - - run: | - gcloud auth list - gcloud auth configure-docker -q - echo "VERSION: ${{ steps.lookup.outputs.version }}" - - - name: Build and Push Images - run: ./k8s/build-img.py -p staging - env: - BACKEND_URL: ${{ secrets.STAGING_NEXT_PUBLIC_BACKEND_URL }} - NEXT_PUBLIC_GOOGLE_ANALYTICS_TRACKING_ID: ${{ secrets.NEXT_PUBLIC_GOOGLE_ANALYTICS_TRACKING_ID }} - NEXT_PUBLIC_ALGOLIA_APP_ID: ${{ secrets.NEXT_PUBLIC_ALGOLIA_APP_ID }} - NEXT_PUBLIC_ALGOLIA_API_KEY: ${{ secrets.NEXT_PUBLIC_ALGOLIA_API_KEY }} - NEXT_PUBLIC_ALGOLIA_INDEX: ${{ secrets.NEXT_PUBLIC_ALGOLIA_INDEX }} - NEWSLETTER_BASE_URL: ${{ secrets.NEWSLETTER_BASE_URL }} - SENDER_TOKEN: ${{ secrets.SENDER_TOKEN }} - - deploy: - name: Ephermeral Deployment - runs-on: ubuntu-latest - needs: build - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Setup Gcloud Auth - uses: google-github-actions/auth@v1 - with: - credentials_json: "${{ secrets.ORG_SANDBOX_DEPLOYMENT_KEY }}" - - - name: Setup Cloud SDK - uses: google-github-actions/setup-gcloud@v1 - - - name: Set Image Tag - id: lookup - run: echo "version=$(git describe --always --dirty=-wip)" >> $GITHUB_OUTPUT - - - name: Turnstyle - uses: softprops/turnstyle@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Deploy to Staging - env: - IMAGE_TAG: ${{ steps.lookup.outputs.version }} - HELM_NAME: ephemeral-${{ github.event.pull_request.number }} - NAMESPACE: docs-staging - GKE_PROJECT: fetch-ai-sandbox - GKE_CLUSTER: london-b - GKE_ZONE: europe-west2-b - PR_NUMBER: ${{ github.event.pull_request.number }} - DNS: docs-ephemeral-${{ github.event.pull_request.number }}.sandbox-london-b.fetch-ai.com - CERT: docs-ephemeral-${{ github.event.pull_request.number }} - CERT_NAME: docs-ephemeral-cert-${{ github.event.pull_request.number }} - EPHEMERAL: true - run: | - gcloud components install gke-gcloud-auth-plugin - gcloud container clusters get-credentials $GKE_CLUSTER \ - --zone $GKE_ZONE \ - --project $GKE_PROJECT - helm upgrade --install --wait --timeout 300s $HELM_NAME \ - ./k8s/docs/ \ - --set-string website.image.tag=$IMAGE_TAG \ - --set-string prVersion=${{ github.event.pull_request.number }} \ - -n $NAMESPACE \ - --set-string dns.name=$DNS \ - --set-string tls.cert=$CERT \ - --set-string tls.certName=$CERT_NAME \ - --set dns.additionalHosts=null \ diff --git a/.github/workflows/pr-title-linting.yml b/.github/workflows/pr-title-linting.yml index a353a45ef..90acdd02f 100644 --- a/.github/workflows/pr-title-linting.yml +++ b/.github/workflows/pr-title-linting.yml @@ -4,7 +4,7 @@ on: pull_request_target: types: - opened - - editedgit + - edited - synchronize jobs: diff --git a/build-img.py b/scripts/build-img.py similarity index 77% rename from build-img.py rename to scripts/build-img.py index f245f3cb9..8f2bf7de2 100755 --- a/build-img.py +++ b/scripts/build-img.py @@ -5,17 +5,10 @@ import argparse -PROFILES = { - 'staging': { - 'repository': 'gcr.io/fetch-ai-sandbox/docs-website', - }, - 'production': { - 'repository': 'gcr.io/fetch-ai-images/docs-website', - }, -} - PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +REPOSITORY = os.environ.get('IMAGE_REPOSITORY') + BUILD_ENV_VARS = ( 'BACKEND_URL', 'NEXT_PUBLIC_GOOGLE_ANALYTICS_TRACKING_ID', @@ -26,18 +19,9 @@ 'SENDER_TOKEN' ) -def _profile(text: str) -> str: - if text not in PROFILES: - available_profiles = ', '.join(PROFILES.keys()) - print(f'Invalid profile {text}. Please select one of [{available_profiles}]') - sys.exit(1) - - return text - def parse_commandline() -> argparse.Namespace: parser = argparse.ArgumentParser() - parser.add_argument('-p', '--profile', type=_profile, default='staging', help='The profile to use') parser.add_argument('-n', '--no-push', dest='push', action='store_false', help='Disable pusing of the image') parser.add_argument('-f', '--force-build', action='store_true', help=argparse.SUPPRESS) return parser.parse_args() @@ -55,6 +39,11 @@ def get_version() -> str: def main(): args = parse_commandline() + # validate the repository environment variable + if REPOSITORY is None: + print('Missing IMAGE_REPOSITORY environment variable') + sys.exit(1) + # argument validation / augmentation push = args.push if detect_local_modifications(): @@ -67,13 +56,11 @@ def main(): # lookup the required information version = get_version() - repository = PROFILES[args.profile]['repository'] - image_url = f'{repository}:{version}' + image_url = f'{REPOSITORY}:{version}' print() print(f'Project root: {PROJECT_ROOT}') - print(f'Profile.....: {args.profile}') print(f'Image Ref...: {image_url}') print(f'Push........: {push}') print() @@ -109,4 +96,4 @@ def main(): if __name__ == '__main__': - main() \ No newline at end of file + main()