Fix GitHub Actions for Publishing #27
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: 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-ubuntu20: | |
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: 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 }}-ubuntu20.deb | |
env: | |
VERSION: ${{ steps.get-tag.outputs.VERSION }} | |
- name: Archive Linux | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux-built-ubuntu20 | |
path: ./build/dist/MEDomicsLab-${{ env.VERSION }}-ubuntu20.deb | |
env: | |
VERSION: ${{ steps.get-tag.outputs.VERSION }} | |
build-linux-ubuntu22: | |
runs-on: ubuntu-22.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: 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 }}-ubuntu22.deb | |
env: | |
VERSION: ${{ steps.get-tag.outputs.VERSION }} | |
- name: Archive Linux | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux-built-ubuntu22 | |
path: ./build/dist/MEDomicsLab-${{ env.VERSION }}-ubuntu22.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.7 | |
- 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: 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\//}" | |
- 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.dmg | |
env: | |
VERSION: ${{ steps.get-tag.outputs.VERSION }} | |
# Publish to GitHub | |
publish: | |
needs: [build-windows, build-linux-ubuntu22, build-linux-ubuntu20, 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 Ubuntu20 | |
uses: actions/download-artifact@v3 | |
with: | |
name: linux-built-ubuntu20 | |
- name: Download Linux Ubuntu22 | |
uses: actions/download-artifact@v3 | |
with: | |
name: linux-built-ubuntu22 | |
- 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 ./conda_env_osx64.yml ./create_conda_env_mac_yml.sh ./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 }}-ubuntu22.deb | |
./MEDomicsLab-${{ env.VERSION }}-ubuntu20.deb | |
./MEDomicsLab-${{ env.VERSION }}-mac.dmg | |
./MEDomicsLab-PythonEnv-win.zip | |
./MEDomicsLab-PythonEnv-linux.zip | |
./MEDomicsLab-PythonEnv-mac.zip | |
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 }} |