Skip to content

Commit

Permalink
feat: Add nightly build to ci
Browse files Browse the repository at this point in the history
tmp ci

tmp ci

tmp ci

tmp ci

tmp ci

tmp ci

tmp ci

tmp ci
  • Loading branch information
Its-treason committed Apr 13, 2024
1 parent eddac73 commit 9d502b2
Show file tree
Hide file tree
Showing 4 changed files with 258 additions and 59 deletions.
179 changes: 179 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
name: Release Nightly

on:
schedule:
- cron: 0 0 * * *
workflow_dispatch:
inputs:
tag_name:
description: 'Tag name for release'
required: false
default: nightly
push:
tags: ['v[0-9]+.[0-9]+.[0-9]+*']
pull_request:

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
tagname:
runs-on: ubuntu-latest
outputs:
tag_name: ${{ steps.tag.outputs.tag }}
steps:
- if: github.event_name == 'workflow_dispatch'
run: echo "TAG_NAME=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV

- if: github.event_name == 'schedule'
run: echo 'TAG_NAME=nightly' >> $GITHUB_ENV

- if: github.event_name == 'push'
run: |
TAG_NAME=${{ github.ref }}
echo "TAG_NAME=${TAG_NAME#refs/tags/}" >> $GITHUB_ENV
- if: github.event_name == 'pull_request'
run: echo 'TAG_NAME=debug' >> $GITHUB_ENV

- id: vars
shell: bash
run: echo "sha_short=${GITHUB_SHA::7}" >> $GITHUB_OUTPUT

- if: env.TAG_NAME == 'nightly'
run: echo 'TAG_NAME=nightly-${{ steps.vars.outputs.sha_short }}' >> $GITHUB_ENV

- id: tag
run: echo "tag=$TAG_NAME" >> $GITHUB_OUTPUT

windows:
runs-on: windows-latest
needs: tagname
env:
RELEASE_TAG_NAME: ${{ needs.tagname.outputs.tag_name }}

steps:
- uses: actions/checkout@v4

- name: Fetch dependencies
run: npm i

- name: Build packages
run: |
npm run build:graphql-docs
npm run build:bruno-query
npm run build:bruno-common
- name: Build app
run: |
npm run build:electron -- win
ls ./packages/bruno-electron/out/
- uses: actions/upload-artifact@v4
with:
name: build-windows
path: |
./packages/bruno-electron/out/bruno_*
retention-days: 1

linux:
runs-on: ubuntu-latest
container: node:20.11
needs: tagname
env:
RELEASE_TAG_NAME: ${{ needs.tagname.outputs.tag_name }}
DEBIAN_FRONTEND: noninteractive

steps:
- uses: actions/checkout@v4

- name: Fetch dependencies
run: npm i

- name: Build packages
run: |
npm run build:graphql-docs
npm run build:bruno-query
npm run build:bruno-common
- name: Build app
run: |
npm run build:electron -- linux
npm run build:electron -- deb
- uses: actions/upload-artifact@v4
with:
name: build-linux
path: |
./packages/bruno-electron/out/bruno_*
retention-days: 1

macos:
runs-on: macos-latest
needs: tagname
env:
RELEASE_TAG_NAME: ${{ needs.tagname.outputs.tag_name }}

steps:
- uses: actions/checkout@v4

- name: Fetch dependencies
run: |
npm i
- name: Build packages
run: |
npm run build:graphql-docs
npm run build:bruno-query
npm run build:bruno-common
- name: Build app
run: |
npm run build:electron -- mac
- uses: actions/upload-artifact@v4
with:
name: build-macos
path: |
./packages/bruno-electron/out/bruno_*
retention-days: 1
if-no-files-found: error

publish:
if: github.event_name != 'pull_request'
needs: [linux, windows, macos]
runs-on: ubuntu-latest
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
contents: write
steps:
# Must perform checkout first, since it deletes the target directory
# before running, and would therefore delete the downloaded artifacts
- uses: actions/checkout@v4

- uses: actions/download-artifact@v4

- if: github.event_name == 'workflow_dispatch'
run: echo "TAG_NAME=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV

- if: github.event_name == 'schedule'
run: echo 'TAG_NAME=nightly' >> $GITHUB_ENV

- if: github.event_name == 'push'
run: |
TAG_NAME=${{ github.ref }}
echo "TAG_NAME=${TAG_NAME#refs/tags/}" >> $GITHUB_ENV
- run: |
(echo 'SUBJECT=Bruno development build';
echo 'PRERELEASE=--prerelease') >> $GITHUB_ENV
gh release delete nightly --yes || true
git push origin :nightly || true
- name: Publish release
env:
DEBUG: api
run: |
gh release create $TAG_NAME $PRERELEASE --title "$TAG_NAME" --target $GITHUB_SHA build-linux/* build-windows/* build-macos/*
20 changes: 13 additions & 7 deletions packages/bruno-electron/electron-builder-config.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
require('dotenv').config({ path: process.env.DOTENV_PATH });

// TAG_NAME is set inside the CI-Pipeline
const isNightly = process.env.RELEASE_TAG_NAME !== undefined;
// Add Nightly-Suffix to the version for nightly builds
const artifactName =
'${name}_${version}' + (isNightly ? `-${process.env.RELEASE_TAG_NAME}` : '') + '_${arch}_${os}.${ext}';

const config = {
appId: 'com.usebruno.app',
productName: 'Bruno',
appId: `com.usebruno${isNightly ? '-nightly' : ''}.app`,
productName: 'Bruno' + (isNightly ? ' Nightly' : ''),
electronVersion: '21.1.1',
directories: {
buildResources: 'resources',
Expand All @@ -11,7 +17,7 @@ const config = {
files: ['**/*'],
afterSign: 'notarize.js',
mac: {
artifactName: '${name}_${version}_${arch}_${os}.${ext}',
artifactName,
category: 'public.app-category.developer-tools',
target: [
{
Expand All @@ -30,15 +36,15 @@ const config = {
entitlementsInherit: 'resources/entitlements.mac.plist'
},
linux: {
artifactName: '${name}_${version}_${arch}_linux.${ext}',
artifactName,
icon: 'resources/icons/png',
target: ['AppImage', 'deb', 'snap', 'rpm']
},
win: {
artifactName: '${name}_${version}_${arch}_win.${ext}',
artifactName,
icon: 'resources/icons/png',
certificateFile: `${process.env.WIN_CERT_FILEPATH}`,
certificatePassword: `${process.env.WIN_CERT_PASSWORD}`
certificateFile: process.env.WIN_CERT_FILEPATH ? `${process.env.WIN_CERT_FILEPATH}` : undefined,
certificatePassword: process.env.WIN_CERT_PASSWORD ? `${process.env.WIN_CERT_PASSWORD}` : undefined
}
};

Expand Down
4 changes: 4 additions & 0 deletions packages/bruno-electron/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
"private": true,
"main": "src/index.js",
"author": "Anoop M D <[email protected]> (https://helloanoop.com/)",
"repository": {
"type": "git",
"url": "https://github.com/usebruno/bruno.git"
},
"scripts": {
"clean": "rimraf dist",
"dev": "electron .",
Expand Down
Loading

0 comments on commit 9d502b2

Please sign in to comment.