all repos — hastysite @ eda1a9bf5f873f2c4e7a06c3c1cd7d0da7fa0921

A high-performance static site generator.

.github/workflows/add-artifacts-to-current-releases.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
 120
 121
 122
 123
name: Add artifacts to current 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 }}
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest

    env:
      CHOOSENIM_CHOOSE_VERSION: stable
      CHOOSENIM_NO_ANALYTICS: 1

    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.6.0
        with:
          access_token: ${{ github.token }}

      # Detects OS and provide Nim-friendly OS identifiers
      - name: Detect current OS
        id: os
        run: echo "::set-output name=id::${{matrix.os == 'ubuntu-latest' && 'linux' || matrix.os == 'macos-latest' && 'macosx' || matrix.os == 'windows-latest' && 'windows'}}"

      # Checks out the repository
      - uses: actions/checkout@v2

      # Installs libraries
      - name: install musl-gcc
        run: sudo apt-get install -y musl-tools
        if: matrix.os == 'ubuntu-latest'

      # Sets path (Linux, macOS)
      - name: Update $PATH
        run: echo "$HOME/.nimble/bin" >> $GITHUB_PATH
        if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest'

      # Sets path (Windows)
      - name: Update %PATH%
        run: echo "${HOME}/.nimble/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
        if: matrix.os == 'windows-latest'

      # Setup MinGW
      - name: Set up MinGW
        uses: egor-tensin/setup-mingw@v2
        with:
          platform: x64
        if: matrix.os == 'windows-latest'

      # Install the Nim compiler and dependencies
      - name: Install Nim and deps
        run: |
          curl https://nim-lang.org/choosenim/init.sh -sSf > init.sh
          sh init.sh -y

      # Build for Linux
      - name: Build (Linux)
        run: nimble build -y -d:release --gcc.exe:musl-gcc --gcc.linkerexe:musl-gcc --mm:refc --opt:size
        if: matrix.os == 'ubuntu-latest'

      # Build for macOS/Windows
      - name: Build (macOS, Windows)
        run: nimble build -y -d:release --opt:size --mm:refc
        if: matrix.os == 'macos-latest' || matrix.os == 'windows-latest'

      # UPX compress (*nix) 
      - name: UPX
        uses: svenstaro/upx-action@v2
        with:
          files: |
            hastysite
          args: --best --force
        if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest'

      # UPX compress (Windows) 
      - name: UPX
        uses: svenstaro/upx-action@v2
        with:
          files: |
            hastysite.exe
          args: --best --force
        if: matrix.os == 'windows-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

      # Package the resulting Linux/macOS binary
      - name: Create artifact (Linux, macOS)
        run: zip hastysite_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.id}}_x64.zip hastysite
        if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'

      # Package the resulting Windows binary
      - name: Create artifact (Windows)
        run: Compress-Archive -Path hastysite.exe -DestinationPath hastysite_${{steps.current-release.outputs.tag_name}}_windows_x64.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: "hastysite_v*.zip"
          overwrite: true
          tag_name: ${{steps.current-release.outputs.tag_name}}
          release_id: ${{steps.current-release.outputs.id }}
          verbose: true