aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/release.yml
blob: 86023cf4a901b99bffe9e73b01a1d740809d66f4 (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
# GitHub Actions workflow to create releases from tags.
name: "Release"

on:
  push:
    tags: [ "v*" ]
  workflow_dispatch:

concurrency:
  group: "${{ github.workflow }}-${{ github.ref }}"
  cancel-in-progress: false

permissions: {}

jobs:
  release:
    name: "Release"
    runs-on: "ubuntu-24.04"
    permissions:
      contents: write # Required to create release.
    steps:
      - name: "Checkout repository"
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          persist-credentials: false

      - name: "Generate version changelog"
        run: .github/scripts/changelog.sh "$VERSION" > release-changelog.txt
        env:
          VERSION: "${{ github.ref_name }}"

      - name: "Create draft GitHub release"
        env:
          GH_TOKEN: "${{ github.token }}"
          VERSION: "${{ github.ref_name }}"
        run: |
          gh release create "$VERSION" \
            --repo "$GITHUB_REPOSITORY" \
            --title "$VERSION" \
            --notes-file release-changelog.txt \
            --draft

  build-windows:
    name: "${{ matrix.os }}/${{ matrix.arch }}"
    runs-on: "${{ matrix.os }}"
    needs: ["release"]
    permissions:
      contents: write # Required to upload release assets.
    strategy:
      matrix:
        os: [ "windows-2022" ]
        arch: [ "Win32", "x64", "ARM64" ]
    steps:
      - name: "Checkout repository"
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          persist-credentials: false

      - name: "Setup MSYS2"
        uses: msys2/setup-msys2@66cd2cce69caa17b53920067426061ca1de3a884 # v2.32.0
        with:
          update: true
          install: >-
            autoconf
            automake
            diffutils
            libtool
            gcc
            git
            patch
            perl

      - name: "Run autogen"
        shell: msys2 {0}
        run: ./autogen.sh

      - name: "Configure"
        shell: pwsh
        env:
          ARCH: "${{ matrix.arch }}"
        run: cmake -Bbuild -G "Visual Studio 17 2022" -A "${env:ARCH}" -DCMAKE_INSTALL_PREFIX=local

      - name: "Build"
        shell: pwsh
        run: cmake --build build --config Release

      - name: "Install"
        shell: pwsh
        run: cmake --install build --config Release

      - name: "Package release artifact"
        shell: pwsh
        env:
          VERSION: "${{ github.ref_name }}"
          ARCH: "${{ matrix.arch }}"
        run: Compress-Archive -Path local\* "libressl_${env:VERSION}_windows_${env:ARCH}.zip"

      - name: "Upload release artifact"
        shell: bash
        env:
          GH_TOKEN: "${{ github.token }}"
          VERSION: "${{ github.ref_name }}"
          ARCH: "${{ matrix.arch }}"
        run: |
          gh release upload "$VERSION" \
            --repo "$GITHUB_REPOSITORY" \
            "libressl_${VERSION}_windows_${ARCH}.zip"