Skip to content

Source connector for ERCOT System Level Data (#583) #285

Source connector for ERCOT System Level Data (#583)

Source connector for ERCOT System Level Data (#583) #285

Workflow file for this run

# Copyright 2022 RTDIP
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: 'Develop'
on:
# Trigger the workflow on push to develop
push:
branches:
- develop
jobs:
job_run_unit_tests_previous_versions:
uses: rtdip/core/.github/workflows/test.yml@develop
job_run_unit_tests_and_sonarqube:
uses: rtdip/core/.github/workflows/sonarcloud_reusable.yml@develop
with:
REPO_NAME: ""
HEAD_BRANCH: ""
HEAD_SHA: ""
PR_NUMBER: ""
PR_HEAD_REF: ""
PR_BASE_REF: ""
secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
job_build_python_package_and_docker_container:
runs-on: ubuntu-latest
needs: [job_run_unit_tests_and_sonarqube, job_run_unit_tests_previous_versions]
permissions:
packages: write
contents: read
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v3
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install twine
pip install build
pip install requests
pip install semver==3.0.0
- name: Determine Next Test PyPI Version
id: next_ver
run: |
import requests
import semver
import os
from packaging.version import Version as PyPIVersion
def get_semver_version(pypi_url: str, package: str, include_prereleases=False) -> semver.Version:
response = requests.get(f'{pypi_url}/pypi/{package}/json')
if response.status_code != 200:
pypi_latest_version = "0.0.0"
else:
if include_prereleases == True:
pypi_latest_version = list(response.json()["releases"].keys())[-1]
else:
pypi_latest_version = response.json()['info']['version']
pypi_ver = PyPIVersion(pypi_latest_version)
pre=None
if pypi_ver.is_prerelease:
pre = "".join(str(i) for i in pypi_ver.pre)
pypi_ver = semver.Version(*pypi_ver.release, pre)
return pypi_ver
package = 'rtdip-sdk'
pypi_ver = get_semver_version("https://pypi.org", package)
print("Current PyPi version: " + str(pypi_ver))
next_ver = pypi_ver.bump_patch()
test_pypi_ver = get_semver_version("https://test.pypi.org", package)
print("Current TestPyPi version: " + str(test_pypi_ver))
if next_ver == "0.0.1":
next_ver = test_pypi_ver
elif test_pypi_ver.major == next_ver.major and test_pypi_ver.minor == next_ver.minor and test_pypi_ver.patch == next_ver.patch and test_pypi_ver.prerelease != None:
next_ver = next_ver.replace(prerelease=test_pypi_ver.prerelease)
next_ver = next_ver.bump_prerelease()
print("Next version: " + str(next_ver))
print(f'::set-output name=rtdip_sdk_next_ver::{str(next_ver)}')
shell: python
- name: Build Wheel
run: |
python -m build
env:
RTDIP_SDK_NEXT_VER: ${{ steps.next_ver.outputs.rtdip_sdk_next_ver }}
- name: Upload Python wheel as artifact
uses: actions/upload-artifact@v2
with:
name: rtdip_sdk_whl
path: ./dist/*.whl
- name: Publish distribution 📦 to Test PyPI
run: |
twine upload --repository testpypi --username __token__ --password ${{ secrets.TEST_PYPI_API_TOKEN }} --verbose dist/*
# Deploy to Docker Hub
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
with:
images: |
rtdip/prerelease
tags: |
type=semver,pattern={{version}},prefix=api-azure-,value=${{ steps.next_ver.outputs.rtdip_sdk_next_ver }}
- name: Build and push Docker images
uses: docker/build-push-action@v3
with:
context: .
file: ./src/api/Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}