From cdbe617336b30323ba45961a02e21523b88436db Mon Sep 17 00:00:00 2001 From: Dominik Przybyl Date: Wed, 28 Feb 2024 23:56:40 +0100 Subject: [PATCH] added release.yaml --- .github/workflows/release.yaml | 141 +++++++++++++++++++++++++++++++++ .goreleaser.yml | 29 +++++++ 2 files changed, 170 insertions(+) create mode 100644 .github/workflows/release.yaml create mode 100644 .goreleaser.yml diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..78f8026 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,141 @@ +name: release +on: + push: + tags: + - v*.*.* + - '!v*.*.*-**' +env: + PROVIDER: "aem" + # THIS GITHUB_TOKEN IS A REQUIREMENT TO BE ABLE TO WRITE TO GH RELEASES + GITHUB_TOKEN: ${{ YOUR GITHUB TOKEN HERE }} + # IF YOU NEED TO PUBLISH A NPM PACKAGE THEN ENSURE A NPM_TOKEN SECRET IS SET + # AND PUBLISH_NPM: TRUE. IF YOU WANT TO PUBLISH TO A PRIVATE NPM REGISTRY + # THEN ENSURE THE NPM_REGISTRY_URL IS CHANGED + NODE_AUTH_TOKEN: ${{ YOUR NPM TOKEN HERE }} + NPM_TOKEN: ${{ YOUR NPM TOKEN HERE }} + PUBLISH_NPM: true + NPM_REGISTRY_URL: https://registry.npmjs.org + # IF YOU NEED TO PUBLISH A NUGET PACKAGE THEN ENSURE AN NUGET_PUBLISH_KEY + # SECRET IS SET AND PUBLISH_NUGET: TRUE. IF YOU WANT TO PUBLISH TO AN ALTERNATIVE + # NPM REGISTRY THEN ENSURE THE NPM_REGISTRY_URL IS CHANGED + NUGET_PUBLISH_KEY: ${{ YOUR NUGET PUBLISH KEY HERE }} + NUGET_FEED_URL: https://api.nuget.org/v3/index.json + PUBLISH_NUGET: true + # IF YOU NEED TO PUBLISH A PYPI PACKAGE THEN ENSURE AN PYPI_API_TOKEN + # SECRET IS SET AND PUBLISH_PYPI: TRUE. IF YOU WANT TO PUBLISH TO AN ALTERNATIVE + # PYPI REGISTRY THEN ENSURE THE PYPI_REPOSITORY_URL IS SET. IF YOU ARE USING AN API_TOKEN THEN + # YOU DO NOT NEED TO CHANGE THE PYPI_USERNAME (__token__) , IF YOU ARE USING PASSWORD AUTHENTICATION THEN YOU WILL + # NEED TO CHANGE TO USE THE CORRECT PASSWORD + PYPI_PASSWORD: ${{ YOUR PYPI PASSWORD HERE }} + PYPI_USERNAME: "YOUR PYPI USERNAME HERE" + PYPI_REPOSITORY_URL: "" + PUBLISH_PYPI: true +jobs: + publish_binary: + name: publish + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + - name: Unshallow clone for tags + run: git fetch --prune --unshallow --tags + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: ${{matrix.goversion}} + - name: Install pulumictl + uses: jaxxstorm/action-install-gh-release@v1.5.0 + with: + repo: pulumi/pulumictl + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + args: -p 3 release --rm-dist + version: latest + strategy: + fail-fast: true + matrix: + goversion: + - 1.17.x + publish_sdk: + name: Publish SDKs + runs-on: ubuntu-latest + needs: publish_binary + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + - name: Unshallow clone for tags + run: git fetch --prune --unshallow --tags + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.goversion }} + - name: Install pulumictl + uses: jaxxstorm/action-install-gh-release@v1.5.0 + with: + repo: pulumi/pulumictl + - name: Install Pulumi CLI + uses: pulumi/action-install-pulumi-cli@v2.0.0 + - name: Setup Node + uses: actions/setup-node@v1 + with: + node-version: ${{matrix.nodeversion}} + registry-url: ${{env.NPM_REGISTRY_URL}} + - name: Setup DotNet + uses: actions/setup-dotnet@v1 + with: + dotnet-version: ${{matrix.dotnetversion}} + - name: Setup Python + uses: actions/setup-python@v1 + with: + python-version: ${{matrix.pythonversion}} + - name: Generate SDK + run: make ${{ matrix.language }}_sdk + - name: Check worktree clean + run: | + git update-index -q --refresh + if ! git diff-files --quiet; then + >&2 echo "error: working tree is not clean, aborting!" + git status + git diff + exit 1 + fi + - name: Compress SDK folder + run: tar -zcf sdk/${{ matrix.language }}.tar.gz -C sdk/${{ matrix.language }} . + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.language }}-sdk.tar.gz + path: ${{ github.workspace}}/sdk/${{ matrix.language }}.tar.gz + - if: ${{ matrix.language == 'python' && env.PUBLISH_PYPI == 'true' }} + name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: ${{ env.PYPI_USERNAME }} + password: ${{ env.PYPI_PASSWORD }} + packages-dir: ${{github.workspace}}/sdk/python/bin/dist + - if: ${{ matrix.language == 'nodejs' && env.PUBLISH_NPM == 'true' }} + uses: JS-DevTools/npm-publish@v1 + with: + access: "public" + token: ${{ env.NPM_TOKEN }} + package: ${{github.workspace}}/sdk/nodejs/bin/package.json + - if: ${{ matrix.language == 'dotnet' && env.PUBLISH_NUGET == 'true' }} + name: publish nuget package + run: | + dotnet nuget push ${{github.workspace}}/sdk/dotnet/bin/Debug/*.nupkg -s ${{ env.NUGET_FEED_URL }} -k ${{ env.NUGET_PUBLISH_KEY }} + echo "done publishing packages" + strategy: + fail-fast: true + matrix: + dotnetversion: + - 3.1.301 + goversion: + - 1.18.x + language: + - nodejs + - go + nodeversion: + - 14.x + pythonversion: + - "3.9" diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..090cde5 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,29 @@ +archives: + - id: archive + name_template: '{{ .Binary }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}' +before: + hooks: + - make gen +builds: + - binary: pulumi-resource-aem + dir: provider + env: + - CGO_ENABLED=0 + goarch: + - amd64 + - arm64 + goos: + - darwin + - windows + - linux + ldflags: + # The line below MUST align with the module in current provider/go.mod + - -X github.com/wttech/pulumi-aem-native/provider/Version={{.Tag }} + main: ./cmd/pulumi-resource-aem/ +changelog: + skip: true +release: + disable: false + prerelease: auto +snapshot: + name_template: '{{ .Tag }}-SNAPSHOT'