diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..2517328 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,94 @@ +on: + push: + branches: [ main ] + +jobs: + check-release-tag: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-node@v3 + - name: Prepare tag + id: prepare_tag + continue-on-error: true + run: | + npm install --location=global podspec-bump + export TAG=$(podspec-bump --dump-version -p NWWebSocket.podspec) + echo "TAG=$TAG" >> $GITHUB_ENV + export CHECK_TAG=$(git tag | grep $TAG) + if [[ $CHECK_TAG ]]; then + echo "Skipping because release tag already exists" + exit 1 + fi + - name: Output + id: release_output + if: ${{ steps.prepare_tag.outcome == 'success' }} + run: | + echo "::set-output name=tag::${{ env.TAG }}" + outputs: + tag: ${{ steps.release_output.outputs.tag }} + + build: + runs-on: macos-latest + needs: check-release-tag + if: ${{ needs.check-release-tag.outputs.tag }} + steps: + - name: Build + run: swift build -v + - name: Run tests + run: swift test -v + outputs: + tag: ${{ needs.check-release-tag.outputs.tag }} + + publish-cocoapods: + runs-on: ubuntu-latest + needs: build + if: ${{ needs.build.outputs.tag }} + steps: + - uses: actions/checkout@v2 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.2.2' + - run: | + gem install cocoapods + + git config user.email "pusher-ci@pusher.com" + git config user.name "Pusher CI" + + git tag -a ${{ needs.build.outputs.tag }} -m "${{ needs.build.outputs.tag }}" + git push origin ${{ needs.build.outputs.tag }} + + pod trunk push NWWebSocket.podspec + env: + COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TOKEN }} + outputs: + release_version: ${{ needs.build.outputs.tag }} + + create-github-release: + runs-on: ubuntu-latest + needs: publish-cocoapods + if: ${{ needs.publish-cocoapods.outputs.release_version }} + steps: + - uses: actions/checkout@v2 + - name: Prepare tag + run: | + export TAG=${{ needs.publish-cocoapods.outputs.release_version }} + echo "TAG=$TAG" >> $GITHUB_ENV + - name: Setup git + run: | + git config user.email "pusher-ci@pusher.com" + git config user.name "Pusher CI" + - name: Create Release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.TAG }} + release_name: ${{ env.TAG }} + draft: false + prerelease: false + +