2024-06-15 03:10:24 -04:00

268 lines
8.7 KiB
YAML

#name: build-image
#on:
# push:
# branches: [main]
#
#jobs:
# build-image:
# runs-on: [ubuntu-latest]
# env:
# DOTNET_INSTALL_DIR: "/home/runner"
# permissions:
# contents: write
# packages: write
# steps:
# - name: 'Cleanup build folder'
# run: |
# rm ./* -r || true
# rm ./.??* -r || true
#
# - uses: actions/setup-dotnet@v3
# with:
# dotnet-version: 8.0.x
#
# - name: Set up GitVersion
# uses: gittools/actions/gitversion/setup@v0.9.15
# with:
# versionSpec: '5.x'
#
# - name: Checkout code
# uses: actions/checkout@v3
# with:
# fetch-depth: 0
#
# - name: Execute GitVersion
# uses: gittools/actions/gitversion/execute@v0.9.15
# with:
# useConfigFile: true
# configFilePath: GitVersion.yml
#
# - name: login into registry
# run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login https://ghcr.io -u $ --password-stdin
#
# - name: Build image
# env:
# dockerfile: ./src/comissions.app.api/Dockerfile
# docker_image_name: ghcr.io/comissions-app/core-api
# run: |
# docker build --build-arg NUGET_SOURCE=https://nuget.pkg.github.com/data443/index.json --build-arg NUGET_API_KEY=${{ secrets.PACKAGE_TOKEN }} -t ${{ env.docker_image_name }}:${{ env.GitVersion_MajorMinorPatch }} -f ${{ env.dockerfile }} --force-rm .
# docker tag ${{ env.docker_image_name }}:${{ env.GitVersion_MajorMinorPatch }} ${{ env.docker_image_name }}:latest
# docker push --all-tags ${{ env.docker_image_name }}
#
# - name: Tag branch
# run: |
# git tag ${{ env.GitVersion_MajorMinorPatch }}
# git push origin ${{ env.GitVersion_MajorMinorPatch }}
name: on-push
on:
push:
branches:
- 'main'
jobs:
gitversion:
runs-on: ubuntu-latest
outputs:
semantic_version: ${{ steps.result.outputs.semver }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: gittools/actions/gitversion/setup@v1.1.1
with:
versionSpec: '5.x'
- uses: gittools/actions/gitversion/execute@v1.1.1
with:
useConfigFile: true
configFilePath: GitVersion.yml
- name: set output
id: result
run: echo "semver=$GitVersion_SemVer" >> "$GITHUB_OUTPUT"
- name: Tag branch
run: |
git tag $GitVersion_SemVer
git push origin $GitVersion_SemVer
build-cs-sdk:
runs-on: ubuntu-latest
needs: gitversion
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
- name: Set Version
id: update
uses: vers-one/dotnet-project-version-updater@v1.6
with:
file: "src/comissions.app.sdk/comissions.app.sdk.csproj"
version: ${{ needs.gitversion.outputs.semantic_version }}
- name: Authorize NuGet Source
uses: StirlingLabs/GithubNugetAuthAction@main
with:
owner: data443
name: Data443
token: ${{secrets.DATA443_PACKAGE_SECRET}}
- name: Build SDK
run: dotnet build ./src/comissions.app.sdk/comissions.app.sdk.csproj --configuration Release -p:Version=${{needs.gitversion.outputs.semantic_version}}
- name: Push SDK
run: dotnet nuget push src/comissions.app.sdk/bin/Release/**/*.nupkg --skip-duplicate -s "https://nuget.pkg.github.com/data443/index.json" --api-key ${{secrets.GITHUB_TOKEN}}
build-js-sdk-build:
runs-on: ubuntu-latest
needs: gitversion
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
- name: Generate Swagger JSON
run: dotnet build ./src/comissions.app.api/comissions.app.api.csproj --configuration Release
- name: Generate code
uses: hatamiarash7/openapi-generator@v0.2.0
with:
generator: javascript
openapi-file: src/comissions.app.sdk/swagger.json
output-dir: ./javascript-client/
- uses: actions/setup-node@v4
with:
node-version: 18
registry-url: 'https://npm.pkg.github.com'
node-auth-token: ${{ secrets.GITHUB_TOKEN }}
- name: "Install Babel"
run: npm install @babel/core @babel/cli @babel/preset-env @babel/plugin-proposal-class-properties @babel/plugin-proposal-json-strings @babel/plugin-proposal-decorators @babel/plugin-proposal-function-sent
- name: Install dependencies
run: |
cd javascript-client
npm install
- name: Update dependencies
run: |
cd javascript-client
npm update
- name: Run Tests
run: |
cd javascript-client
npm test
- name: Update my-file.json description
uses: jossef/action-set-json-field@v2.1
with:
file: javascript-client/package.json
field: name
value: "@D4M13N-D3V/comissions.app.sdk"
- name: 'Change vVersion'
uses: reedyuk/npm-version@1.1.1
with:
version: '${{needs.gitversion.outputs.semantic_version}}'
package: 'javascript-client/'
git-tag-version: 'false'
- uses: JS-DevTools/npm-publish@v3
with:
package : javascript-client/
token: ${{ secrets.GITHUB_TOKEN }}
registry: "https://npm.pkg.github.com"
- name: Create Release
id: create_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: actions/create-release@v1
with:
tag_name: v${{ needs.gitversion.outputs.semantic_version }}
release_name: SDK
draft: false
prerelease: false
body: Release of SDK version ${{ needs.gitversion.outputs.semantic_version }}
- name: Zip JavaScript client folder
run: zip -r dim.api.sdk.zip javascript-client
- name: Upload Assets
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./dim.api.sdk.zip
asset_name: documentation_and_source_code.zip
asset_content_type: application/zip
- name: Delete unnecessary files in javascript-client folder
run: |
find javascript-client -type f ! -name "*.md" -delete
- name: Rename .md files to .html
run: |
find javascript-client -type f -name "*.md" -exec bash -c 'mv "$0" "${0%.md}.html"' {} \;
- name: Add script tag to HTML files
run: |
find javascript-client -type f -name "*.html" -exec sed -i '1i<script src="https://rawcdn.githack.com/oscarmorrison/md-page/master/md-page.js"></script><noscript>' {} \;
- name: Rename readme.html to index.html
run: |
mv javascript-client/README.html javascript-client/index.html
- name: Replace .md with .html in index.html
run: |
sed -i 's/\.md/\.html/g' javascript-client/index.html
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: javascript-client
publish_branch: gh-pages
enable_jekyll: false
enable_html: true
ext: md
build-image:
runs-on: ubuntu-latest
needs: gitversion
strategy:
matrix:
platform: [amd64, arm64]
steps:
- name: 'Cleanup build folder'
run: |
rm ./* -r || true
rm ./.??* -r || true
- name: login into registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login https://ghcr.io -u $ --password-stdin
- name: Build image
env:
dockerfile: ./src/comissions.app.api/Dockerfile
docker_image_name: ghcr.io/comissions-app/comissions-api-${{ matrix.platform }}
run: |
docker build --build-arg NUGET_SOURCE=https://nuget.pkg.github.com/data443/index.json --build-arg NUGET_API_KEY=${{ secrets.PACKAGE_TOKEN }} --platform linux/${{ matrix.platform }} -t ${{ env.docker_image_name }}:${{ env.GitVersion_MajorMinorPatch }} -f ${{ env.dockerfile }} --force-rm .
docker tag ${{ env.docker_image_name }}:${{ needs.gitversion.outputs.semantic_version }} ${{ env.docker_image_name }}:latest
docker push --all-tags ${{ env.docker_image_name }}
- name: Tag branch
run: |
git tag ${{ needs.gitversion.outputs.semantic_version }}
git push origin ${{ needs.gitversion.outputs.semantic_version }}