1name: Release 2permissions: read-all 3 4on: 5 # For manual tests. 6 workflow_dispatch: 7 release: 8 types: [published] 9 10jobs: 11 publish-npm: 12 name: Publish NPM 13 runs-on: ubuntu-latest 14 steps: 15 - uses: actions/checkout@v3 16 - uses: actions/setup-node@v3 17 with: 18 node-version: '20.x' 19 registry-url: 'https://registry.npmjs.org' 20 21 - run: npm publish 22 env: 23 NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 24 25 publish-pypi: 26 name: Publish PyPi 27 runs-on: ubuntu-latest 28 defaults: 29 run: 30 working-directory: ./python 31 steps: 32 - uses: actions/checkout@v3 33 - uses: actions/setup-python@v4 34 with: 35 python-version: '3.10' 36 37 - name: Install Dependencies 38 run: | 39 python3 -m pip install --upgrade pip 40 python3 -m pip install setuptools wheel twine 41 42 - name: Build 43 run: | 44 python3 setup.py sdist bdist_wheel 45 46 - name: Upload to PyPi 47 run: | 48 python3 -m twine upload dist/* 49 env: 50 TWINE_USERNAME: __token__ 51 TWINE_PASSWORD: ${{ secrets.TWINE_TOKEN }} 52 53 publish-nuget: 54 name: Publish NuGet 55 runs-on: windows-latest 56 defaults: 57 run: 58 working-directory: ./net/flatbuffers 59 steps: 60 - uses: actions/checkout@v3 61 - uses: actions/setup-dotnet@v3 62 with: 63 dotnet-version: '8.0.x' 64 - name: Build 65 run: | 66 dotnet build Google.FlatBuffers.csproj -c Release 67 68 - name: Pack 69 run: | 70 dotnet pack Google.FlatBuffers.csproj -c Release 71 72 - name: Upload to NuGet 73 run: | 74 dotnet nuget push .\bin\Release\Google.FlatBuffers.*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json 75 76 publish-maven: 77 name: Publish Maven 78 runs-on: ubuntu-latest 79 defaults: 80 run: 81 working-directory: ./java 82 steps: 83 - uses: actions/checkout@v3 84 85 - name: Set up Maven Central Repository 86 uses: actions/setup-java@v3 87 with: 88 java-version: '11' 89 distribution: 'adopt' 90 cache: 'maven' 91 server-id: ossrh 92 server-username: OSSRH_USERNAME 93 server-password: OSSRH_PASSWORD 94 gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} 95 gpg-passphrase: MAVEN_GPG_PASSPHRASE # this needs to be an env var 96 97 - name: Publish Maven 98 run: mvn --batch-mode clean deploy 99 env: 100 OSSRH_USERNAME: ${{ secrets.OSSRH_USER_V2 }} 101 OSSRH_PASSWORD: ${{ secrets.OSSRH_TOKEN_V2 }} 102 MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} 103 104 publish-maven-kotlin: 105 name: Publish Maven - Kotlin 106 runs-on: ubuntu-latest 107 defaults: 108 run: 109 working-directory: ./kotlin 110 steps: 111 - uses: actions/checkout@v3 112 - name: Set up Maven Central Repository 113 uses: actions/setup-java@v3 114 with: 115 java-version: '11' 116 distribution: 'adopt' 117 cache: 'maven' 118 server-id: ossrh 119 server-username: OSSRH_USERNAME 120 server-password: OSSRH_PASSWORD 121 gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} 122 gpg-passphrase: MAVEN_GPG_PASSPHRASE # this needs to be an env var 123 124 - name: Publish Kotlin Library on Maven 125 run: ./gradlew publishAllPublicationsToSonatypeRepository 126 env: 127 OSSRH_USERNAME: ${{ secrets.OSSRH_USER_V2 }} 128 OSSRH_PASSWORD: ${{ secrets.OSSRH_TOKEN_V2 }} 129 MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} 130 131 132 publish-crates: 133 name: Publish crates.io 134 runs-on: ubuntu-latest 135 steps: 136 - uses: actions/checkout@v3 137 - uses: actions-rs/toolchain@v1 138 with: 139 toolchain: stable 140 override: true 141 142 - name: Publish Flatbuffers 143 uses: katyo/publish-crates@v2 144 with: 145 path: ./rust/flatbuffers 146 registry-token: ${{ secrets.CARGO_TOKEN }} 147 148 - name: Publish Flexbuffers 149 uses: katyo/publish-crates@v2 150 with: 151 path: ./rust/flexbuffers 152 registry-token: ${{ secrets.CARGO_TOKEN }} 153