.github/workflows/release.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
name: Release # Controls when the action will run. on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: release: name: "Build and upload artifacts" runs-on: ${{ matrix.os }} permissions: contents: write strategy: matrix: os: - ubuntu-latest - macos-latest - windows-latest - macos-13 steps: # Cancel other actions of the same type that might be already running - name: "Cancel similar actions in progress" uses: styfle/cancel-workflow-action@0.9.1 with: access_token: ${{ github.token }} # Detects OS and provide Nim-friendly OS identifiers - name: Detect current OS id: os run: echo "os=${{matrix.os == 'ubuntu-latest' && 'linux' || matrix.os == 'macos-13' && 'macosx' || matrix.os == 'windows-latest' && 'windows'}}" >> $GITHUB_OUTPUT # Checks out the repository - uses: actions/checkout@v2 # Install cosmocc - name: Install cosmocc run: | mkdir -p $HOME/cosmocc cd $HOME/cosmocc wget -q https://cosmo.zip/pub/cosmocc/cosmocc.zip unzip -q cosmocc.zip pwd ls -l if: matrix.os == 'ubuntu-latest' # Setup emsdk - name: Setup emsdk uses: mymindstorm/setup-emsdk@v14 if: matrix.os == 'ubuntu-latest' # Retrieve ID and Name of the current (draft) release - name: "Get current release" id: current-release uses: InsonusK/get-latest-release@v1.0.1 with: myToken: ${{ github.token }} exclude_types: "release" view_top: 1 # Build (non-Windows) - name: Build run: make if: matrix.os != 'windows-latest' # Package the resulting Linux/macOS binary - name: Create artifact (Linux, macOS) run: zip hex_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.os}}_x86_64.zip hex if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-13' # Package the resulting macOs latest binary - name: Create artifact (Linux, macOS) run: zip hex_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.os}}_arm64.zip hex if: matrix.os == 'macos-latest' # Generate WASM binary - name: Generate WASM binary run: emcc -O2 -sASYNCIFY -sEXPORTED_RUNTIME_METHODS=stringToUTF8 hex.c -o hex.js if: matrix.os == 'ubuntu-latest' # Package the resulting WASM binary - name: Create artifact (Linux - WASM) run: zip hex_${{steps.current-release.outputs.tag_name}}_wasm.zip hex.wasm hex.js if: matrix.os == 'ubuntu-latest' # Generate APE binary - name: Generate APE binary run: | mv hex hex.native $HOME/cosmocc/bin/cosmocc -Wall -Wextra -g -o hex if: matrix.os == 'ubuntu-latest' # Package the resulting APE binary - name: Create artifact (Linux - APE) run: zip hex_${{steps.current-release.outputs.tag_name}}_ape.zip hex if: matrix.os == 'ubuntu-latest' # Build (Windows) - name: Build run: make shell: bash if: matrix.os == 'windows-latest' # Package the resulting Windows binary - name: Create artifact (Windows) run: Compress-Archive -Path hex.exe -DestinationPath hex_${{steps.current-release.outputs.tag_name}}_windows_x86_64.zip if: matrix.os == 'windows-latest' # Upload artifacts to current draft release - name: "Upload to current release" uses: xresloader/upload-to-github-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: file: "hex_v*.zip" overwrite: true tag_name: ${{steps.current-release.outputs.tag_name}} release_id: ${{steps.current-release.outputs.id }} verbose: true |