Skip to content

85 selectively exposing cce workloads with a dedicated gateway (#186) #5

85 selectively exposing cce workloads with a dedicated gateway (#186)

85 selectively exposing cce workloads with a dedicated gateway (#186) #5

name: Build and Deploy Production Docker Images
on:
push:
tags:
- "v*.*.*"
workflow_dispatch:
jobs:
build-stable:
name: Build Production Artifacts
environment:
name: stable
runs-on: ubuntu-latest
outputs:
image_version: ${{ env.IMAGE_SEMVER }}
commit_hash: ${{ steps.export_commit_hash.outputs.commit_hash }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup NodeJS
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- name: Install NodeJS Dependencies
run: npm install
- name: Get Commit Hash
id: commit_hash
uses: prompt/actions-commit-hash@v3
- name: Build Version Tag
id: build_version_tag
run: echo "IMAGE_SEMVER=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Export Commit Hash
id: export_commit_hash
run: echo "commit_hash=${{ steps.commit_hash.outputs.short }}" >> $GITHUB_OUTPUT
- name: Build Container Image Metadata
id: meta
uses: docker/metadata-action@v5
with:
# list of Docker images to use as base name for tags
images: |
${{ vars.REGISTRY }}/${{ vars.REGISTRY_ORG }}/${{ vars.IMG_NAME }}
# generate Docker tags based on the following events/attributes
tags: |
type=semver,pattern=v{{major}}.{{minor}}.{{patch}}
type=raw,value=latest
- name: Build App
env:
REACT_APP_VERSION: ${{ env.IMAGE_SEMVER }}
REACT_APP_DOCS_NEXT_HOST: ${{ vars.DOCS_NEXT_HOST }}
REACT_APP_DOCS_NEXT_ORG: ${{ vars.DOCS_NEXT_ORG }}
REACT_APP_DOCUSAURUS_BASE_URL: ${{ vars.DOCUSAURUS_BASE_URL }}
REACT_APP_TYPESENSE_PROTOCOL: ${{ vars.TYPESENSE_PROTOCOL }}
REACT_APP_TYPESENSE_HOST: ${{ vars.TYPESENSE_HOST }}
REACT_APP_TYPESENSE_PORT: ${{ vars.TYPESENSE_PORT }}
REACT_APP_TYPESENSE_API_KEY: ${{ secrets.TYPESENSE_SEARCH_KEY }}
UMAMI_WEBSITE_ID: ${{ vars.UMAMI_WEBSITE_ID }}
UMAMI_ANALYTICS_DOMAIN: ${{ vars.UMAMI_ANALYTICS_DOMAIN }}
UMAMI_DATAHOST_URL: ${{ vars.UMAMI_DATAHOST_URL }}
UMAMI_DATA_DOMAIN: ${{ vars.UMAMI_DATA_DOMAINS }}
run: npm run build
- name: Login to Container Registry
uses: docker/login-action@v3
with:
registry: ${{ vars.REGISTRY }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Setup Docker Buildx
id: buildx
uses: docker/[email protected]
- name: Build and Push (Docker Image)
id: docker_build
uses: docker/[email protected]
with:
context: ./
file: ./Dockerfile
provenance: false
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
annotations: ${{ steps.meta.outputs.annotations }}
update-helm-charts:
needs: [build-stable]
environment: stable
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
# - name: Create GitHub App Token
# id: app-token
# uses: actions/create-github-app-token@v1
# with:
# app-id: ${{ secrets.APP_ID }}
# private-key: ${{ secrets.APP_KEY }}
- name: Checkout Charts Repo
uses: actions/checkout@v4
with:
repository: "${{ vars.DOCS_NEXT_CHARTS_ORG }}/${{ vars.DOCS_NEXT_CHARTS_REPO }}"
token: ${{ secrets.DOCS_NEXT_TOKEN }}
- name: Commit Changes
env:
image: ${{ vars.REGISTRY }}/${{ vars.REGISTRY_ORG }}/${{ vars.IMG_NAME }}
tag: ${{ needs.build-stable.outputs.image_version }}
run: |
git config --global user.name 'otcbot'
git config --global user.email '[email protected]'
sed -i 's|^version: .*|version: 0.3.${{github.run_number}}|' ./charts/docusaurus/Chart.yaml
sed -i 's|^appVersion: .*|appVersion: ${{ env.tag }}|' ./charts/docusaurus/Chart.yaml
sed -i 's|^tag: .*|tag: ${{ env.tag }}|' ./charts/docusaurus/values-prod.yaml
sed -i 's|^image: .*|image: ${{ env.image }}|' ./charts/docusaurus/values-prod.yaml
git commit -am "Automatic commit from GitHub Actions triggered by action ${{github.run_number}}"
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
env:
remote_pr_branch: 'release/production-${{ needs.build-stable.outputs.image_version }}'
with:
title: ${{ env.remote_pr_branch }}
token: ${{ secrets.DOCS_NEXT_TOKEN }}
branch: ${{ env.remote_pr_branch }}