Skip to content

Deploy Dev PR

Deploy Dev PR #518

name: Deploy Dev PR
on:
workflow_dispatch:
jobs:
# Merge all 'deploy.dev' PRs to master branch
merge:
runs-on: ubuntu-latest
steps:
- name: Checkout git repository
uses: actions/checkout@v3
with:
ref: master
fetch-depth: 0 # We need a complete history for merging branches
- uses: andyoknen/combine-pull-requests@v1
with:
label: deploy.dev
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Archive merged repo
run: |
mkdir -p /tmp/repo
rsync -ah --exclude={'.git','.gitignore','.github','node_modules','.well-known'} ./ /tmp/repo/
cd /tmp/repo
tar czf /tmp/repo.tgz ./
- name: Upload artifact repo.tgz
uses: actions/upload-artifact@v3
with:
name: repo.tgz
path: /tmp/repo.tgz
- name: Save artifact head.txt
uses: actions/upload-artifact@v3
with:
name: head
path: ./head.txt
# Deploy test & pre sites
deploy-pre:
needs: merge
runs-on: gui
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: repo.tgz
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v3
with:
node-version: 18
- name: Prepare
run: |
tar xzf repo.tgz
rm -rf repo.tgz
npm i
npm run build:proxy16
npm run minimize:bastyon -- -sha=${{ github.sha }} -run=${{ github.run_number }}${{ github.run_attempt }}
- name: Copy to dest dir
run: rsync -ah --exclude={'.git','.gitignore','.github','package.json','package-lock.json','minimize.json','node_modules','.well-known','assets','proxy16','cordova','res','build'} ./ /docker/pre/
deploy-test:
needs: merge
runs-on: gui
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: repo.tgz
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v3
with:
node-version: 18
- name: Prepare
run: |
tar xzf repo.tgz
rm -rf repo.tgz
npm i
npm run build:proxy16
npm run minimize:bastyon:test -- -sha=${{ github.sha }} -run=${{ github.run_number }}${{ github.run_attempt }}
- name: Copy to dest dir
run: rsync -ah --exclude={'.git','.gitignore','.github','package.json','package-lock.json','minimize.json','node_modules','.well-known','assets','proxy16','cordova','res','build'} ./ /docker/gui/
# Build & Deploy proxy services
build-proxy:
needs: merge
runs-on: ubuntu-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: repo.tgz
- name: Prepare
run: tar xzf repo.tgz
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ secrets.DOCKER_HUB_USERNAME }}/proxy
tags: type=raw,value=night
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build and push
id: docker_build
uses: docker/build-push-action@v4
with:
context: ./proxy16
file: ./proxy16/dockerfile
builder: ${{ steps.buildx.outputs.name }}
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
deploy-proxy:
needs: build-proxy
runs-on: proxy.test
steps:
- name: Pull && Up proxy container
run: /data/proxy_pre_pull_up.sh
shell: bash
- name: Reset nginx cache
run: /data/reset_cache.sh
shell: bash
deploy-proxy-test:
needs: build-proxy
runs-on: proxy.test
steps:
- name: Pull && Up proxy container
run: /data/proxy_test_pull_up.sh
shell: bash
- name: Reset nginx cache
run: /data/reset_cache.sh
shell: bash
# Build applications
build-app-macos:
needs: merge
runs-on: macos-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: repo.tgz
- name: Unpack artifact
run: tar xzf repo.tgz
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v3
with:
node-version: 16
- name: Prepare building
run: |
npm i
npm run build:proxy16
npm run dev:bastyon -- -sha=${{ github.sha }} -run=${{ github.run_number }}${{ github.run_attempt }}
- name: Prepare for app notarization
run: |
mkdir -p ~/private_keys/
echo '${{ secrets.APPLE_API_KEY }}' > ~/private_keys/AuthKey_${{ secrets.APPLE_API_KEY_ID }}.p8
echo '${{ secrets.APPLECERT }}' | base64 -d > applecert.p12
- name: Building
env:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASS }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
CSC_LINK: 'file://applecert.p12'
CSC_KEY_PASSWORD: ${{ secrets.APPLECERTPWD }}
run: |
npm run distm
ls -lh ./dist/
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: macos
path: ./dist/BastyonSetup.dmg
build-app-unix:
needs: merge
runs-on: ubuntu-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: repo.tgz
- name: Unpack artifact
run: tar xzf repo.tgz
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v3
with:
node-version: 16
- name: Prepare building
run: |
apt update && apt install -y binutils rpm
npm i
npm run build:proxy16
npm run dev:bastyon -- -sha=${{ github.sha }} -run=${{ github.run_number }}${{ github.run_attempt }}
- name: Building
run: |
npm run distl
ls -lh ./dist/
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: unix
path: |
./dist/BastyonSetup.deb
./dist/BastyonSetup.rpm
./dist/Bastyon.AppImage
build-app-windows:
needs: merge
runs-on: windows-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: repo.tgz
- name: Unpack artifact
run: tar xzf repo.tgz
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v3
with:
node-version: 16
- name: Prepare building
run: |
npm i
npm run build:proxy16
npm run dev:bastyon -- -sha=${{ github.sha }} -run=${{ github.run_number }}${{ github.run_attempt }}
- name: Building
run: |
npm run dist
ls .\dist\
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: windows
path: ./dist/BastyonSetup.exe
build-app-android:
needs: merge
runs-on: ubuntu-20.04
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: repo.tgz
- name: Unpack artifact
run: tar xzf repo.tgz
- uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install Cordova
run: |
npm i -g cordova@10
cordova --version
- name: Prepare building
run: |
npm i
npm run build:proxy16
npm run minimize:cordova -- -sha=${{ github.sha }} -run=${{ github.run_number }}${{ github.run_attempt }}
cd ./cordova
npm i
- name: Prepare configuration
run: |
cd ./cordova
echo "${{ secrets.ANDROID_SECRET_KEY }}" | base64 -d > cert.keystore
echo "${{ secrets.ANDROID_BUILD_CONF }}" | base64 -d > build.json
echo "${{ secrets.ANDROID_FIREBASE_CONF }}" | base64 -d > google-services.json
ls -l cert.keystore
ls -l build.json
- name: Fixing Android Build Tool Issue
run: |
cd $ANDROID_HOME/build-tools/33.0.0
mv d8 dx
cd lib
mv d8.jar dx.jar
- name: Configure Cordova Plugins
run: |
cd ./cordova
npm run android-add
- name: Building
run: |
cd ./cordova
npm run android-build
- name: Rename apk binary
run: |
cd ./cordova/platforms/android/app/build/outputs/apk/release
ls -lh
mv app-release.apk Bastyon.apk
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: android
path: ./cordova/platforms/android/app/build/outputs/apk/release/Bastyon.apk
build-app-android-gf:
needs: merge
runs-on: ubuntu-20.04
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: repo.tgz
- name: Unpack artifact
run: tar xzf repo.tgz
- uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install Cordova
run: |
npm i -g cordova@10
cordova --version
- name: Prepare building
run: |
npm i
npm run build:proxy16
npm run minimize:cordova:gfree -- -sha=${{ github.sha }} -run=${{ github.run_number }}${{ github.run_attempt }}
cd ./cordova
npm i
- name: Prepare configuration
run: |
cd ./cordova
echo "${{ secrets.ANDROID_SECRET_KEY }}" | base64 -d > cert.keystore
echo "${{ secrets.ANDROID_BUILD_GFREE_CONF }}" | base64 -d > buildgfree.json
echo "${{ secrets.ANDROID_FIREBASE_CONF }}" | base64 -d > google-services.json
- name: Fixing Android Build Tool Issue
run: |
cd $ANDROID_HOME/build-tools/33.0.0
mv d8 dx
cd lib
mv d8.jar dx.jar
- name: Configure Cordova Plugins
run: |
cd ./cordova
npm run android-add
- name: Building
run: |
cd ./cordova
npm run android-build-gfree
- name: Rename apk binary
run: |
cd ./cordova/platforms/android/app/build/outputs/apk/release
ls -lh
mv app-release.apk BastyonGF.apk
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: android-gfree
path: ./cordova/platforms/android/app/build/outputs/apk/release/BastyonGF.apk
deploy-app-binaries:
needs: [ build-app-macos, build-app-unix, build-app-windows, build-app-android, build-app-android-gf ]
runs-on: dev.pocketnet.app
steps:
- name: Download artifact
uses: actions/download-artifact@v3
- name: Copy artifacts
run: cp ./**/Bastyon* /data/dev/binaries/dev/
- name: Copy HEAD information
run: cp ./head/head.txt /data/dev/binaries/dev/head.txt
- name: Clean work dir
run: rm -rf ./*