• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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