Skip to content
Snippets Groups Projects
github_release.yml 3.82 KiB
Newer Older
name: Create GitHub Release after GitLab tag mirror

on:
  push:
    tags:
    # OUTPUTS
    outputs:
      newtag: ${{ steps.tag.outputs.tag }}
      uploadurl: ${{ steps.create_release.outputs.upload_url }}
    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}}

      # GET RELEASE INFO
      - name: Get Release Info
        run: |
          curl --header \
          'PRIVATE-TOKEN: ${{ secrets.GITLAB_TOKEN }}' \
          'https://git.griefed.de/api/v4/projects/95/releases/${{steps.tag.outputs.tag}}' >> ./version.json

      # GET DESCRIPTION
      - name: Extract version from package.json
        uses: sergeysova/jq-action@v2
        id: description
          cmd: 'jq .description version.json -r'
          multiline: true
      - 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: ${{ steps.description.outputs.value }}
  main:
    needs: release
    runs-on: ubuntu-latest
    steps:
      # GET LATEST CODE
      - name: Checkout latest code
        uses: actions/checkout@master
        with:
          ref: main
          fetch-depth: 0

      # BUILD PROJECT AND PUBLISH TO PACKAGES
      - name: Set up JDK 8
        uses: actions/setup-java@v3
      - 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: |
          ./gradlew -Pversion=${{ needs.release.outputs.newtag }} build --info --full-stacktrace -x test

      # 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:  ${{ needs.release.outputs.uploadurl }}
          asset_path: ./build/libs/ServerPackCreatorExampleAddon-${{ needs.release.outputs.newtag }}.jar
          asset_name: ServerPackCreatorExampleAddon-${{ needs.release.outputs.newtag }}.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:  ${{ needs.release.outputs.uploadurl }}
          asset_path: ./build/libs/ServerPackCreatorExampleAddon-${{ needs.release.outputs.newtag }}-sources.jar
          asset_name: ServerPackCreatorExampleAddon-${{ needs.release.outputs.newtag }}-sources.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:  ${{ needs.release.outputs.uploadurl }}
          asset_path: ./build/libs/ServerPackCreatorExampleAddon-${{ needs.release.outputs.newtag }}-javadoc.jar
          asset_name: ServerPackCreatorExampleAddon-${{ needs.release.outputs.newtag }}-javadoc.jar