mirror of
https://github.com/elgohr/Publish-Docker-Github-Action.git
synced 2026-03-12 18:07:12 -04:00
🚀 Support environment files
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
This commit is contained in:
@@ -67,12 +67,14 @@ main() {
|
||||
fi
|
||||
|
||||
echo "::set-output name=tag::${FIRST_TAG}"
|
||||
echo "tag=${FIRST_TAG}" >> "$GITHUB_ENV"
|
||||
if uses "${INPUT_PLATFORMS}"; then
|
||||
DIGEST=$(jq -r '."containerimage.digest"' metadata.json)
|
||||
else
|
||||
DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${DOCKERNAME})
|
||||
fi
|
||||
echo "::set-output name=digest::${DIGEST}"
|
||||
echo "digest=${DIGEST}" >> "$GITHUB_ENV"
|
||||
|
||||
docker logout
|
||||
}
|
||||
@@ -183,6 +185,7 @@ useSnapshot() {
|
||||
local SNAPSHOT_TAG="${TIMESTAMP}${SHORT_SHA}"
|
||||
TAGS="${TAGS} ${SNAPSHOT_TAG}"
|
||||
echo "::set-output name=snapshot-tag::${SNAPSHOT_TAG}"
|
||||
echo "snapshot-tag=${SNAPSHOT_TAG}" >> "$GITHUB_ENV"
|
||||
}
|
||||
|
||||
build() {
|
||||
|
||||
33
test.bats
33
test.bats
@@ -2,6 +2,7 @@
|
||||
|
||||
setup(){
|
||||
export PATH="/usr/local/sbin:/usr/local/mock:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
export GITHUB_ENV="/tmp/githubOutput"
|
||||
|
||||
cat /dev/null >| mockArgs
|
||||
cat /dev/null >| mockStdin
|
||||
@@ -18,6 +19,7 @@ setup(){
|
||||
}
|
||||
|
||||
teardown() {
|
||||
rm -f "${GITHUB_ENV}"
|
||||
unset INPUT_TAG_NAMES
|
||||
unset INPUT_SNAPSHOT
|
||||
unset INPUT_DOCKERFILE
|
||||
@@ -35,6 +37,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||
/usr/local/mock/docker build -t my/repository:latest .
|
||||
@@ -49,6 +52,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||
/usr/local/mock/docker build -t my/repository:latest .
|
||||
@@ -63,6 +67,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::myBranch"
|
||||
expectGitHubEnvContains "tag=myBranch"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:myBranch .
|
||||
/usr/local/mock/docker push my/repository:myBranch"
|
||||
@@ -74,6 +79,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::myBranch-withDash"
|
||||
expectGitHubEnvContains "tag=myBranch-withDash"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:myBranch-withDash .
|
||||
/usr/local/mock/docker push my/repository:myBranch-withDash"
|
||||
@@ -85,6 +91,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||
/usr/local/mock/docker build -t my/repository:latest .
|
||||
@@ -100,6 +107,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::myRelease"
|
||||
expectGitHubEnvContains "tag=myRelease"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:myRelease .
|
||||
/usr/local/mock/docker push my/repository:myRelease"
|
||||
@@ -112,6 +120,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest .
|
||||
/usr/local/mock/docker push my/repository:latest"
|
||||
@@ -124,6 +133,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::1.2.3"
|
||||
expectGitHubEnvContains "tag=1.2.3"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||
/usr/local/mock/docker build -t my/repository:1.2.3 -t my/repository:1.2 -t my/repository:1 .
|
||||
@@ -141,6 +151,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::12.345.5678"
|
||||
expectGitHubEnvContains "tag=12.345.5678"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||
/usr/local/mock/docker build -t my/repository:12.345.5678 -t my/repository:12.345 -t my/repository:12 .
|
||||
@@ -164,6 +175,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::1.1.1-${SUFFIX}"
|
||||
expectGitHubEnvContains "tag=1.1.1-${SUFFIX}"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||
/usr/local/mock/docker build -t my/repository:1.1.1-${SUFFIX} .
|
||||
@@ -180,6 +192,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::1.2.34"
|
||||
expectGitHubEnvContains "tag=1.2.34"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||
/usr/local/mock/docker build -t my/repository:1.2.34 -t my/repository:1.2 -t my/repository:1 .
|
||||
@@ -197,6 +210,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest .
|
||||
/usr/local/mock/docker push my/repository:latest"
|
||||
@@ -209,6 +223,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest .
|
||||
/usr/local/mock/docker push my/repository:latest"
|
||||
@@ -220,6 +235,7 @@ teardown() {
|
||||
run /entrypoint.sh export GITHUB_REF='refs/heads/master'
|
||||
|
||||
expectStdOutContains "::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build -f MyDockerFileName -t my/repository:latest .
|
||||
/usr/local/mock/docker push my/repository:latest"
|
||||
@@ -239,6 +255,7 @@ teardown() {
|
||||
expectStdOutContains "
|
||||
::set-output name=snapshot-tag::19700101010112169e
|
||||
::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "snapshot-tag=19700101010112169etag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/date +%Y%m%d%H%M%S
|
||||
/usr/local/mock/docker build -t my/repository:latest -t my/repository:19700101010112169e .
|
||||
@@ -259,6 +276,7 @@ teardown() {
|
||||
|
||||
expectStdOutContains "
|
||||
::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest .
|
||||
/usr/local/mock/docker push my/repository:latest"
|
||||
@@ -409,6 +427,7 @@ teardown() {
|
||||
|
||||
expectStdOutContains "
|
||||
::set-output name=tag::12169ed809255604e557a82617264e9c373faca7"
|
||||
expectGitHubEnvContains "tag=12169ed809255604e557a82617264e9c373faca7"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:12169ed809255604e557a82617264e9c373faca7 .
|
||||
/usr/local/mock/docker push my/repository:12169ed809255604e557a82617264e9c373faca7"
|
||||
@@ -421,6 +440,7 @@ teardown() {
|
||||
|
||||
expectStdOutContains "
|
||||
::set-output name=tag::custom-tag"
|
||||
expectGitHubEnvContains "tag=custom-tag"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:custom-tag .
|
||||
/usr/local/mock/docker push my/repository:custom-tag"
|
||||
@@ -435,6 +455,7 @@ teardown() {
|
||||
::add-mask::MY_FIRST
|
||||
::add-mask::MY_SECOND
|
||||
::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build --build-arg MY_FIRST --build-arg MY_SECOND -t my/repository:latest ."
|
||||
}
|
||||
@@ -447,6 +468,7 @@ teardown() {
|
||||
expectStdOutContains "
|
||||
::add-mask::MY_ONLY
|
||||
::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker build --build-arg MY_ONLY -t my/repository:latest ."
|
||||
}
|
||||
@@ -528,6 +550,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=digest::my/repository@sha256:53b76152042486bc741fe59f130bfe683b883060c8284271a2586342f35dcd0e"
|
||||
expectGitHubEnvContains "digest=my/repository@sha256:53b76152042486bc741fe59f130bfe683b883060c8284271a2586342f35dcd0e"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker push my/repository:latest
|
||||
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:latest"
|
||||
@@ -639,6 +662,7 @@ teardown() {
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::latest"
|
||||
expectGitHubEnvContains "tag=latest"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||
/usr/local/mock/docker build -t my/repository:latest .
|
||||
@@ -692,6 +716,7 @@ EOT
|
||||
run /entrypoint.sh
|
||||
|
||||
expectStdOutContains "::set-output name=tag::latest::set-output name=digest::sha256:aa2c7631cc1bbf588192ec7e55b428ad92fe63834200303f28e93444d7fc114a"
|
||||
expectGitHubEnvContains "tag=latestdigest=sha256:aa2c7631cc1bbf588192ec7e55b428ad92fe63834200303f28e93444d7fc114a"
|
||||
|
||||
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||
/usr/local/mock/docker buildx build --push --metadata-file metadata.json --platform linux/amd64,linux/arm64 -t my/repository:latest .
|
||||
@@ -715,6 +740,14 @@ expectStdOutContains() {
|
||||
echo "${got}" | grep "${expected}"
|
||||
}
|
||||
|
||||
expectGitHubEnvContains() {
|
||||
local expected=$(echo "${1}" | tr -d '\n')
|
||||
local got=$(cat "${GITHUB_ENV}" | tr -d '\n')
|
||||
echo "Expected: |${expected}|
|
||||
Got: |${got}|"
|
||||
echo "${got}" | grep "${expected}"
|
||||
}
|
||||
|
||||
expectMockCalledIs() {
|
||||
local expected=$(echo "${1}" | tr -d '\n')
|
||||
local got=$(cat mockArgs | tr -d '\n')
|
||||
|
||||
Reference in New Issue
Block a user