name: release on: push: tags: - v*.*.* - '!v*.*.*-**' env: PROVIDER: "YOUR PROVIDER NAME HERE eg: xyz" # 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 - python - dotnet - go nodeversion: - 14.x pythonversion: - "3.9"