Skip to content

testing release workflow #35

testing release workflow

testing release workflow #35

name: Build and Push Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
create_release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set Env
run: |
VERSION=$(echo "${GITHUB_REF#refs/*/}" | sed 's/^v//')
echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
echo "RELEASE_VERSION=${VERSION}" >> $GITHUB_ENV
- name: Create GitHub Release
id: create_release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if gh release view $RELEASE_TAG &>/dev/null; then
echo "Release $RELEASE_TAG exists. skipping"
else
echo "Release $RELEASE_TAG does not exists. creating..."
RELEASE_NOTES=$(sed -e "/^## ${RELEASE_TAG}/,/^## / ! d" CHANGELOG.md | tail -n +2 | head -n -1)
gh release create $RELEASE_TAG \
--generate-notes \
--title $RELEASE_TAG \
--notes "$RELEASE_NOTES"
fi
create_release_arm64:
runs-on: ubuntu-latest-4-cores-arm64
needs: create_release
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set Env
run: |
VERSION=$(echo "${GITHUB_REF#refs/*/}" | sed 's/^v//')
echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
echo "RELEASE_VERSION=${VERSION}" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
install: true
- name: Build release artifacts for arm64
run: |
docker buildx build --platform linux/arm64/v8 --output type=local,dest=docker_output/ -t peridiod:${RELEASE_TAG} -f support/Containerfile-release.arm64 .
- name: Upload Release Asset
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mv ./docker_output/arm64/peridiod-${RELEASE_VERSION}.tar.gz ./docker_output/peridiod-${RELEASE_VERSION}-arm64.tar.gz
gh release upload $RELEASE_TAG ./docker_output/peridiod-${RELEASE_VERSION}-arm64.tar.gz --clobber
- name: Load docker hub credentials
id: op-load-docker-hub-credentials
uses: 1password/load-secrets-action@v1
with:
export-env: false
env:
OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
DOCKER_HUB_USERNAME: op://ci-cd/docker-hub-machine/username
DOCKER_HUB_PASSWORD: op://ci-cd/docker-hub-machine/password
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ steps.op-load-docker-hub-credentials.outputs.DOCKER_HUB_USERNAME }}
password: ${{ steps.op-load-docker-hub-credentials.outputs.DOCKER_HUB_PASSWORD }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
id: build
with:
context: .
file: ./Containerfile
platforms: linux/arm64/v8
push: false
outputs: type=registry
tags: |
peridio/peridiod:${{ env.RELEASE_TAG }}
peridio/peridiod:latest
- name: Save arm64 Image
run: docker save -o peridiod-${{ env.RELEASE_TAG }}-arm64.tar peridio/peridiod:${{ env.RELEASE_TAG }}
- name: Upload arm64 Image
uses: actions/upload-artifact@v3
with:
name: peridiod-${{ env.RELEASE_TAG }}-arm64
path: peridiod-${{ env.RELEASE_TAG }}-arm64.tar
create_release_amd64:
runs-on: ubuntu-latest
needs: create_release
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set Env
run: |
VERSION=$(echo "${GITHUB_REF#refs/*/}" | sed 's/^v//')
echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
echo "RELEASE_VERSION=${VERSION}" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
install: true
- name: Build release artifacts for amd64
run: |
docker buildx build --platform linux/amd64 --output type=local,dest=docker_output/ -t peridiod:${RELEASE_TAG} -f support/Containerfile-release.amd64 .
- name: Upload Release Asset
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mv ./docker_output/amd64/peridiod-${RELEASE_VERSION}.tar.gz ./docker_output/peridiod-${RELEASE_VERSION}-amd64.tar.gz
gh release upload $RELEASE_TAG ./docker_output/peridiod-${RELEASE_VERSION}-amd64.tar.gz --clobber
- name: Load docker hub credentials
id: op-load-docker-hub-credentials
uses: 1password/load-secrets-action@v1
with:
export-env: false
env:
OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
DOCKER_HUB_USERNAME: op://ci-cd/docker-hub-machine/username
DOCKER_HUB_PASSWORD: op://ci-cd/docker-hub-machine/password
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ steps.op-load-docker-hub-credentials.outputs.DOCKER_HUB_USERNAME }}
password: ${{ steps.op-load-docker-hub-credentials.outputs.DOCKER_HUB_PASSWORD }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
id: build
with:
context: .
file: ./Containerfile
platforms: linux/amd64
push: false
outputs: type=registry
tags: |
peridio/peridiod:${{ env.RELEASE_TAG }}
peridio/peridiod:latest
- name: Save amd64 Image
run: docker save -o peridiod-${{ env.RELEASE_TAG }}-amd64.tar peridio/peridiod:${{ env.RELEASE_TAG }}
- name: Upload amd64 Image
uses: actions/upload-artifact@v3
with:
name: peridiod-${{ env.RELEASE_TAG }}-amd64
path: peridiod-${{ env.RELEASE_TAG }}-amd64.tar
push_container_images:
runs-on: ubuntu-latest
needs: [create_release_arm64, create_release_amd64]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set Env
run: |
echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Download arm64 Image
uses: actions/download-artifact@v3

Check failure on line 190 in .github/workflows/build_push_release.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/build_push_release.yml

Invalid workflow file

You have an error in your yaml syntax on line 190
with:
name: peridiod-${{ env.RELEASE_TAG }}-arm64
path: ./peridiod-${{ env.RELEASE_TAG }}-arm64.tar
- name: Download amd64 Image
uses: actions/download-artifact@v3
with:
name: peridiod-${{ env.RELEASE_TAG }}-amd64
path: ./peridiod-${{ env.RELEASE_TAG }}-amd64.tar
- name: Load Images
run: |
docker load -i ./peridiod-${{ env.RELEASE_TAG }}-arm64.tar
docker load -i ./peridiod-${{ env.RELEASE_TAG }}-amd64.tar
- name: Load docker hub credentials
id: op-load-docker-hub-credentials
uses: 1password/load-secrets-action@v1
with:
export-env: false
env:
OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
DOCKER_HUB_USERNAME: op://ci-cd/docker-hub-machine/username
DOCKER_HUB_PASSWORD: op://ci-cd/docker-hub-machine/password
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ steps.op-load-docker-hub-credentials.outputs.DOCKER_HUB_USERNAME }}
password: ${{ steps.op-load-docker-hub-credentials.outputs.DOCKER_HUB_PASSWORD }}
- name: Create and Push Manifest
run: |
docker manifest create peridio/peridiod:${{ env.RELEASE_TAG }} \
--amend peridio/peridiod:${{ env.RELEASE_TAG }} \
--amend peridio/peridiod:${{ env.RELEASE_TAG }}
docker manifest create peridio/peridiod:latest \
--amend peridio/peridiod:latest \
--amend peridio/peridiod:latest
docker manifest push peridio/peridiod:${{ env.RELEASE_TAG }}
docker manifest push peridio/peridiod:latest