Skip to content

Feat: Standalone migration mode #30

Feat: Standalone migration mode

Feat: Standalone migration mode #30

name: Build Binaries
on:
# pull_request:
# branches:
# - daniel/infisical-binary
push:
branches:
- daniel/infisical-binary
# run for standalone releases
tags:
- "infisical-standalone/v*.*.*"
defaults:
run:
working-directory: ./backend
jobs:
build-and-release:
runs-on: ubuntu-20.04
strategy:
matrix:
arch: [x64, arm64]
os: [linux, win]
include:
- os: linux
target: node18-linux
- os: win
target: node18-win
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Extract version from tag
id: extract_version
run: |
# Get the tag name
TAG_NAME=$(git describe --tags)
# Extract the version part
VERSION=${TAG_NAME#infisical-standalone/v}
echo "Extracted version is $VERSION"
# Set the version as an output
echo "::set-output name=version::$VERSION"
- name: Version extration test
run: |
echo "The extracted version is ${{ steps.extract_version.outputs.version }}"
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 20
- name: Install pkg
run: npm install -g @yao-pkg/pkg
- name: Install dependencies (backend)
run: npm install
working-directory: ./backend
- name: Install dependencies (frontend)
run: npm install --prefix ../frontend
working-directory: ./backend
- name: Prerequisites for pkg
run: npm run binary:build
working-directory: ./backend
- name: Package into node binary # --compress Brotli (Re-add before merging to main!)
run: pkg --no-bytecode --public-packages "*" --public --target ${{ matrix.target }}-${{ matrix.arch }} --output ./binary/infisical-${{ matrix.os }}-${{ matrix.arch }} .
working-directory: ./backend
- name: List files
run: ls -la ./binary
- uses: actions/setup-python@v4
- run: pip install --upgrade cloudsmith-cli
- name: Publish to Cloudsmith (Linux)
working-directory: ./backend
if: matrix.os == 'linux'
run: cloudsmith push raw infisical/infisical-standalone ./binary/infisical-${{ matrix.os }}-${{ matrix.arch }} --republish --no-wait-for-sync --version ${{ steps.extract_version.outputs.version }} --api-key ${{ secrets.CLOUDSMITH_API_KEY }}
- name: Publish to Cloudsmith (Windows)
working-directory: ./backend
if: matrix.os == 'win'
run: cloudsmith push raw infisical/infisical-standalone ./binary/infisical-${{ matrix.os }}-${{ matrix.arch }}.exe --republish --no-wait-for-sync --version ${{ steps.extract_version.outputs.version }} --api-key ${{ secrets.CLOUDSMITH_API_KEY }}