From f315def019f17b782184a53aed508f194e9100d1 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 20 Feb 2022 11:13:18 +0100 Subject: [PATCH] ci(GitHub): Correctly execute (pre)release actions when tags are pushed. --- .github/workflows/github-prerelease.yml | 330 ++++++++++++++++++++++++ .github/workflows/github_release.yml | 2 +- 2 files changed, 331 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/github-prerelease.yml diff --git a/.github/workflows/github-prerelease.yml b/.github/workflows/github-prerelease.yml new file mode 100644 index 0000000..6bd9901 --- /dev/null +++ b/.github/workflows/github-prerelease.yml @@ -0,0 +1,330 @@ +name: Create GitHub Pre-Release after GitLab tag mirror + +on: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+' + - '[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+' + - '[0-9]+.[0-9]+.[0-9]+-pre.[0-9]+' + +jobs: + release: + runs-on: ubuntu-latest + steps: + # GET LATEST CODE + - name: Checkout latest code + uses: actions/checkout@master + with: + fetch-depth: 0 + + # EXTRACT TAG FROM PUSH + - name: Get tag + id: tag + uses: dawidd6/action-get-tag@v1 + - name: Use tag + run: echo ${{steps.tag.outputs.tag}} + + # GENERATE CHANGELOG, RELEASE + - id: conventional_changelog + uses: ardalanamini/auto-changelog@master + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Create Release + id: create_release + uses: actions/create-release@latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ steps.tag.outputs.tag }} + body: | + Automatic release of version: **${{ steps.tag.outputs.tag }}** + **Changes in this release:** + ${{ steps.conventional_changelog.outputs.changelog }} + draft: false + prerelease: true + + # IF JAVA PROJECT + +# # BUILD PROJECT AND PUBLISH TO PACKAGES +# - name: Set up JDK 8 +# uses: actions/setup-java@v2 +# with: +# distribution: 'adopt' +# java-version: '8' +# - name: Grant execute permission for gradlew +# run: chmod +x gradlew +# - name: Publish to GitHub Packages +# env: +# GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# run: | +# NEW_VERSION=$(echo "${{ steps.tag.outputs.tag }}") +# echo "New version: ${NEW_VERSION}" +# echo "Github username: ${GITHUB_ACTOR}" +# ./gradlew about +# ./gradlew installQuasar cleanFrontend assembleFrontend copyDist build --info -x test +# - name: List files +# run: ls -ahl build/libs +# +# - name: Rename files +# run: | +# echo "**** Renaming files to please the eye ****" +# mv build/libs/REPOSITORY.jar build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}.jar +# mv build/libs/REPOSITORY-javadoc.jar build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}-javadoc.jar +# mv build/libs/REPOSITORY-sources.jar build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}-sources.jar +# +# - uses: actions/upload-artifact@v2 +# with: +# name: build-artifacts-gradle +# path: | +# build/libs/ +# if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` +# - uses: actions/upload-artifact@v2 +# if: failure() +# with: +# name: report +# path: build/reports/tests/test/ +# if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` +# +# # UPLOAD ASSETS TO RELEASE +# - name: Upload Release Asset Main Jar +# id: upload-release-asset +# uses: actions/upload-release-asset@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# upload_url: ${{ steps.create_release.outputs.upload_url }} +# asset_path: ./build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}.jar +# asset_name: REPOSITORY-${{ steps.tag.outputs.tag }}.jar +# asset_content_type: application/jar +# +# - name: Upload Release Asset Sources Jar +# id: upload-release-asset-sources +# uses: actions/upload-release-asset@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# upload_url: ${{ steps.create_release.outputs.upload_url }} +# asset_path: ./build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}-sources.jar +# asset_name: REPOSITORY-${{ steps.tag.outputs.tag }}-sources.jar +# asset_content_type: application/jar +# +# - name: Upload Release Asset Javadoc Jar +# id: upload-release-asset-javadoc +# uses: actions/upload-release-asset@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# upload_url: ${{ steps.create_release.outputs.upload_url }} +# asset_path: ./build/libs/REPOSITORY-${{ steps.tag.outputs.tag }}-javadoc.jar +# asset_name: REPOSITORY-${{ steps.tag.outputs.tag }}-javadoc.jar +# asset_content_type: application/jar +# +# # DOCKER RELATED +# - name: Set up QEMU +# uses: docker/setup-qemu-action@v1 +# - name: Set up Docker Buildx +# uses: docker/setup-buildx-action@v1 +# - name: Login to DockerHub +# uses: docker/login-action@v1 +# with: +# username: griefed +# password: ${{ secrets.DOCKERHUB_TOKEN }} +# - name: Login to GitHub Container Registry +# uses: docker/login-action@v1 +# with: +# registry: ghcr.io +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} +# - name: Build and push +# uses: docker/build-push-action@v2 +# with: +# context: . +# file: ./Dockerfile.gradle.quasar +# platforms: linux/amd64,linux/arm64 +# push: true +# tags: | +# ghcr.io/griefed/REPOSITORY:latest +# ghcr.io/griefed/REPOSITORY:${{ steps.tag.outputs.tag }} +# griefed/REPOSITORY:latest +# griefed/REPOSITORY:${{ steps.tag.outputs.tag }} + + # IF QUASAR PROJECT + +# - name: Setup Node.js environment +# uses: actions/setup-node@v2.4.1 +# with: +# # Version Spec of the version to use. Examples: 12.x, 10.15.1, >=10.15.0 +# node-version: '>= 16.9.1' +# # Set this option if you want the action to check for the latest available version that satisfies the version spec +# check-latest: false +# +# - name: Install Quasar +# run: npm install -g @quasar/cli +# +# - name: Install packages +# run: npm install +# +# - name: Build project for NGINX release package +# run: quasar build +# +# - name: List files +# run: pwd && ls -al * +# +# # NGINX Archives +# - name: Create NGINX Archive tar.gz +# run: | +# echo "**** Creating archive of quasar build ****" +# tar -cvzf REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.tar.gz dist/spa +# - name: Create NGINX Archive zip +# uses: papeloto/action-zip@v1 +# with: +# files: dist/spa +# recursive: true +# dest: REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.zip +# +# - uses: actions/upload-artifact@v2 +# with: +# name: build-artifacts +# path: dist/spa/ # frontend/dist/spa if Gradle Spring Boot project for example +# if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` +# +# # Upload NGINX Assets +# - name: Upload Release Archive tar.gz +# id: upload-release-asset-archive-targz +# uses: actions/upload-release-asset@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# upload_url: ${{ steps.create_release.outputs.upload_url }} +# asset_path: ./REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.tar.gz +# asset_name: REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.tar.gz +# asset_content_type: application/gzip +# - name: Upload Release Archive zip +# id: upload-release-asset-archive-zip +# uses: actions/upload-release-asset@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# upload_url: ${{ steps.create_release.outputs.upload_url }} +# asset_path: ./REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.zip +# asset_name: REPOSITORY-NGINX-${{ steps.tag.outputs.tag }}.zip +# asset_content_type: application/zip +# +# # DEPLOY TO GH-PAGES +# - name: Deploy to GitHub-Pages +# uses: JamesIves/github-pages-deploy-action@4.1.6 +# with: +# branch: gh-pages +# folder: dist/spa + +# # DOCKER RELATED +# - name: Set up QEMU +# uses: docker/setup-qemu-action@v1 +# - name: Set up Docker Buildx +# uses: docker/setup-buildx-action@v1 +# - name: Login to DockerHub +# uses: docker/login-action@v1 +# with: +# username: griefed +# password: ${{ secrets.DOCKERHUB_TOKEN }} +# - name: Login to GitHub Container Registry +# uses: docker/login-action@v1 +# with: +# registry: ghcr.io +# username: ${{ github.actor }} +# password: ${{ secrets.GITHUB_TOKEN }} +# - name: Build and push +# uses: docker/build-push-action@v2 +# with: +# context: . +# file: ./Dockerfile.gradle.quasar +# platforms: linux/amd64,linux/arm64 +# push: true +# tags: | +# ghcr.io/griefed/REPOSITORY:latest +# ghcr.io/griefed/REPOSITORY:${{ steps.tag.outputs.tag }} +# griefed/REPOSITORY:latest +# griefed/REPOSITORY:${{ steps.tag.outputs.tag }} + + # IF ELECTRON PROJECT + +# electron: +# needs: release +# runs-on: ${{ matrix.os }} +# +# strategy: +# matrix: +# os: [macos-latest, ubuntu-latest, windows-latest] +# +# steps: +# # GET LATEST CODE +# - name: Checkout latest code +# uses: actions/checkout@master +# with: +# fetch-depth: 0 +# +# # SETUP NODE ENVIRONMENT +# - name: Setup Node.js environment +# uses: actions/setup-node@v2.4.1 +# with: +# # Version Spec of the version to use. Examples: 12.x, 10.15.1, >=10.15.0 +# node-version: '>= 16.9.1' +# # Set this option if you want the action to check for the latest available version that satisfies the version spec +# check-latest: false +# +# - name: Build/release Electron app +# uses: vedaprakashms/quasar_electron_build@V0.0.1 +# with: +# # GitHub token, automatically provided to the action +# # (No need to define this secret in the repo settings) +# github_token: ${{ secrets.github_token }} +# +# - name: List files +# run: ls dist/electron +# +# - uses: actions/upload-artifact@v2 +# with: +# name: electron-artifacts ${{ matrix.os }} +# path: | +# dist/electron/ +# !dist/electron/UnPackaged +# if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` +# +# - name: Rename folders +# run: | +# mv dist/electron/REPOSITORY* REPOSITORY-${{ matrix.os }} +# +# # Electron Archives +# - name: Create zip +# uses: ihiroky/archive-action@v1 +# with: +# root_dir: REPOSITORY-${{ matrix.os }} +# file_path: REPOSITORY-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.zip +# verbose: true +# - name: Create tar.gz +# run: | +# tar -cvzf REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.tar.gz REPOSITORY-${{ matrix.os }} +# +# # Upload App Assets +# - name: Upload App Archive zip +# id: upload-release-asset-archive-zip +# uses: actions/upload-release-asset@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# upload_url: ${{ needs.release.outputs.uploadurl }} +# asset_path: ./REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.zip +# asset_name: REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.zip +# asset_content_type: application/zip +# - name: Upload App Archive tar.gz +# id: upload-release-asset-archive-targz +# uses: actions/upload-release-asset@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# upload_url: ${{ needs.release.outputs.uploadurl }} +# asset_path: ./REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.tar.gz +# asset_name: REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.tar.gz +# asset_content_type: application/gzip \ No newline at end of file diff --git a/.github/workflows/github_release.yml b/.github/workflows/github_release.yml index c686c7b..51e2368 100644 --- a/.github/workflows/github_release.yml +++ b/.github/workflows/github_release.yml @@ -3,7 +3,7 @@ name: Create GitHub Release after tag push on: push: tags: - - '*' + - '[0-9]+.[0-9]+.[0-9]+' jobs: release: -- GitLab