-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add steps to push package to container registry
- Loading branch information
1 parent
74ce839
commit 244cae4
Showing
1 changed file
with
106 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,6 +11,12 @@ on: | |
# Allows you to run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
|
||
env: | ||
POETRY_VERSION: "1.3.2" | ||
PYTHON_VERSION: "3.10" | ||
REGISTRY: ghcr.io | ||
IMAGE_NAME: ${{ github.repository }} | ||
|
||
jobs: | ||
run_tests: | ||
uses: ./.github/workflows/run_tests.yml | ||
|
@@ -24,64 +30,118 @@ jobs: | |
|
||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.10' | ||
python-version: ${{ env.PYTHON_VERSION }} | ||
|
||
- name: Install Poetry | ||
uses: abatilo/[email protected] | ||
with: | ||
poetry-version: 1.3.2 | ||
poetry-version: ${{ env.POETRY_VERSION }} | ||
|
||
- name: Get version | ||
id: get-version | ||
run: | | ||
echo "current_version=$(poetry version | awk '{print $2}')" >> $GITHUB_OUTPUT | ||
echo "pyproject_name=$(poetry version | awk '{print $1}')" >> $GITHUB_ENV | ||
# - name: Bump pre-alpha version | ||
# # If triggered by push to a feature branch | ||
# if: | | ||
# ${{ startsWith(github.ref, 'refs/heads/issue') }} || | ||
# ${{ startsWith(github.ref, 'refs/heads/dependabot/') }} || | ||
# ${{ startsWith(github.ref, 'refs/heads/feature/') }} | ||
# run: | | ||
# new_ver="${{ steps.get-version.outputs.current_version }}+$(git rev-parse --short ${GITHUB_SHA})" | ||
# poetry version $new_ver | ||
# echo "software_version=$(poetry version | awk '{print $2}')" >> $GITHUB_ENV | ||
# | ||
# - name: Bump alpha version | ||
# # If triggered by push to the develop branch | ||
# if: ${{ github.ref == 'refs/heads/develop' }} | ||
# run: | | ||
# poetry version prerelease | ||
# echo "software_version=$(poetry version | awk '{print $2}')" >> $GITHUB_ENV | ||
# echo "venue=sit" >> $GITHUB_ENV | ||
# | ||
# - name: Bump rc version | ||
# # If triggered by push to a release branch | ||
# if: ${{ startsWith(github.ref, 'refs/heads/release/') }} | ||
# env: | ||
# # True if the version already has a 'rc' pre-release identifier | ||
# BUMP_RC: ${{ contains(steps.get-version.outputs.current_version, 'rc') }} | ||
# run: | | ||
# if [ "$BUMP_RC" = true ]; then | ||
# poetry version prerelease | ||
# else | ||
# poetry version ${GITHUB_REF#refs/heads/release/}rc1 | ||
# fi | ||
# echo "software_version=$(poetry version | awk '{print $2}')" >> $GITHUB_ENV | ||
# echo "venue=uat" >> $GITHUB_ENV | ||
# | ||
# - name: Release version | ||
# # If triggered by push to the main branch | ||
# if: ${{ startsWith(github.ref, 'refs/heads/main') }} | ||
# env: | ||
# CURRENT_VERSION: ${{ steps.get-version.outputs.current_version }} | ||
# # Remove rc* from the end of version string | ||
# # The ${string%%substring} syntax below deletes the longest match of $substring from back of $string. | ||
- name: Bump pre-alpha version | ||
# If triggered by push to a feature branch | ||
if: | | ||
${{ startsWith(github.ref, 'refs/heads/issue') }} || | ||
${{ startsWith(github.ref, 'refs/heads/dependabot/') }} || | ||
${{ startsWith(github.ref, 'refs/heads/feature/') }} | ||
run: | | ||
new_ver="${{ steps.get-version.outputs.current_version }}+$(git rev-parse --short ${GITHUB_SHA})" | ||
poetry version $new_ver | ||
echo "software_version=$(poetry version | awk '{print $2}')" >> $GITHUB_ENV | ||
- name: Bump alpha version | ||
# If triggered by push to the develop branch | ||
if: ${{ github.ref == 'refs/heads/develop' }} | ||
run: | | ||
poetry version prerelease | ||
echo "software_version=$(poetry version | awk '{print $2}')" >> $GITHUB_ENV | ||
echo "venue=sit" >> $GITHUB_ENV | ||
- name: Bump rc version | ||
# If triggered by push to a release branch | ||
if: ${{ startsWith(github.ref, 'refs/heads/release/') }} | ||
env: | ||
# True if the version already has a 'rc' pre-release identifier | ||
BUMP_RC: ${{ contains(steps.get-version.outputs.current_version, 'rc') }} | ||
run: | | ||
if [ "$BUMP_RC" = true ]; then | ||
poetry version prerelease | ||
else | ||
poetry version ${GITHUB_REF#refs/heads/release/}rc1 | ||
fi | ||
echo "software_version=$(poetry version | awk '{print $2}')" >> $GITHUB_ENV | ||
echo "venue=uat" >> $GITHUB_ENV | ||
- name: Release version | ||
# If triggered by push to the main branch | ||
if: ${{ startsWith(github.ref, 'refs/heads/main') }} | ||
env: | ||
CURRENT_VERSION: ${{ steps.get-version.outputs.current_version }} | ||
# True if the version already has a 'rc' pre-release identifier | ||
BUMP_RC: ${{ contains(steps.get-version.outputs.current_version, 'rc') }} | ||
# True if the version already has an 'alpha' pre-release identifier | ||
BUMP_A: ${{ contains(steps.get-version.outputs.current_version, 'a') }} | ||
# True if the version already has a 'beta' pre-release identifier | ||
BUMP_B: ${{ contains(steps.get-version.outputs.current_version, 'b') }} | ||
# Remove rc* from the end of version string | ||
# The ${string%%substring} syntax below deletes the longest match of $substring from back of $string. | ||
run: | | ||
if [ "$BUMP_RC" = true ]; then | ||
poetry version ${CURRENT_VERSION%%rc*} | ||
elif [ "$BUMP_B" = true ]; then | ||
poetry version ${CURRENT_VERSION%%b*} | ||
elif [ "$BUMP_A" = true ]; then | ||
poetry version ${CURRENT_VERSION%%a*} | ||
fi | ||
echo "software_version=$(poetry version | awk '{print $2}')" >> $GITHUB_ENV | ||
echo "venue=ops" >> $GITHUB_ENV | ||
- name: Log in to the Container registry | ||
# TODO: change this and subsequent docker steps back to NOT (as follows), after testing in the feature branch --- if: ${{ !startsWith(github.ref, 'refs/heads/feature') }} | ||
if: ${{ startsWith(github.ref, 'refs/heads/feature/') }} | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: ${{ env.REGISTRY }} | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Extract metadata (tags, labels) for Docker | ||
# if: ${{ !startsWith(github.ref, 'refs/heads/feature') }} | ||
if: ${{ startsWith(github.ref, 'refs/heads/feature/') }} | ||
id: meta | ||
uses: docker/metadata-action@v5 | ||
with: | ||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | ||
tags: | | ||
type=raw,pattern={{version}},value=${{ env.software_version }} | ||
type=raw,value=${{ env.venue }} | ||
# - name: Wait for package | ||
## if: ${{ !startsWith(github.ref, 'refs/heads/feature') }} | ||
# if: ${{ startsWith(github.ref, 'refs/heads/feature/') }} | ||
# run: | | ||
# poetry version ${CURRENT_VERSION%%rc*} | ||
# echo "software_version=$(poetry version | awk '{print $2}')" >> $GITHUB_ENV | ||
# echo "venue=ops" >> $GITHUB_ENV | ||
# pip install tenacity | ||
# ${GITHUB_WORKSPACE}/.github/workflows/wait-for-pypi.py ${{env.pyproject_name}}[harmony]==${{ env.software_version }} | ||
|
||
- name: Build and push Docker image | ||
# if: ${{ !startsWith(github.ref, 'refs/heads/feature') }} | ||
if: ${{ startsWith(github.ref, 'refs/heads/feature/') }} | ||
id: docker-push | ||
uses: docker/build-push-action@v3 | ||
with: | ||
context: . | ||
file: Dockerfile | ||
build-args: | | ||
SOURCE=${{env.pyproject_name}}[harmony]==${{ env.software_version }} | ||
push: true | ||
pull: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
# | ||
# - name: Commit Version Bump | ||
# # If building develop, a release branch, or main then we commit the version bump back to the repo | ||
|