From 2a5d6d96dac1e465622727522b03c6160982d18c Mon Sep 17 00:00:00 2001 From: Clemens Koza Date: Sun, 9 Jun 2024 13:18:21 +0200 Subject: [PATCH] add release workflow --- .github/workflows/release.yml | 77 +++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..721f477 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,77 @@ +name: Package and push to registry repo +on: + push: + tags: [ v* ] + +env: + # the repository to which to push the release version + # usually a fork of typst/packages (https://github.com/typst/packages/) + # that you have push privileges to + REGISTRY_REPO: author/typst-packages + # the path within that repo where the "/" directory should be put + # for the Typst package registry, keep this as is + PATH_PREFIX: packages/preview + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Probe runner package cache + uses: awalsh128/cache-apt-pkgs-action@v1 + with: + packages: cargo + version: 1.0 + + - name: Install just from crates.io + uses: baptiste0928/cargo-install@v3 + with: + crate: just + + - name: Setup typst + uses: typst-community/setup-typst@v3 + with: + typst-version: latest + + - name: Determine and check package metadata + run: | + . scripts/setup + echo "PKG_NAME=${PKG_PREFIX}" >> "${GITHUB_ENV}" + echo "PKG_VERSION=${VERSION}" >> "${GITHUB_ENV}" + + if [[ "${GITHUB_REF_NAME}" != "v${VERSION}" ]]; then + echo "package version ${VERSION} does not match release tag ${GITHUB_REF_NAME}" >&2 + exit 1 + fi + + - name: Build package + run: | + just doc + just package out + + - name: Checkout package registry + uses: actions/checkout@v4 + with: + repository: ${{ env.REGISTRY_REPO }} + token: ${{ secrets.REGISTRY_TOKEN }} + path: typst-packages + + - name: Release package + run: | + mkdir -p "typst-packages/${{ env.PATH_PREFIX }}/$PKG_NAME" + mv "out/${PKG_NAME}/${PKG_VERSION}" "typst-packages/${{ env.PATH_PREFIX }}/${PKG_NAME}" + rmdir "out/${PKG_NAME}" + rmdir out + + GIT_USER_NAME="$(git log -1 --pretty=format:'%an')" + GIT_USER_EMAIL="$(git log -1 --pretty=format:'%ae')" + + cd typst-packages + git config user.name "${GIT_USER_NAME}" + git config user.email "${GIT_USER_EMAIL}" + git checkout -b "${PKG_NAME}-${PKG_VERSION}" + git add . + git commit -m "${PKG_NAME}:${PKG_VERSION}" + git push --set-upstream origin "${PKG_NAME}-${PKG_VERSION}"