summaryrefslogtreecommitdiffstats
path: root/.github/workflows/release.yml
blob: 3dc1bf5701f78da5d38d6ef1991cfa76b34651ee (plain)
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
124
125
126
127
128
129
130
131
132
name: Release

on:
  push:
    tags:
      - '*.*.*'

jobs:

  Linux:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Get tag
      id: tag
      run: |
        echo ::set-output name=tag::${GITHUB_REF#refs/tags/}
    - name: Building release
      run: |
        make linux_release
    - name: Upload distributions artifacts
      uses: actions/upload-artifact@v1
      with:
        name: pendulum-dist
        path: dist/wheelhouse

  MacOS:
    runs-on: macos-latest
    strategy:
      matrix:
        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]

    steps:
    - uses: actions/checkout@v2
    - name: Get tag
      id: tag
      run: |
        echo ::set-output name=tag::${GITHUB_REF#refs/tags/}
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v1
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install and set up Poetry
      run: |
        curl -fsS -o get-poetry.py https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py
        python get-poetry.py --preview -y
    - name: Build distributions
      run: |
        source $HOME/.poetry/env
        poetry build -vvv
    - name: Upload distribution artifacts
      uses: actions/upload-artifact@v1
      with:
        name: pendulum-dist
        path: dist

  Windows:
    runs-on: windows-latest
    strategy:
      matrix:
        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]

    steps:
    - uses: actions/checkout@v2
    - name: Get tag
      id: tag
      shell: bash
      run: |
        echo ::set-output name=tag::${GITHUB_REF#refs/tags/}
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v1
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install and setup Poetry
      run: |
        Invoke-WebRequest https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py -O get-poetry.py
        python get-poetry.py --preview -y
    - name: Build distributions
      run: |
        $env:Path += ";$env:Userprofile\.poetry\bin"
        poetry build -vvv
    - name: Upload distribution artifact
      uses: actions/upload-artifact@v1
      with:
        name: pendulum-dist
        path: dist

  Release:
    needs: [Linux, MacOS, Windows]
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Get tag
        id: tag
        run: |
          echo ::set-output name=tag::${GITHUB_REF#refs/tags/}
      - name: Download distribution artifact
        uses: actions/download-artifact@master
        with:
          name: pendulum-dist
          path: dist
      - name: Install and set up Poetry
        run: |
          curl -fsS -o get-poetry.py https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py
          python get-poetry.py --preview -y
      - name: Set up cache
        uses: actions/cache@v1
        with:
          path: .venv
          key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }}
      - name: Check distributions
        run: |
          ls -la dist
      - name: Publish to PyPI
        env:
          POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
        run: |
          source $HOME/.poetry/env
          poetry publish
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
        with:
          tag_name: ${{ steps.tag.outputs.tag }}
          release_name: ${{ steps.tag.outputs.tag }}
          draft: false
          prerelease: false