Merge pull request #374 from MEDomics-UdeS/second_packaging_attempt #74
Workflow file for this run
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: 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 }} |