diff --git a/.github/templates/release.md b/.github/templates/release.md new file mode 100644 index 0000000..d69b723 --- /dev/null +++ b/.github/templates/release.md @@ -0,0 +1,9 @@ +## MD5 Checksums +``` + +``` + +## SHA256 Checksums +``` + +``` diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..88a1eef --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,91 @@ +name: Release + +on: + push: + tags: + - '*' + +jobs: + build: + name: Build + strategy: + matrix: + config: + - name: Linux + os: ubuntu-latest + artifact_name: wrapper_c-linux-output + - name: macOS + os: macos-latest + artifact_name: wrapper_c-macos-output + runs-on: ${{ matrix.config.os }} + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.ref_name }} + submodules: true + fetch-depth: 0 + + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - run: pip install meson ninja + + - name: Build + run: | + if [[ "${{ matrix.config.name }}" == 'macOS' ]]; then + export MACOSX_DEPLOYMENT_TARGET=12.0 + fi + + kernel="$(uname -s | awk '{print tolower($0)}')" + arch="$(uname -m)" + meson --prefix="$(pwd)/wrapper_c-${{ github.ref_name }}-${kernel}-${arch}" --buildtype=release build + ninja -C build install + + mkdir -p output + tar -zcvf "output/wrapper_c-${{ github.ref_name }}-${kernel}-${arch}.tgz" "wrapper_c-${{ github.ref_name }}-${kernel}-${arch}" + + - uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.config.artifact_name }} + path: output + + publish: + needs: build + runs-on: ubuntu-latest + env: + GH_REPO: ${{ github.repository }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.ref_name }} + submodules: true + fetch-depth: 0 + + - run: mkdir -p output + + - uses: actions/download-artifact@v4 + with: + name: wrapper_c-linux-output + path: output + + - uses: actions/download-artifact@v4 + with: + name: wrapper_c-macos-output + path: output + + - name: Upload + run: | + content="$(cat .github/templates/release.md)" + + pushd output >/dev/null + content="${content//$(md5sum *)}" + content="${content//$(sha256sum *)}" + popd >/dev/null + + echo "${content}" >note.md + + gh release create -t "wrapper_c ${{ github.ref_name }}" -F note.md ${{ github.ref_name }} output/*