diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index b02b5204..ad73ade4 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -7,120 +7,14 @@ on: - '*' env: - # Used to parameterize these build scripts between LancachePrefill projects PROJECT_NAME: BattleNetPrefill + DOCKERHUB_NAME: battlenet-lancache-prefill permissions: contents: write # Required to create a release jobs: - # Needed in order to prevent softprops/action-gh-release from creating duplicate releases for each publish target. - # The duplicate releases happen because of a race condition, where each parallel publish job thinks the release has not yet been created. - create-placeholder-release: - runs-on: ubuntu-latest - container: mcr.microsoft.com/dotnet/sdk:8.0 - steps: - - uses: actions/checkout@v3 - with: - submodules: true - # Gets the executable version that will be used later in the uploaded zip file name - - name: Set Version - id: vars - run: | - version=$(grep -Po '(?<=)(.*?)(?=)' $PROJECT_NAME/$PROJECT_NAME.csproj); - echo "version=$version" >> $GITHUB_OUTPUT; - - name: Create Release - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') - with: - draft: true - name: "v${{ steps.vars.outputs.version }}" - files: "**/*.zip" - generate_release_notes: true - - dotnet-publish: - runs-on: ubuntu-latest - container: mcr.microsoft.com/dotnet/sdk:8.0 - needs: create-placeholder-release - strategy: - matrix: - runtime: ['win-x64', 'linux-x64', 'linux-arm64', 'osx-x64'] - fail-fast: false - steps: - - uses: actions/checkout@v3 - with: - submodules: true - # Gets the executable version that will be used later in the uploaded zip file name - - name: Set Version - id: vars - run: | - version=$(grep -Po '(?<=)(.*?)(?=)' $PROJECT_NAME/$PROJECT_NAME.csproj); - echo "version=$version" >> $GITHUB_OUTPUT; - - run: apt-get update - - run: apt-get install zip -y - - name: Publish - run: > - version=${{ steps.vars.outputs.version }} - - dotnet publish $PROJECT_NAME/$PROJECT_NAME.csproj \ - --nologo \ - -o "publish/$PROJECT_NAME-$version-${{ matrix.runtime }}" \ - -c Release \ - --runtime "${{ matrix.runtime }}" \ - --self-contained true; - - cd publish; - - zip -r $PROJECT_NAME-$version-${{ matrix.runtime }}.zip $PROJECT_NAME-$version-${{ matrix.runtime }}; - cp $PROJECT_NAME-$version-${{ matrix.runtime }}.zip ../; - rm $PROJECT_NAME-$version-${{ matrix.runtime }}.zip; - cd ..; - - name: Upload - uses: actions/upload-artifact@v3 - with: - name: BattleNetPrefill-${{ steps.vars.outputs.version }}-${{ matrix.runtime }} - path: publish/ - if-no-files-found: error - - name: Create Release - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') - with: - draft: true - name: "v${{ steps.vars.outputs.version }}" - files: "**/*.zip" - generate_release_notes: true - docker-publish-x64: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - submodules: true - - name: Setup .NET - uses: actions/setup-dotnet@v2 - with: - dotnet-version: 8.0.x - - name: Publish - run: > - dotnet publish $PROJECT_NAME/$PROJECT_NAME.csproj \ - --nologo \ - -o publish \ - -c Release \ - --runtime "linux-x64" \ - --self-contained true; - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Extract metadata for Docker - id: meta - uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 - with: - images: tpill90/battlenet-lancache-prefill - - name: Build and push Docker image - uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc - with: - context: . - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file + build-test: + uses: tpill90/lancache-prefill-common/.github/workflows/release-publish-template.yml@main + with: + PROJECT_NAME: BattleNetPrefill \ No newline at end of file