Skip to content

Commit

Permalink
Publish to ghcr
Browse files Browse the repository at this point in the history
  • Loading branch information
willdavsmith committed Oct 16, 2023
1 parent 9d6a71e commit 3ed7453
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 49 deletions.
23 changes: 12 additions & 11 deletions .github/scripts/delete-recipes.sh
Original file line number Diff line number Diff line change
@@ -1,37 +1,38 @@
#! /bin/bash

# Fail immedietly if any command fails
# Fail immediately if any command fails
set -e

# Get command line arguments
ACR_HOST=$1
GHCR_ORG=$1
RECIPE_VERSION=$2

# Print usage information
function print_usage() {
echo "Usage: $0 <ACR_HOST> <RECIPE_VERSION>"
echo " Deletes all recipes in the repository from the Azure Container Registry. Requires you to be logged into Azure via az login."
echo " ACR_HOST: Host name of the Azure Container Registry. For example, myregistry.azurecr.io."
echo "Usage: $0 <GHCR_ORG> <RECIPE_VERSION>"
echo " Deletes all recipes in the repository from the GitHub Container Registry. Requires you to be logged into GitHub."
echo " GHCR_ORG: Organization name of the GitHub Container Registry. For example, radius-project"
echo " RECIPE_VERSION: Version of the recipe to publish. For example, 1.0"
}

# Verify that the required arguments are present
if [ -z "$ACR_HOST" ] || [ -z "$RECIPE_VERSION" ]; then
if [ -z "$GHCR_ORG" ] || [ -z "$RECIPE_VERSION" ]; then
echo "Missing required arguments"
print_usage
exit 1
fi

# Login to Azure Container Registry
az acr login --name $ACR_HOST

for RECIPE in $(find . -type f -name "*.bicep")
do
# Get the recipe name and directory name
# ./azure/redis-azure.bicep -> redis-azure and azure, respectively
export FILE_NAME=$(basename $RECIPE | cut -d. -f1)
export DIR_NAME=$(dirname $RECIPE | cut -d/ -f2)

echo "Deleting $ACR_HOST/recipes/$DIR_NAME/$FILE_NAME:1.0"
az acr repository delete --name $ACR_HOST --image "recipes/$DIR_NAME/$FILE_NAME:$RECIPE_VERSION" --yes
echo "Deleting ghcr.io/$GHCR_ORG/recipes/$DIR_NAME/$FILE_NAME:$RECIPE_VERSION"
gh api \
--method DELETE \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/orgs/$GHCR_ORG/packages/container/recipes/$DIR_NAME/$FILE_NAME:$RECIPE_VERSION
done
20 changes: 10 additions & 10 deletions .github/scripts/publish-recipes.sh
Original file line number Diff line number Diff line change
@@ -1,39 +1,39 @@
#! /bin/bash

# Fail immedietly if any command fails
# Fail immediately if any command fails
set -e

# Get command line arguments
BICEP_PATH=$1
ACR_HOST=$2
GHCR_ORG=$2
RECIPE_VERSION=$3

BICEP_EXECUTABLE="$BICEP_PATH/rad-bicep"

# Print usage information
function print_usage() {
echo "Usage: $0 <BICEP_PATH> <ACR_HOST> <RECIPE_VERSION>"
echo " Publishes all recipes in the repository to the Azure Container Registry. Requires you to be logged into Azure via az login."
echo "Usage: $0 <BICEP_PATH> <GHCR_ORG> <RECIPE_VERSION>"
echo " Publishes all recipes in the repository to the Azure Container Registry. Requires you to be logged into GitHub"
echo " BICEP_PATH: Path to the bicep executable. For example, ~/.rad/bin"
echo " ACR_HOST: Host name of the Azure Container Registry. For example, myregistry.azurecr.io."
echo " GHCR_ORG: Organization name of the GitHub Container Registry. For example, radius-project"
echo " RECIPE_VERSION: Version of the recipe to publish. For example, 1.0"
}

# Verify that the required arguments are present
if [ -z "$BICEP_PATH" ] || [ -z "$ACR_HOST" ] || [ -z "$RECIPE_VERSION" ]; then
if [ -z "$BICEP_PATH" ] || [ -z "$GHCR_ORG" ] || [ -z "$RECIPE_VERSION" ]; then
echo "Missing required arguments"
print_usage
exit 1
fi

