@@ -11,15 +11,18 @@ jobs:
1111 strategy :
1212 fail-fast : false
1313 matrix :
14- os : ["windows-latest"] # Currently, other OS's are not supported
14+ os : ["windows-latest", "ubuntu-latest"]
1515
1616 env :
1717 MAIN_FILE : ' "./cs2tracker/__main__.py"'
1818 NAME : ' "cs2tracker"'
1919 ICON : ' "./assets/icon.png"'
20- ICON_INCLUDE : ' "./assets/icon.png;./assets"'
21- DATA_DIR_INCLUDE : ' "./cs2tracker/data;./data"'
22- NODE_MODULES_INCLUDE : ' "./node_modules;./node_modules"'
20+ WINDOWS_ICON_INCLUDE : ' "./assets/icon.png;./assets"'
21+ WINDOWS_DATA_DIR_INCLUDE : ' "./cs2tracker/data;./data"'
22+ WINDOWS_NODE_MODULES_INCLUDE : ' "./node_modules;./node_modules"'
23+ LINUX_ICON_INCLUDE : ' "./assets/icon.png:./assets"'
24+ LINUX_DATA_DIR_INCLUDE : ' "./cs2tracker/data:./data"'
25+ LINUX_NODE_MODULES_INCLUDE : ' "./node_modules:./node_modules"'
2326
2427 steps :
2528 - name : Checkout code
@@ -44,38 +47,83 @@ jobs:
4447 - name : Install PyInstaller
4548 run : pip install pyinstaller
4649
47- - name : Locate eurofxref-hist.zip
50+ - name : Locate eurofxref-hist.zip Windows
51+ if : matrix.os == 'windows-latest'
4852 run : |
4953 $ZIP_PATH = python -c "import currency_converter, os; print(os.path.join(os.path.dirname(currency_converter.__file__), 'eurofxref-hist.zip'))"
50- echo "CURRENCY_INCLUDE ='$ZIP_PATH;./currency_converter'" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
54+ echo "WINDOWS_CURRENCY_INCLUDE ='$ZIP_PATH;./currency_converter'" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
5155
52- - name : Locate nodejs-bin files
56+ - name : Locate eurofxref-hist.zip Linux
57+ if : matrix.os == 'ubuntu-latest'
58+ run : |
59+ ZIP_PATH=$(python -c "import currency_converter, os; print(os.path.join(os.path.dirname(currency_converter.__file__), 'eurofxref-hist.zip'))")
60+ echo "LINUX_CURRENCY_INCLUDE=$ZIP_PATH:./currency_converter" >> $GITHUB_ENV
61+
62+ - name : Locate nodejs-bin files Windows
63+ if : matrix.os == 'windows-latest'
5364 run : |
5465 $NODE_BIN_PATH = python -c "import nodejs, os; print(os.path.dirname(nodejs.__file__))"
55- echo "NODE_BIN_INCLUDE='$NODE_BIN_PATH;./nodejs'" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
66+ echo "WINDOWS_NODE_BIN_INCLUDE='$NODE_BIN_PATH;./nodejs'" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
67+
68+ - name : Locate nodejs-bin files Linux
69+ if : matrix.os == 'ubuntu-latest'
70+ run : |
71+ NODE_BIN_PATH=$(python -c "import nodejs, os; print(os.path.dirname(nodejs.__file__))")
72+ echo "LINUX_NODE_BIN_INCLUDE=$NODE_BIN_PATH:./nodejs" >> $GITHUB_ENV
5673
57- - name : Build executable
74+ - name : Build Windows executable
75+ if : matrix.os == 'windows-latest'
5876 run : |
5977 pyinstaller --noconfirm --onefile --windowed --name ${{ env.NAME }} --icon ${{ env.ICON }} `
60- --add-data ${{ env.ICON_INCLUDE }} `
61- --add-data ${{ env.DATA_DIR_INCLUDE }} `
62- --add-data ${{ env.NODE_MODULES_INCLUDE }} `
63- --add-data ${{ env.CURRENCY_INCLUDE }} `
64- --add-data ${{ env.NODE_BIN_INCLUDE }} `
78+ --add-data ${{ env.WINDOWS_ICON_INCLUDE }} `
79+ --add-data ${{ env.WINDOWS_DATA_DIR_INCLUDE }} `
80+ --add-data ${{ env.WINDOWS_NODE_MODULES_INCLUDE }} `
81+ --add-data ${{ env.WINDOWS_CURRENCY_INCLUDE }} `
82+ --add-data ${{ env.WINDOWS_NODE_BIN_INCLUDE }} `
83+ ${{ env.MAIN_FILE }}
84+
85+ - name : Build Linux executable
86+ if : matrix.os == 'ubuntu-latest'
87+ run : |
88+ pyinstaller --noconfirm --onefile --windowed --name ${{ env.NAME }} --icon ${{ env.ICON }} \
89+ --add-data ${{ env.LINUX_ICON_INCLUDE }} \
90+ --add-data ${{ env.LINUX_DATA_DIR_INCLUDE }} \
91+ --add-data ${{ env.LINUX_NODE_MODULES_INCLUDE }} \
92+ --add-data ${{ env.LINUX_CURRENCY_INCLUDE }} \
93+ --add-data ${{ env.LINUX_NODE_BIN_INCLUDE }} \
6594 ${{ env.MAIN_FILE }}
6695
6796 - name : List files in dist folder
6897 run : ls -R dist/
6998
70- - name : Zip windows executable
99+ - name : Zip Windows executable
100+ if : matrix.os == 'windows-latest'
71101 run : Compress-Archive -Path "dist/cs2tracker.exe" -DestinationPath "cs2tracker-windows.zip"
72102
73- - name : Generate SHA256 checksum
103+ - name : Zip Linux executable
104+ if : matrix.os == 'ubuntu-latest'
105+ run : zip cs2tracker-linux.zip dist/cs2tracker
106+
107+ - name : Generate SHA256 checksum Windows
108+ if : matrix.os == 'windows-latest'
74109 run : shasum -a 256 cs2tracker-windows.zip > cs2tracker-windows.zip.sha256
75110
76- - name : Upload windows executable
111+ - name : Generate SHA256 checksum Linux
112+ if : matrix.os == 'ubuntu-latest'
113+ run : shasum -a 256 cs2tracker-linux.zip > cs2tracker-linux.zip.sha256
114+
115+ - name : Upload Windows executable
116+ if : matrix.os == 'windows-latest'
77117 uses : alexellis/upload-assets@0.4.0
78118 env :
79119 GITHUB_TOKEN : ${{ github.token }}
80120 with :
81121 asset_paths : ' ["cs2tracker-windows.zip", "cs2tracker-windows.zip.sha256"]'
122+
123+ - name : Upload Linux executable
124+ if : matrix.os == 'ubuntu-latest'
125+ uses : alexellis/upload-assets@0.4.0
126+ env :
127+ GITHUB_TOKEN : ${{ github.token }}
128+ with :
129+ asset_paths : ' ["cs2tracker-linux.zip", "cs2tracker-linux.zip.sha256"]'
0 commit comments