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