echo "## Recipes published to $ACR_HOST" >> $GITHUB_STEP_SUMMARY
echo "## Recipes published to ghcr.io/$GHCR_ORG" >> $GITHUB_STEP_SUMMARY
for RECIPE in $(find . -type f -name "*.bicep")
do
# Get the platform (file) name and resource (directory) name
export FILE_NAME=$(basename $RECIPE | cut -d. -f1) # rediscaches
export DIR_NAME=$(dirname $RECIPE | cut -d/ -f2) # dev

echo "Publishing $DIR_NAME/$FILE_NAME to $ACR_HOST from $RECIPE"
echo "- $ACR_HOST/recipes/$DIR_NAME/$FILE_NAME:$RECIPE_VERSION" >> $GITHUB_STEP_SUMMARY
$BICEP_EXECUTABLE publish $RECIPE --target "br:$ACR_HOST/recipes/$DIR_NAME/$FILE_NAME:$RECIPE_VERSION"
echo "Publishing $DIR_NAME/$FILE_NAME to ghcr.io/$GHCR_ORG from $RECIPE"
echo "- ghcr.io/$GHCR_ORG/recipes/$DIR_NAME/$FILE_NAME:$RECIPE_VERSION" >> $GITHUB_STEP_SUMMARY
$BICEP_EXECUTABLE publish $RECIPE --target "br:ghcr.io/$GHCR_ORG/recipes/$DIR_NAME/$FILE_NAME:$RECIPE_VERSION"
done
34 changes: 6 additions & 28 deletions .github/workflows/publish-recipes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,51 +32,35 @@ concurrency:

jobs:
publish-dev:
name: Publish Recipes to Dev ACR
name: Publish Recipes to Dev GHCR
runs-on: ubuntu-latest
if: github.event_name == 'pull_request' && github.event.action != 'closed'
env:
ACR_HOST: radiusdev.azurecr.io
steps:
- name: Check out repo
uses: actions/checkout@v3
- name: az CLI login
run: |
az login --service-principal \
--username ${{ secrets.AZURE_SP_TESTS_APPID }} \
--password ${{ secrets.AZURE_SP_TESTS_PASSWORD }} \
--tenant ${{ secrets.AZURE_SP_TESTS_TENANTID }}
- name: Parse release version and set environment variables
run: python ./.github/scripts/get_release_version.py
- name: Download rad-bicep
run: |
./.github/scripts/curl-with-retries.sh https://get.radapp.dev/tools/bicep-extensibility/${{ env.REL_CHANNEL }}/linux-x64/rad-bicep --output rad-bicep
chmod +x rad-bicep
./rad-bicep --version
- name: Publish Recipes to Dev ACRs
- name: Publish Recipes to Dev GHCR
# Uses REL_VERSION as the recipe version so PR builds result in a `pr-<pr number>` tag
run: ./.github/scripts/publish-recipes.sh . radiusdev.azurecr.io ${{ env.REL_VERSION }}
run: ./.github/scripts/publish-recipes.sh . radius-project ${{ env.REL_VERSION }}

delete-dev:
name: Delete Dev ACR Images
name: Delete Dev GHCR Images
runs-on: ubuntu-latest
needs: publish-dev
if: github.event_name == 'pull_request' && github.event.action == 'closed'
env:
ACR_HOST: radiusdev.azurecr.io
steps:
- name: Check out repo
uses: actions/checkout@v3
- name: az CLI login
run: |
az login --service-principal \
--username ${{ secrets.AZURE_SP_TESTS_APPID }} \
--password ${{ secrets.AZURE_SP_TESTS_PASSWORD }} \
--tenant ${{ secrets.AZURE_SP_TESTS_TENANTID }}
- name: Parse release version and set environment variables
run: python ./.github/scripts/get_release_version.py
- name: Delete Dev ACR Images
run: ./.github/scripts/delete-recipes.sh radiusdev.azurecr.io ${{ env.REL_VERSION }}
- name: Delete Dev GHCR Images
run: ./.github/scripts/delete-recipes.sh radius-project ${{ env.REL_VERSION }}

# This is where we can add integration tests in the future

Expand All @@ -91,12 +75,6 @@ jobs:
steps:
- name: Check out repo
uses: actions/checkout@v3
- name: az CLI login
run: |
az login --service-principal \
--username ${{ secrets.AZURE_SP_TESTS_APPID }} \
--password ${{ secrets.AZURE_SP_TESTS_PASSWORD }} \
--tenant ${{ secrets.AZURE_SP_TESTS_TENANTID }}
- name: Parse release version and set environment variables
run: python ./.github/scripts/get_release_version.py
- name: Download rad-bicep
Expand Down

0 comments on commit 3ed7453

Please sign in to comment.