Skip to content

Merge pull request #374 from MEDomics-UdeS/second_packaging_attempt #74

Merge pull request #374 from MEDomics-UdeS/second_packaging_attempt

Merge pull request #374 from MEDomics-UdeS/second_packaging_attempt #74

name: Full build and publish with versioning
on:
push:
tags:
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
permissions:
contents: write
jobs:
build-windows:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18.13
- name: Get tag name
shell: bash
run: |
VERSION=${GITHUB_REF/refs\/tags\//} # Remove "refs/tags/" from the beginning of the tag name
NEW_VERSION="${VERSION}"
node -p "let pkg=require('./package.json'); pkg.version='$NEW_VERSION'; require('fs').writeFileSync('package.json', JSON.stringify(pkg, null, 2));"
- name: Print package.json
run: Get-Content package.json
- name: Install dependencies
run: npm install
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: 1.21
- name: Build go
run: |
cd go_server
go build main.go
cd ..
- name: Prebuild libmongocrypt
run: bash ./utilScripts/libmongocrypt_prebuild.sh
- name: Build for Windows
run: npm run build:win
- name: Get tag name
id: get-tag
shell: bash
run: |
VERSION=${GITHUB_REF/refs\/tags\//}
echo "::set-output name=VERSION::${VERSION#v}"
- name: Archive Windows
uses: actions/upload-artifact@v3
with:
name: windows-built
path: ./build/dist/MEDomicsLab-${{ env.VERSION }}-win.exe
env:
VERSION: ${{ steps.get-tag.outputs.VERSION }}
build-linux-ubuntu:
runs-on: ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18.13
- name: Get tag name
run: |
VERSION=${GITHUB_REF/refs\/tags\//}
NEW_VERSION="${VERSION}"
node -p "let pkg=require('./package.json'); pkg.version='$NEW_VERSION'; require('fs').writeFileSync('package.json', JSON.stringify(pkg, null, 2));"
- name: Print package.json
run: cat package.json
- name: Install dependencies
run: npm install
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: 1.21
- name: Build go
run: |
cd go_server
go build main.go
cd ..
- name: Prebuild libmongocrypt
run: bash ./utilScripts/libmongocrypt_prebuild.sh
- name: Build for Linux
run: npm run build:linux
- name: Get tag name
id: get-tag
run: |
VERSION=${GITHUB_REF/refs\/tags\//}
echo "::set-output name=VERSION::${VERSION#v}"
- name: Rename Linux
run: mv ./build/dist/MEDomicsLab-${{ env.VERSION }}-linux.deb ./build/dist/MEDomicsLab-${{ env.VERSION }}-ubuntu.deb
env:
VERSION: ${{ steps.get-tag.outputs.VERSION }}
- name: Archive Linux
uses: actions/upload-artifact@v3
with:
name: linux-built-ubuntu
path: ./build/dist/MEDomicsLab-${{ env.VERSION }}-ubuntu.deb
env:
VERSION: ${{ steps.get-tag.outputs.VERSION }}
build-mac:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: 1.21
- name: Build go
run: |
cd go_server
go build main.go
cd ..
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18.13
- name: Mac OS X with M1 chip
run: uname -m
- name: Install Python 2.7
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Bash python 1st try
run: |
echo $PATH
python --version
which python
- name: Bash python 2nd try
run: |
echo $PATH
python --version
which python
shell: bash {0}
- name: Bash python 3rd try
run: |
echo $PATH
python --version
which python
shell: bash -l {0}
- name: Check if Python2.7 is installed
run: |
if ! which python2.7 > /dev/null; then
curl -O https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg
sudo installer -pkg python-2.7.18-macosx10.9.pkg -target /
else
echo "Python 2.7 is already installed"
fi
- name: Install dependencies
run: npm install
- uses: actions/checkout@v4
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
name: List the state of node modules
continue-on-error: true
run: npm list
- name: Install dependencies
run: npm install
- name: Prebuild libmongocrypt
run: bash ./utilScripts/libmongocrypt_prebuild.sh
- name: Update version
run: |
node -p "let pkg=require('./package.json'); pkg.version='${GITHUB_REF/refs\/tags\//}'; require('fs').writeFileSync('package.json', JSON.stringify(pkg, null, 2));"
echo "Version updated to ${GITHUB_REF/refs\/tags\//}"
# Before building the app, allocate more memory to the shell
- name: Allocate more memory
run: export NODE_OPTIONS=--max-old-space-size=8192
- name: Build for Mac
run: npm run build:mac
- name: Get tag name
id: get-tag
run: |
VERSION=${GITHUB_REF/refs\/tags\//}
echo "::set-output name=VERSION::${VERSION#v}"
- name: Archive Mac
uses: actions/upload-artifact@v3
with:
name: mac-built
path: ./build/dist/MEDomicsLab-${{ env.VERSION }}-mac.pkg
env:
VERSION: ${{ steps.get-tag.outputs.VERSION }}
# Publish to GitHub
publish:
needs: [build-windows, build-linux-ubuntu, build-mac]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download Windows
uses: actions/download-artifact@v3
with:
name: windows-built
- name: Download Linux Ubuntu
uses: actions/download-artifact@v3
with:
name: linux-built-ubuntu
- name: Download Mac
uses: actions/download-artifact@v3
with:
name: mac-built
- name: Install zip
run: sudo apt-get install zip
- name: Move files out of pythonEnv - to root
run: |
mv ./pythonEnv/requirements.txt ./requirements.txt
mv ./pythonEnv/requirements_mac.txt ./requirements_mac.txt
mv ./pythonEnv/conda_env_osx64.yml ./conda_env_osx64.yml
mv ./pythonEnv/create_conda_env_win.bat ./create_conda_env_win.bat
mv ./pythonEnv/create_conda_env_linux.sh ./create_conda_env_linux.sh
mv ./pythonEnv/create_conda_env_mac_yml.sh ./create_conda_env_mac_yml.sh
mv ./pythonEnv/create_conda_env_mac.sh ./create_conda_env_mac.sh
ls -R
- name: zip Windows
run: zip -r MEDomicsLab-PythonEnv-win.zip ./requirements.txt ./create_conda_env_win.bat
- name: zip Linux
run: zip -r MEDomicsLab-PythonEnv-linux.zip ./requirements.txt ./create_conda_env_linux.sh
- name: zip Mac
run: zip -r MEDomicsLab-PythonEnv-mac.zip ./create_conda_env_mac.sh ./requirements_mac.txt
- name: Get tag name
id: get-tag
run: |
VERSION=${GITHUB_REF/refs\/tags\//}
echo "::set-output name=VERSION::${VERSION#v}"
- name: Publish to GitHub
uses: softprops/action-gh-release@v1
with:
files: |
./MEDomicsLab-${{ env.VERSION }}-win.exe
./MEDomicsLab-${{ env.VERSION }}-ubuntu.deb
./MEDomicsLab-${{ env.VERSION }}-mac.pkg
name: MEDomicsLab-${{ env.VERSION }}
body: |
MEDomicsLab-${{ env.VERSION }}
This is a full release of MEDomicsLab. This release includes the MEDomicsLab application and the Python environment.
Refer to the [Documentation](https://medomics-udes.gitbook.io/medomicslab-docs/)
${{ github.ref }}
draft: true
prerelease: false
token: ${{ secrets.GITHUB_TOKEN }}
env:
VERSION: ${{ steps.get-tag.outputs.VERSION }}