This repository has been archived by the owner on Jul 8, 2024. It is now read-only.
Core Deployment #25
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
name: Core Deployment | |
on: | |
workflow_dispatch: | |
inputs: | |
bump_type: | |
description: 'Version Bump Type' | |
required: true | |
default: 'patch' | |
type: choice | |
options: | |
- major | |
- minor | |
- patch | |
- prepatch | |
- preminor | |
- premajor | |
- prerelease | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
with: | |
repository: cnstr/core | |
ref: main | |
fetch-depth: 0 | |
token: ${{ secrets.PAT_TOKEN }} | |
- name: Configure Caching | |
uses: actions/cache@v3 | |
with: | |
path: /tmp/.buildx-cache | |
key: cnstr-core-buildx-${{ github.sha }} | |
restore-keys: | | |
cnstr-core-buildx- | |
- name: Configure Rust and Cargo | |
uses: dtolnay/rust-toolchain@stable | |
- name: Configure Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '18' | |
- name: Configure PNPM and install dependencies | |
uses: pnpm/action-setup@v2 | |
with: | |
version: 8 | |
run_install: | | |
- args: [--frozen-lockfile] | |
- name: Configure Docker | |
uses: docker/setup-buildx-action@v2 | |
with: | |
version: latest | |
platforms: linux/amd64 | |
- name: Login to tale.me | |
uses: docker/login-action@v2 | |
with: | |
registry: us-east4-docker.pkg.dev | |
username: _json_key_base64 | |
password: ${{ secrets.SERVICE_ACCOUNT }} | |
- name: Update npm versions and set build-time variables | |
run: | | |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
git config --global user.name "github-actions[bot]" | |
pnpm np --no-cleanup --no-tests --no-publish --no-release-draft --yolo --message 'chore: v%s' $BUMP_TYPE | |
echo "git_version=$(jq -r '.version' package.json)" >> $GITHUB_ENV | |
echo "git_state=$(git rev-parse HEAD)" >> $GITHUB_ENV | |
echo "build_date=$(date --rfc-3339=date)" >> $GITHUB_ENV | |
env: | |
BUMP_TYPE: ${{ inputs.bump_type }} | |
- name: Load manifest.yaml for Core | |
run: echo "$MANIFEST_BASE64" | base64 -d > manifest.yaml | |
env: | |
MANIFEST_BASE64: ${{ secrets.CORE_MANIFEST }} | |
- name: Setup QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Configure Docker | |
uses: docker/setup-buildx-action@v2 | |
with: | |
version: latest | |
platforms: linux/amd64,linux/arm64 | |
- name: Build us-east4-docker.pkg.dev/aarnavtale/canister/core | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
push: true | |
tags: us-east4-docker.pkg.dev/aarnavtale/canister/core:${{ env.git_version }} | |
cache-from: type=local,src=/tmp/.buildx-cache | |
cache-to: type=local,dest=/tmp/.buildx-cache-to,mode=max | |
build-args: | | |
BUILD_DATE=${{ env.build_date }} | |
VERSION=${{ env.git_version }} | |
GIT_STATE=${{ env.git_state }} | |
- name: Update Caching Layers | |
run: | | |
rm -rf /tmp/.buildx-cache | |
mv /tmp/.buildx-cache-to /tmp/.buildx-cache | |
deploy: | |
name: Deploy | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
with: | |
repository: cnstr/core | |
ref: main | |
fetch-depth: 0 | |
token: ${{ secrets.PAT_TOKEN }} | |
- name: Configure Kubernetes | |
uses: tale/kubectl-action@v1 | |
with: | |
base64-kube-config: ${{ secrets.KUBE_CONFIG }} | |
kubectl-version: v1.26.0 | |
- name: Configure Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '18' | |
- name: Configure PNPM and install dependencies | |
uses: pnpm/action-setup@v2 | |
with: | |
version: 8 | |
run_install: | | |
- args: [--frozen-lockfile] | |
- name: Retrieve PNPM store path | |
id: pnpm-cache | |
shell: bash | |
run: | | |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: Configure Caching | |
uses: actions/cache@v3 | |
with: | |
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-- | |
- name: Load manifest.yaml for Core | |
run: | | |
echo "$MANIFEST_BASE64" | base64 -d > manifest.yaml | |
echo "git_version=$(jq -r '.version' package.json)" >> $GITHUB_ENV | |
env: | |
MANIFEST_BASE64: ${{ secrets.CORE_MANIFEST }} | |
- name: Run deploy tool | |
run: pnpm run deploy | |
- name: Commit file changes | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: 'chore: update manifests to ${{ env.git_version }}' | |
commit_author: 'github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>' | |
commit_options: '--no-verify --signoff' | |
file_pattern: 'kubernetes/core.yaml kubernetes/fast.yaml' | |
- name: Deploy Kubernetes manifests | |
run: kubectl apply -f kubernetes/core.yaml |