1name: release
2on:
3  push:
4    tags:
5    - '[0-9]+.[0-9]+.[0-9]+'
6
7jobs:
8  create-release:
9    name: create-release
10    runs-on: ubuntu-18.04
11    steps:
12    - name: Create artifacts directory
13      run: mkdir artifacts
14
15    - name: Get the release version from the tag
16      if: env.SCTD_VERSION == ''
17      run: |
18        echo "::set-env name=SCTD_VERSION::${GITHUB_REF#refs/tags/}"
19        echo "version is: ${{ env.SCTD_VERSION }}"
20
21    - name: Create GitHub release
22      id: release
23      uses: actions/create-release@v1
24      env:
25        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26      with:
27        tag_name: ${{ env.SCTD_VERSION }}
28        release_name: ${{ env.SCTD_VERSION }}
29
30    - name: Save release upload URL to artifact
31      run: echo "${{ steps.release.outputs.upload_url }}" > artifacts/release-upload-url
32
33    - name: Save version number to artifact
34      run: echo "${{ env.SCTD_VERSION }}" > artifacts/release-version
35
36    - name: Upload artifacts
37      uses: actions/upload-artifact@v1
38      with:
39        name: artifacts
40        path: artifacts
41
42  build-release:
43    name: build-release
44    needs: ['create-release']
45    runs-on: ubuntu-18.04
46    steps:
47    - name: Checkout repository
48      uses: actions/checkout@v2
49
50    - name: Install packages
51      run: |
52        sudo apt-get update
53        sudo apt-get install -y --no-install-recommends \
54          libx11-dev \
55          libxrandr-dev
56
57    - name: Install Rust
58      uses: actions-rs/toolchain@v1
59      with:
60        toolchain: stable
61        profile: minimal
62        override: true
63
64    - name: Get release upload URL
65      uses: actions/download-artifact@v1
66      with:
67        name: artifacts
68        path: artifacts
69
70    - name: Set release upload URL and release version
71      shell: bash
72      run: |
73        release_upload_url="$(cat artifacts/release-upload-url)"
74        echo "::set-env name=RELEASE_UPLOAD_URL::$release_upload_url"
75        echo "release upload url: $RELEASE_UPLOAD_URL"
76        release_version="$(cat artifacts/release-version)"
77        echo "::set-env name=RELEASE_VERSION::$release_version"
78        echo "release version: $RELEASE_VERSION"
79
80    - name: Build release binary
81      run: cargo build --verbose --release
82
83    - name: Build archive
84      shell: bash
85      run: |
86        staging="sctd-${{ env.RELEASE_VERSION }}"
87        mkdir -p "$staging"
88        cp target/release/sctd "$staging"
89        cp LICENSE "$staging"
90        tar czf "$staging.tar.gz" "$staging"
91        echo "::set-env name=ASSET::$staging.tar.gz"
92
93    - name: Upload release archive
94      uses: actions/upload-release-asset@v1.0.1
95      env:
96        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
97      with:
98        upload_url: ${{ env.RELEASE_UPLOAD_URL }}
99        asset_path: ${{ env.ASSET }}
100        asset_name: ${{ env.ASSET }}
101        asset_content_type: application/octet-stream
102