From 83ab5dc5bea3f73184e385e9c817cff9b428b671 Mon Sep 17 00:00:00 2001 From: artembo Date: Tue, 12 Jul 2022 16:58:40 +0300 Subject: [PATCH] cd: add package deploy workflow This workflow is intended to run on a tag push to the 'master' branch for creating and deploying module packages to S3 based repositories. Closes #163 --- .github/workflows/packaging.yml | 89 +++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 .github/workflows/packaging.yml diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml new file mode 100644 index 0000000..99ba2b8 --- /dev/null +++ b/.github/workflows/packaging.yml @@ -0,0 +1,89 @@ +name: packaging + +on: + push: + tags: + - '*' + +jobs: + package: + # Skip pull request jobs when the source branch is in the same + # repository. + if: | + github.event_name == 'push' || + github.event.pull_request.head.repo.full_name != github.repository + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + platform: + - { os: 'debian', dist: 'stretch' } + - { os: 'debian', dist: 'buster' } + - { os: 'debian', dist: 'bullseye' } + - { os: 'el', dist: '7' } + - { os: 'el', dist: '8' } + - { os: 'fedora', dist: '30' } + - { os: 'fedora', dist: '31' } + - { os: 'fedora', dist: '32' } + - { os: 'fedora', dist: '33' } + - { os: 'fedora', dist: '34' } + - { os: 'fedora', dist: '35' } + - { os: 'fedora', dist: '36' } + - { os: 'ubuntu', dist: 'xenial' } + - { os: 'ubuntu', dist: 'bionic' } + - { os: 'ubuntu', dist: 'focal' } + - { os: 'ubuntu', dist: 'groovy' } + - { os: 'ubuntu', dist: 'hirsute' } + - { os: 'ubuntu', dist: 'impish' } + - { os: 'ubuntu', dist: 'jammy' } + + env: + OS: ${{ matrix.platform.os }} + DIST: ${{ matrix.platform.dist }} + + steps: + - name: Clone the module + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Clone the packpack tool + uses: actions/checkout@v2 + with: + repository: packpack/packpack + path: packpack + + - name: Fetch tags + # Found that Github checkout Actions pulls all the tags, but + # right it deannotates the testing tag, check: + # https://github.com/actions/checkout/issues/290 + # But we use 'git describe ..' calls w/o '--tags' flag and it + # prevents us from getting the needed tag for packages version + # setup. To avoid of it, let's fetch it manually, to be sure + # that all tags will exist always. + run: git fetch --tags -f + + - name: Create packages + run: ./packpack/packpack + + - name: Deploy packages + # We need this step to run only on push with tag. + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }} + env: + RWS_URL_PART: https://rws.tarantool.org/tarantool-modules + RWS_AUTH: ${{ secrets.RWS_AUTH }} + PRODUCT_NAME: tarantool-http + run: | + CURL_CMD="curl -LfsS \ + -X PUT ${RWS_URL_PART}/${OS}/${DIST} \ + -u ${RWS_AUTH} \ + -F product=${PRODUCT_NAME}" + + for f in $(ls -I '*build*' -I '*.changes' ./build); do + CURL_CMD+=" -F $(basename ${f})=@./build/${f}" + done + + echo ${CURL_CMD} + + ${CURL_CMD}