From 52ef37b34729cb777506c624c39b8027e49fcbb4 Mon Sep 17 00:00:00 2001 From: Zhichang Yu Date: Sat, 23 Dec 2023 10:36:32 +0800 Subject: [PATCH] added wrokflow --- .github/workflows/release.yml | 56 +++++++++++++++++++++++++++++++++++ .github/workflows/tests.yml | 18 +++++++++++ 2 files changed, 74 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..51ce0bc --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,56 @@ +name: release + +on: + schedule: + - cron: '0,15,30,45 * * * *' # schedule nightly build daily at midnight UTC + push: + tags: + - "v*.*.*" # normal release + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Ensure workspace ownership + run: echo "chown -R $USER $GITHUB_WORKSPACE" && sudo chown -R $USER $GITHUB_WORKSPACE + + - name: Check out code + uses: actions/checkout@v3 + + - name: Prepare release body + run: | + if [[ ${{ github.ref }} =~ ^refs/tags/v(.*) ]]; then + RELEASE_TAG=v${BASH_REMATCH[1]} + PRERELEASE=false + else + RELEASE_TAG=nightly + PRERELEASE=true + fi + echo "RELEASE_TAG=$RELEASE_TAG" >> $GITHUB_ENV + echo "PRERELEASE=$PRERELEASE" >> $GITHUB_ENV + RELEASE_DATETIME=$(date --rfc-3339=seconds) + cat < release_template.md + Release $RELEASE_TAG created from $GITHUB_SHA at $RELEASE_DATETIME + EOF + envsubst < release_template.md > release_body.md + + - name: Build source tarball + run: git archive --format=tar HEAD | gzip > archive.tgz + + - name: Remove existing mutalbe tag "nightly" + # https://github.com/softprops/action-gh-release/issues/171 + run: git push origin :refs/tags/nightly || true + # https://docs.github.com/en/actions/using-jobs/using-conditions-to-control-job-execution + if: ${{ env.RELEASE_TAG }} == "nightly" + + - name: Create or overwrite a releae + # https://github.com/actions/upload-release-asset has been replaced by https://github.com/softprops/action-gh-release + uses: softprops/action-gh-release@v1 + with: + token: ${{ secrets.MY_GITHUB_TOKEN }} # Use the secret as an environment variable + prerelease: ${{ env.PRE_RELEASE }} + tag_name: ${{ env.RELEASE_TAG }} + # The body field does not support environment variable substitution directly. + body_path: release_body.md + files: | + *.tgz diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..91a834c --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,18 @@ +name: tests + +on: + push: + branches: [ master ] + pull_request: + types: [ opened, synchronize, reopened, edited ] + +jobs: + tests: + name: tests + runs-on: ubuntu-latest + steps: + - name: Ensure workspace ownership + run: echo "chown -R $USER $GITHUB_WORKSPACE" && sudo chown -R $USER $GITHUB_WORKSPACE + + - name: Check out code + uses: actions/checkout@v3