File: release.yml

package info (click to toggle)
jujutsu 0.30.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 9,756 kB
  • sloc: sh: 283; makefile: 31
file content (152 lines) | stat: -rw-r--r-- 5,285 bytes parent folder | download
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
name: Release

on:
  release:
    types: [published]

permissions: read-all

env:
  CARGO_INCREMENTAL: 0

jobs:
  build-release:
    name: build-release
    permissions:
      contents: write
    strategy:
      fail-fast: false
      matrix:
        build: [linux-x86_64-musl, linux-aarch64-musl, macos-x86_64, macos-aarch64, win-msvc]
        include:
        - build: linux-x86_64-musl
          os: ubuntu-24.04
          target: x86_64-unknown-linux-musl
        - build: linux-aarch64-musl
          os: ubuntu-24.04-arm
          target: aarch64-unknown-linux-musl
        - build: macos-x86_64
          os: macos-13
          target: x86_64-apple-darwin
        - build: macos-aarch64
          os: macos-14
          target: aarch64-apple-darwin
        - build: win-msvc
          os: windows-2022
          target: x86_64-pc-windows-msvc
    runs-on: ${{ matrix.os }}
    steps:
    - name: Checkout repository
      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
      with:
        persist-credentials: false
    - name: Install packages (Ubuntu)
      if: startsWith(matrix.os, 'ubuntu')
      run: |
        sudo apt-get update
        sudo apt-get install -y --no-install-recommends xz-utils liblz4-tool musl-tools
    - name: Install Rust
      uses: dtolnay/rust-toolchain@b3b07ba8b418998c39fb20f53e8b695cdcc8de1b
      with:
        toolchain: stable
        target: ${{ matrix.target }}
    - name: Build release binary
      shell: bash
      run: cargo build --target ${{ matrix.target }} --verbose --release
    - name: Build archive
      shell: bash
      run: |
        outdir="target/${{ matrix.target }}/release"
        staging="jj-${RELEASE_TAG_NAME}-${{ matrix.target }}"
        mkdir "$staging"
        cp {README.md,LICENSE} "$staging/"
        if [ "${{ matrix.os }}" = "windows-2022" ]; then
          cp "$outdir/jj.exe" "$staging/"
          cd "$staging"
          7z a "../$staging.zip" .
          echo "ASSET=$staging.zip" >> $GITHUB_ENV
        else
          cp "$outdir/jj" "$staging/"
          tar czf "$staging.tar.gz" -C "$staging" .
          echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV
        fi
      env:
        RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
    - name: Upload release archive
      uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ github.event.release.upload_url }}
        asset_path: ${{ env.ASSET }}
        asset_name: ${{ env.ASSET }}
        asset_content_type: application/octet-stream

  docs-release-archive:
    runs-on: ubuntu-24.04
    permissions:
      contents: write

    steps:
      - name: Install packages (Ubuntu)
        run: |
          sudo apt-get update
          sudo apt-get install -y --no-install-recommends xz-utils liblz4-tool musl-tools
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
        with:
          persist-credentials: false
      - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
        with:
          python-version: 3.11
      - name: Install uv
        uses: astral-sh/setup-uv@f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb
        with:
          version: "0.5.1"
      - name: Compile docs and zip them up
        run: |
          uv run mkdocs build
          archive="jj-${RELEASE_TAG_NAME}-docs-html.tar.gz"
          tar czf "$archive" -C "rendered-docs" .
          echo "ASSET=$archive" >> $GITHUB_ENV
        env:
          MKDOCS_OFFLINE: true
          RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
      - name: Upload release archive
        uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ github.event.release.upload_url }}
          asset_path: ${{ env.ASSET }}
          asset_name: ${{ env.ASSET }}
          asset_content_type: application/octet-stream

  docs-deploy-website-latest-release:
    runs-on: ubuntu-24.04
    permissions:
      contents: write

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
        with:
          # `.github/scripts/docs-build-deploy` will need to `git push` to the docs branch
          persist-credentials: true
      - run:  "git fetch origin gh-pages --depth=1"
      - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
        with:
          python-version: 3.11
      - name: Install uv
        uses: astral-sh/setup-uv@f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb
        with:
          version: "0.5.1"
      - name: Install dependencies, compile and deploy docs to the "latest release" section of the website
        run: |
          git config user.name 'jj-docs[bot]'
          git config user.email 'jj-docs[bot]@users.noreply.github.io'
          # Using the 'latest' tag below makes the website default
          # to this version.
          .github/scripts/docs-build-deploy "${RELEASE_TAG_NAME}" latest --update-aliases --push
        env:
          RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
      - name: "Show `git diff --stat`"
        run: git diff --stat gh-pages^ gh-pages || echo "(No diffs)"