-
Notifications
You must be signed in to change notification settings - Fork 0
164 lines (144 loc) · 6.53 KB
/
Copy pathpackage-libs.yaml
File metadata and controls
164 lines (144 loc) · 6.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
name: Package Libraries
on:
workflow_dispatch:
inputs:
release_name:
description: 'Release name for manual dispatch'
required: true
# Workflow dependencies, also to avoid concurrent commits
# Ref.: https://github.com/orgs/community/discussions/26238
workflow_run:
workflows: ["Generate Libraries code source"]
types:
- completed
jobs:
package-libs:
runs-on: ubuntu-latest
# PyPi trusted publishing | Ref.: https://github.com/pypa/gh-action-pypi-publish?tab=readme-ov-file#trusted-publishing
permissions:
contents: write # For final commit
packages: write # For package upload
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
# Run if this is a direct workflow_dispatch OR if the Generate Model workflow completed successfully after a release event
if: |
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'release')
steps:
- name: Set RELEASE_VERSION based on the trigger type
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "Workflow triggered via workflow_dispatch"
RELEASE_VERSION="${{ github.event.inputs.release_name }}"
elif [[ "${{ github.event.workflow_run.event }}" == "release" ]]; then
echo "Workflow triggered via Generate Model release"
RELEASE_VERSION="${{ github.event.workflow_run.head_branch }}"
else
echo "Workflow triggered via unsupported event"
exit 1
fi
# Make the RELEASE_VERSION semver compatible (replacing non letter/digit/./+ chars with .)
RELEASE_VERSION=$(echo "$RELEASE_VERSION" | sed 's/[^a-zA-Z0-9\.\+]/./g')
# Display the RELEASE_VERSION for verification
echo "The RELEASE_VERSION is: $RELEASE_VERSION"
# Check if RELEASE_VERSION matches the semver allowed pattern
if [[ ! $RELEASE_VERSION =~ ^[0-9]+\.[0-9]+\.[0-9].* ]]; then
echo "RELEASE_VERSION is NOT semver compatible (1.1.1.xxx)"
exit 1
fi
# Export the RELEASE_VERSION environment variable for future steps (in env.RELEASE_VERSION)
echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v4
- name: Install node env 🏗
uses: actions/setup-node@v4
with:
node-version: 16
# - name: Python - Prepare package files
# working-directory: ./generator_python/
# run: |
# # Add key package files
# cp pyproject.toml ./package/
# cp README.md ./package/
#
# # Generate __init__.py file to import all the *_wrapper classes
# echo "# Auto-generated imports" > ./package/src/hubsante_model/__init__.py
# find ./package/src/hubsante_model -type f -name "*_wrapper.py" | while read -r file; do
# # Extract the relative path from hubsante_model/
# rel_path=${file#*hubsante_model/}
# # Convert path to Python import format
# import_path=${rel_path%.py}
# import_path=${import_path//\//.}
# # Add import line
# echo "from .$import_path import *" >> ./package/src/hubsante_model/__init__.py
# done
#
# - name: Python - Set up
# uses: actions/setup-python@v4
# with:
# python-version: '3.8'
#
# - name: Python - Build package
# working-directory: ./generator_python/package/
# run: |
# pip install --upgrade build
# # Set correct version
# sed -i "s/version = .*/version = \"${{ env.RELEASE_VERSION }}\"/" pyproject.toml
# python -m build
#
# - name: Python - Upload package as artifact
# uses: actions/upload-artifact@v4
# with:
# name: python-package-artifact
# path: ./generator_python/package/dist/
#
# # Leverages trusted publisher | Ref.: https://docs.pypi.org/trusted-publishers/adding-a-publisher/
# - name: Python - Publish package to pypi
# uses: pypa/gh-action-pypi-publish@release/v1
# with:
# packages-dir: ./generator_python/package/dist/
- name: Ruby - Set up
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
bundler-cache: true
- name: Ruby - Build Gem
working-directory: ./generator_ruby/gem/
run: |
GEM_VERSION=${{ env.RELEASE_VERSION }}
export GEM_VERSION=${GEM_VERSION//+/.}
gem build hubsante_model.gemspec
- name: Ruby - Upload Gem as artifact
uses: actions/upload-artifact@v4
with:
name: ruby-gem-artifact
path: ./generator_ruby/gem/hubsante_model-*.gem
- name: Ruby - Push Gem to GitHub Packages
working-directory: ./generator_ruby/gem/
run: gem push --key github --host https://rubygems.pkg.github.com/ansforge ./hubsante_model-*.gem
env:
GEM_HOST_API_KEY: ${{ secrets.GITHUB_TOKEN }} # GitHub token used to authenticate
# - name: C# - Prepare package files
# working-directory: ./generator_csharp/
# run: |
# # Add key package files
# cp HubsanteModel.csproj ./package/src/
# cp README.md ./package/
# - name: C# - Set up .NET
# uses: actions/setup-dotnet@v3
# with:
# dotnet-version: '6.0.x'
# - name: C# - Build package
# working-directory: ./generator_csharp/package/src/
# run: |
# dotnet restore
# dotnet build --configuration Release
# dotnet pack --configuration Release -p:Version=${{ env.RELEASE_VERSION }}
# - name: C# - Upload package as artifact
# uses: actions/upload-artifact@v4
# with:
# name: csharp-package-artifact
# path: ./generator_csharp/package/src/bin/Release/*.nupkg
# - name: C# - Push package to GitHub Packages
# working-directory: ./generator_csharp/package/src/
# run: |
# dotnet nuget push bin/Release/*.nupkg --source https://nuget.pkg.github.com/ansforge/index.json --api-key ${{ secrets.GITHUB_TOKEN }}