Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d7c7b52492 | ||
|
|
60ad8f01da | ||
|
|
e9982081e9 | ||
|
|
1f6d37afed | ||
|
|
5f706e0282 | ||
|
|
1a8855547b | ||
|
|
d0062e71e8 | ||
|
|
353a671c27 | ||
|
|
a46177893c | ||
|
|
65c0ddb289 | ||
|
|
78203aaead | ||
|
|
7cba9ee95f | ||
|
|
7e6b01825b | ||
|
|
79d79ca3d6 | ||
|
|
1e415a30aa | ||
|
|
8461c8822a | ||
|
|
eac4363913 | ||
|
|
a3bf84bcea | ||
|
|
8284ac3169 | ||
|
|
68ef36fafb | ||
|
|
1af99634b4 | ||
|
|
53353c6bac | ||
|
|
a73303d6e6 | ||
|
|
18b0458fa5 | ||
|
|
44eeda157a | ||
|
|
062b29960f | ||
|
|
d4e38c6d85 | ||
|
|
25ba610c6a | ||
|
|
6d2ff0933a | ||
|
|
7a6afb4654 | ||
|
|
7fbb8ff076 | ||
|
|
cc956b29f4 | ||
|
|
786e26bccc | ||
|
|
b074eed754 | ||
|
|
f5fdd1008f | ||
|
|
0857c654d2 | ||
|
|
480c3ee027 | ||
|
|
54076af43d | ||
|
|
608f255ab0 | ||
|
|
a927b6e01e | ||
|
|
987a7657ce | ||
|
|
94a78b3122 | ||
|
|
fcc458bf31 |
42
.travis.yml
42
.travis.yml
@@ -18,18 +18,18 @@ sudo: required
|
|||||||
language: go
|
language: go
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- "1.13.15"
|
- "1.16.7"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- MAIN_BRANCH=v9.2.2
|
- MAIN_BRANCH=v9.2.4
|
||||||
- MQ_LTS_VERSION=9.2.0.1
|
- MQ_LTS_VERSION=9.2.0.2
|
||||||
- TAGCACHE_FILE=tagcache
|
- TAGCACHE_FILE=tagcache
|
||||||
- RELEASE=r1
|
- RELEASE=r1
|
||||||
- RELEASE_LTS=r1
|
- RELEASE_LTS=r2
|
||||||
|
|
||||||
go_import_path: "github.com/ibm-messaging/mq-container"
|
go_import_path: "github.com/ibm-messaging/mq-container"
|
||||||
|
|
||||||
@@ -40,50 +40,50 @@ go_import_path: "github.com/ibm-messaging/mq-container"
|
|||||||
jobs:
|
jobs:
|
||||||
include:
|
include:
|
||||||
- stage: basic-build
|
- stage: basic-build
|
||||||
if: branch != v9.2.2 AND tag IS blank
|
if: branch != v9.2.4 AND tag IS blank
|
||||||
name: "Basic AMD64 build"
|
name: "Basic AMD64 build"
|
||||||
os: linux
|
os: linux
|
||||||
env:
|
env:
|
||||||
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_922_ARCHIVE_REPOSITORY_DEV_AMD64
|
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_924_ARCHIVE_REPOSITORY_DEV_AMD64
|
||||||
script: bash -e travis-build-scripts/run.sh
|
script: bash -e travis-build-scripts/run.sh
|
||||||
|
|
||||||
# CD Build
|
# CD Build
|
||||||
|
|
||||||
- stage: global-tag
|
- stage: global-tag
|
||||||
if: branch = v9.2.2 AND type != pull_request OR tag =~ ^release-candidate*
|
if: branch = v9.2.4 AND type != pull_request OR tag =~ ^release-candidate*
|
||||||
name: "Generate Global Tag"
|
name: "Generate Global Tag"
|
||||||
os: linux
|
os: linux
|
||||||
script: bash -e travis-build-scripts/global-tag.sh
|
script: bash -e travis-build-scripts/global-tag.sh
|
||||||
- stage: build
|
- stage: build
|
||||||
if: branch = v9.2.2 OR tag =~ ^release-candidate*
|
if: branch = v9.2.4 OR tag =~ ^release-candidate*
|
||||||
name: "Multi-Arch AMD64 build"
|
name: "Multi-Arch AMD64 build"
|
||||||
os: linux
|
os: linux
|
||||||
env:
|
env:
|
||||||
- BUILD_ALL=true
|
- BUILD_ALL=true
|
||||||
- MQ_ARCHIVE_REPOSITORY=$MQ_922_ARCHIVE_REPOSITORY_AMD64
|
- MQ_ARCHIVE_REPOSITORY=$MQ_924_ARCHIVE_REPOSITORY_AMD64
|
||||||
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_922_ARCHIVE_REPOSITORY_DEV_AMD64
|
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_924_ARCHIVE_REPOSITORY_DEV_AMD64
|
||||||
script: bash -e travis-build-scripts/run.sh
|
script: bash -e travis-build-scripts/run.sh
|
||||||
# - if: branch = v9.2.2 OR tag =~ ^release-candidate*
|
# - if: branch = v9.2.4 OR tag =~ ^release-candidate*
|
||||||
# name: "Multi-Arch PPC64LE build"
|
# name: "Multi-Arch PPC64LE build"
|
||||||
# os: linux-ppc64le
|
# os: linux-ppc64le
|
||||||
# env:
|
# env:
|
||||||
# - BUILD_ALL=true
|
# - BUILD_ALL=true
|
||||||
# - TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
|
# - TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
|
||||||
# # - MQ_ARCHIVE_REPOSITORY=$MQ_922_ARCHIVE_REPOSITORY_PPC64LE
|
# # - MQ_ARCHIVE_REPOSITORY=$MQ_924_ARCHIVE_REPOSITORY_PPC64LE
|
||||||
# - MQ_ARCHIVE_REPOSITORY_DEV=$MQ_922_ARCHIVE_REPOSITORY_DEV_PPC64LE
|
# - MQ_ARCHIVE_REPOSITORY_DEV=$MQ_924_ARCHIVE_REPOSITORY_DEV_PPC64LE
|
||||||
# script: bash -e travis-build-scripts/run.sh
|
# script: bash -e travis-build-scripts/run.sh
|
||||||
- stage: build
|
- stage: build
|
||||||
if: branch = v9.2.2 OR tag =~ ^release-candidate*
|
if: branch = v9.2.4 OR tag =~ ^release-candidate*
|
||||||
name: "Multi-Arch S390X build"
|
name: "Multi-Arch S390X build"
|
||||||
os: linux-s390
|
os: linux-s390
|
||||||
env:
|
env:
|
||||||
- BUILD_ALL=true
|
- BUILD_ALL=true
|
||||||
- TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
|
- TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
|
||||||
- MQ_ARCHIVE_REPOSITORY=$MQ_922_ARCHIVE_REPOSITORY_S390X
|
- MQ_ARCHIVE_REPOSITORY=$MQ_924_ARCHIVE_REPOSITORY_S390X
|
||||||
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_922_ARCHIVE_REPOSITORY_DEV_S390X
|
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_924_ARCHIVE_REPOSITORY_DEV_S390X
|
||||||
script: bash -e travis-build-scripts/run.sh
|
script: bash -e travis-build-scripts/run.sh
|
||||||
- stage: push-manifest
|
- stage: push-manifest
|
||||||
if: branch = v9.2.2 AND type != pull_request OR tag =~ ^release-candidate*
|
if: branch = v9.2.4 AND type != pull_request OR tag =~ ^release-candidate*
|
||||||
name: "Push Manifest-list to registry"
|
name: "Push Manifest-list to registry"
|
||||||
env:
|
env:
|
||||||
- PUSH_MANIFEST_ONLY=true
|
- PUSH_MANIFEST_ONLY=true
|
||||||
@@ -92,7 +92,7 @@ jobs:
|
|||||||
# LTS Build
|
# LTS Build
|
||||||
|
|
||||||
- stage: global-tag
|
- stage: global-tag
|
||||||
if: branch = v9.2.2 AND type != pull_request OR tag =~ ^release-candidate*
|
if: branch = v9.2.4 AND type != pull_request OR tag =~ ^release-candidate*
|
||||||
name: "Generate Global Tag"
|
name: "Generate Global Tag"
|
||||||
os: linux
|
os: linux
|
||||||
env:
|
env:
|
||||||
@@ -102,7 +102,7 @@ jobs:
|
|||||||
- RELEASE=$RELEASE_LTS
|
- RELEASE=$RELEASE_LTS
|
||||||
script: bash -e travis-build-scripts/global-tag.sh
|
script: bash -e travis-build-scripts/global-tag.sh
|
||||||
- stage: build
|
- stage: build
|
||||||
if: branch = v9.2.2 OR tag =~ ^release-candidate*
|
if: branch = v9.2.4 OR tag =~ ^release-candidate*
|
||||||
name: "Multi-Arch AMD64 build"
|
name: "Multi-Arch AMD64 build"
|
||||||
os: linux
|
os: linux
|
||||||
env:
|
env:
|
||||||
@@ -113,7 +113,7 @@ jobs:
|
|||||||
- RELEASE=$RELEASE_LTS
|
- RELEASE=$RELEASE_LTS
|
||||||
script: bash -e travis-build-scripts/run.sh
|
script: bash -e travis-build-scripts/run.sh
|
||||||
- stage: build
|
- stage: build
|
||||||
if: branch = v9.2.2 OR tag =~ ^release-candidate*
|
if: branch = v9.2.4 OR tag =~ ^release-candidate*
|
||||||
name: "Multi-Arch S390X build"
|
name: "Multi-Arch S390X build"
|
||||||
os: linux-s390
|
os: linux-s390
|
||||||
env:
|
env:
|
||||||
@@ -125,7 +125,7 @@ jobs:
|
|||||||
- RELEASE=$RELEASE_LTS
|
- RELEASE=$RELEASE_LTS
|
||||||
script: bash -e travis-build-scripts/run.sh
|
script: bash -e travis-build-scripts/run.sh
|
||||||
- stage: push-manifest
|
- stage: push-manifest
|
||||||
if: branch = v9.2.2 AND type != pull_request OR tag =~ ^release-candidate*
|
if: branch = v9.2.4 AND type != pull_request OR tag =~ ^release-candidate*
|
||||||
name: "Push Manifest-list to registry"
|
name: "Push Manifest-list to registry"
|
||||||
env:
|
env:
|
||||||
- LTS=true
|
- LTS=true
|
||||||
|
|||||||
6
.whitesource
Normal file
6
.whitesource
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"settingsInheritedFrom": "whitesource-config/whitesource-config@master",
|
||||||
|
"scanSettings": {
|
||||||
|
"baseBranches": ["private-master", "v9.2.0.x-eus"]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,13 @@
|
|||||||
# Change log
|
# Change log
|
||||||
|
|
||||||
|
## 9.2.4.0 (2021-09-06)
|
||||||
|
|
||||||
|
* Updated to MQ version 9.2.4.0
|
||||||
|
|
||||||
|
## 9.2.3.0 (2021-07-22)
|
||||||
|
|
||||||
|
* Updated to MQ version 9.2.3.0
|
||||||
|
|
||||||
## 9.2.2.0 (2021-03-26)
|
## 9.2.2.0 (2021-03-26)
|
||||||
|
|
||||||
* Updated to MQ version 9.2.2.0
|
* Updated to MQ version 9.2.2.0
|
||||||
|
|||||||
@@ -13,13 +13,15 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
ARG BASE_IMAGE=registry.redhat.io/ubi8/ubi-minimal
|
ARG BASE_IMAGE=registry.redhat.io/ubi8/ubi-minimal
|
||||||
ARG BASE_TAG=8.3-291
|
ARG BASE_TAG=8.5-204
|
||||||
ARG GO_WORKDIR=/go/src/github.com/ibm-messaging/mq-container
|
ARG BUILDER_IMAGE=registry.redhat.io/ubi8/go-toolset
|
||||||
ARG MQ_URL="https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/9.2.2.0-IBM-MQ-Advanced-for-Developers-Non-Install-LinuxX64.tar.gz"
|
ARG BUILDER_TAG=1.16.7-5
|
||||||
|
ARG GO_WORKDIR=/opt/app-root/src/go/src/github.com/ibm-messaging/mq-container
|
||||||
|
ARG MQ_URL="https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/9.2.4.0-IBM-MQ-Advanced-for-Developers-Non-Install-LinuxX64.tar.gz"
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Build stage to build Go code
|
# Build stage to build Go code
|
||||||
###############################################################################
|
###############################################################################
|
||||||
FROM docker.io/golang:1.14.15 as builder
|
FROM $BUILDER_IMAGE:$BUILDER_TAG as builder
|
||||||
# The URL to download the MQ installer from in tar.gz format
|
# The URL to download the MQ installer from in tar.gz format
|
||||||
# This assumes an archive containing the MQ Non-Install packages
|
# This assumes an archive containing the MQ Non-Install packages
|
||||||
ARG MQ_URL
|
ARG MQ_URL
|
||||||
@@ -35,6 +37,7 @@ RUN mkdir /opt/mqm \
|
|||||||
&& INSTALL_SDK=1 install-mq.sh \
|
&& INSTALL_SDK=1 install-mq.sh \
|
||||||
&& chown -R 1001:root /opt/mqm/*
|
&& chown -R 1001:root /opt/mqm/*
|
||||||
WORKDIR $GO_WORKDIR/
|
WORKDIR $GO_WORKDIR/
|
||||||
|
COPY go.mod go.sum ./
|
||||||
COPY cmd/ ./cmd
|
COPY cmd/ ./cmd
|
||||||
COPY internal/ ./internal
|
COPY internal/ ./internal
|
||||||
COPY pkg/ ./pkg
|
COPY pkg/ ./pkg
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -258,7 +258,7 @@ test-advancedserver: test/docker/vendor
|
|||||||
cd test/docker && TEST_IMAGE=$(MQ_IMAGE_ADVANCEDSERVER):$(MQ_TAG) EXPECTED_LICENSE=Production go test -parallel $(NUM_CPU) -timeout $(TEST_TIMEOUT_DOCKER) $(TEST_OPTS_DOCKER)
|
cd test/docker && TEST_IMAGE=$(MQ_IMAGE_ADVANCEDSERVER):$(MQ_TAG) EXPECTED_LICENSE=Production go test -parallel $(NUM_CPU) -timeout $(TEST_TIMEOUT_DOCKER) $(TEST_OPTS_DOCKER)
|
||||||
|
|
||||||
.PHONY: build-devjmstest
|
.PHONY: build-devjmstest
|
||||||
build-devjmstest:
|
build-devjmstest: registry-login
|
||||||
$(info $(SPACER)$(shell printf $(TITLE)"Build JMS tests for developer config"$(END)))
|
$(info $(SPACER)$(shell printf $(TITLE)"Build JMS tests for developer config"$(END)))
|
||||||
cd test/messaging && docker build --tag $(DEV_JMS_IMAGE) .
|
cd test/messaging && docker build --tag $(DEV_JMS_IMAGE) .
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
# IBM MQ container
|
# IBM MQ container
|
||||||
|
|
||||||
|
|
||||||
[](https://travis-ci.org/ibm-messaging/mq-container)
|
[](https://travis-ci.org/ibm-messaging/mq-container)
|
||||||
|
|
||||||
**Note**: The `master` branch may be in an *unstable or even broken state* during development.
|
**Note**: The `master` branch may be in an *unstable or even broken state* during development.
|
||||||
@@ -44,8 +45,8 @@ For issues relating specifically to the container image or Helm chart, please us
|
|||||||
The Dockerfiles and associated code and scripts are licensed under the [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).
|
The Dockerfiles and associated code and scripts are licensed under the [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).
|
||||||
Licenses for the products installed within the images are as follows:
|
Licenses for the products installed within the images are as follows:
|
||||||
|
|
||||||
- [IBM MQ Advanced for Developers](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=Z125-3301-14&li_formnum=L-APIG-BMKG5H) (International License Agreement for Non-Warranted Programs). This license may be viewed from an image using the `LICENSE=view` environment variable as described above or by following the link above.
|
- [IBM MQ Advanced for Developers](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=Z125-3301-14&li_formnum=L-APIG-BYHCL7) (International License Agreement for Non-Warranted Programs). This license may be viewed from an image using the `LICENSE=view` environment variable as described above or by following the link above.
|
||||||
- [IBM MQ Advanced](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=Z125-3301-14&li_formnum=L-APIG-BVJJB3) (International Program License Agreement). This license may be viewed from an image using the `LICENSE=view` environment variable as described above or by following the link above.
|
- [IBM MQ Advanced](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=Z125-3301-14&li_formnum=L-APIG-BZDDDY) (International Program License Agreement). This license may be viewed from an image using the `LICENSE=view` environment variable as described above or by following the link above.
|
||||||
|
|
||||||
Note: The IBM MQ Advanced for Developers license does not permit further distribution and the terms restrict usage to a developer machine.
|
Note: The IBM MQ Advanced for Developers license does not permit further distribution and the terms restrict usage to a developer machine.
|
||||||
|
|
||||||
|
|||||||
@@ -43,20 +43,6 @@ func queueManagerStarted() (bool, error) {
|
|||||||
if !strings.Contains(string(out), "(RUNNING)") && !strings.Contains(string(out), "(RUNNING AS STANDBY)") && !strings.Contains(string(out), "(STARTING)") && !strings.Contains(string(out), "(REPLICA)") {
|
if !strings.Contains(string(out), "(RUNNING)") && !strings.Contains(string(out), "(RUNNING AS STANDBY)") && !strings.Contains(string(out), "(STARTING)") && !strings.Contains(string(out), "(REPLICA)") {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
if os.Getenv("MQ_NATIVE_HA") == "true" {
|
|
||||||
// Specify the queue manager name, just in case someone's created a second queue manager
|
|
||||||
// #nosec G204
|
|
||||||
cmd = exec.Command("dspmq", "-n", "-o", "nativeha", "-m", name)
|
|
||||||
// Run the command and wait for completion
|
|
||||||
out, err = cmd.CombinedOutput()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
if !strings.Contains(string(out), "INSYNC(YES)") {
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
###########################################################################################################################################################
|
###########################################################################################################################################################
|
||||||
|
|
||||||
# MQ_VERSION is the fully qualified MQ version number to build
|
# MQ_VERSION is the fully qualified MQ version number to build
|
||||||
MQ_VERSION ?= 9.2.2.0
|
MQ_VERSION ?= 9.2.4.0
|
||||||
|
|
||||||
###########################################################################################################################################################
|
###########################################################################################################################################################
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ From MQ 9.2.X, the MQ container adds support for MQ Long Term Support (LTS) **pr
|
|||||||
This procedure works for building the MQ Continuous Delivery release, on `amd64`, `ppc64le` and `s390x` architectures.
|
This procedure works for building the MQ Continuous Delivery release, on `amd64`, `ppc64le` and `s390x` architectures.
|
||||||
|
|
||||||
1. Create a `downloads` directory in the root of this repository
|
1. Create a `downloads` directory in the root of this repository
|
||||||
2. Download MQ from [IBM Passport Advantage](https://www.ibm.com/software/passportadvantage/) or [IBM Fix Central](https://www.ibm.com/support/fixcentral), and place the downloaded file (for example, `IBM_MQ_9.2.2_LINUX_X86-64_NOINST.tar.gz`) in the `downloads` directory
|
2. Download MQ from [IBM Passport Advantage](https://www.ibm.com/software/passportadvantage/) or [IBM Fix Central](https://www.ibm.com/support/fixcentral), and place the downloaded file (for example, `IBM_MQ_9.2.4_LINUX_X86-64_NOINST.tar.gz`) in the `downloads` directory
|
||||||
3. Login to the Red Hat Registry: `docker login registry.redhat.io` using your Customer Portal credentials.
|
3. Login to the Red Hat Registry: `docker login registry.redhat.io` using your Customer Portal credentials.
|
||||||
4. Run `make build-advancedserver`
|
4. Run `make build-advancedserver`
|
||||||
|
|
||||||
|
|||||||
@@ -16,5 +16,5 @@ docker run \
|
|||||||
--env LICENSE=accept \
|
--env LICENSE=accept \
|
||||||
--env MQ_QMGR_NAME=QM1 \
|
--env MQ_QMGR_NAME=QM1 \
|
||||||
--detach \
|
--detach \
|
||||||
ibm-mqadvanced-server:9.2.2.0-amd64
|
ibm-mqadvanced-server:9.2.4.0-amd64
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ make advancedserver
|
|||||||
You can specify the image to use directly by using the `MQ_IMAGE_ADVANCEDSERVER` or `MQ_IMAGE_DEVSERVER` variables, for example:
|
You can specify the image to use directly by using the `MQ_IMAGE_ADVANCEDSERVER` or `MQ_IMAGE_DEVSERVER` variables, for example:
|
||||||
|
|
||||||
```
|
```
|
||||||
MQ_IMAGE_ADVANCEDSERVER=ibm-mqadvanced-server:9.2.2.0-amd64 make test-advancedserver
|
MQ_IMAGE_ADVANCEDSERVER=ibm-mqadvanced-server:9.2.4.0-amd64 make test-advancedserver
|
||||||
```
|
```
|
||||||
|
|
||||||
You can pass parameters to `go test` with an environment variable. For example, to run the "TestGoldenPath" test, run the following command:
|
You can pass parameters to `go test` with an environment variable. For example, to run the "TestGoldenPath" test, run the following command:
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -1,6 +1,6 @@
|
|||||||
module github.com/ibm-messaging/mq-container
|
module github.com/ibm-messaging/mq-container
|
||||||
|
|
||||||
go 1.14
|
go 1.15
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/genuinetools/amicontained v0.4.0
|
github.com/genuinetools/amicontained v0.4.0
|
||||||
|
|||||||
@@ -22,5 +22,5 @@ set -ex
|
|||||||
sudo curl -Lo /usr/local/bin/dep https://github.com/golang/dep/releases/download/v0.5.1/dep-linux-$ARCH
|
sudo curl -Lo /usr/local/bin/dep https://github.com/golang/dep/releases/download/v0.5.1/dep-linux-$ARCH
|
||||||
sudo chmod +x /usr/local/bin/dep
|
sudo chmod +x /usr/local/bin/dep
|
||||||
|
|
||||||
go get -u golang.org/x/lint/golint
|
go install golang.org/x/lint/golint@latest
|
||||||
curl -sfL https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s -- -b $GOPATH/bin 2.0.0 || echo "Gosec not installed. Platform may not be supported."
|
curl -sfL https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s -- -b $GOPATH/bin 2.0.0 || echo "Gosec not installed. Platform may not be supported."
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ func ConfigureNativeHA(log *logger.Logger) error {
|
|||||||
templateMap["NativeHAInstance2_ReplicationAddress"] = os.Getenv("MQ_NATIVE_HA_INSTANCE_2_REPLICATION_ADDRESS")
|
templateMap["NativeHAInstance2_ReplicationAddress"] = os.Getenv("MQ_NATIVE_HA_INSTANCE_2_REPLICATION_ADDRESS")
|
||||||
|
|
||||||
if os.Getenv("MQ_NATIVE_HA_TLS") == "true" {
|
if os.Getenv("MQ_NATIVE_HA_TLS") == "true" {
|
||||||
keyLabel, _, err := tls.ConfigureHATLSKeystore()
|
keyLabel, _, _, err := tls.ConfigureHATLSKeystore()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,23 +76,22 @@ type TLSStore struct {
|
|||||||
Truststore KeyStoreData
|
Truststore KeyStoreData
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConfigureDefaultTLSKeystores configures the CMS Keystore & PKCS#12 Truststore
|
func configureTLSKeystores(keystoreDir, keyDir, trustDir string, p12TruststoreRequired bool) (string, KeyStoreData, KeyStoreData, error) {
|
||||||
func ConfigureDefaultTLSKeystores() (string, KeyStoreData, KeyStoreData, error) {
|
|
||||||
|
|
||||||
// Create the CMS Keystore & PKCS#12 Truststore
|
// Create the CMS Keystore & PKCS#12 Truststore (if required)
|
||||||
tlsStore, err := generateAllDefaultKeystores()
|
tlsStore, err := generateAllKeystores(keystoreDir, p12TruststoreRequired)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", tlsStore.Keystore, tlsStore.Truststore, err
|
return "", tlsStore.Keystore, tlsStore.Truststore, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process all keys - add them to the CMS KeyStore
|
// Process all keys - add them to the CMS KeyStore
|
||||||
keyLabel, err := processKeys(&tlsStore, keystoreDirDefault, keyDirDefault)
|
keyLabel, err := processKeys(&tlsStore, keystoreDir, keyDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", tlsStore.Keystore, tlsStore.Truststore, err
|
return "", tlsStore.Keystore, tlsStore.Truststore, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process all trust certificates - add them to the CMS KeyStore & PKCS#12 Truststore
|
// Process all trust certificates - add them to the CMS KeyStore & PKCS#12 Truststore (if required)
|
||||||
err = processTrustCertificates(&tlsStore, trustDirDefault)
|
err = processTrustCertificates(&tlsStore, trustDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", tlsStore.Keystore, tlsStore.Truststore, err
|
return "", tlsStore.Keystore, tlsStore.Truststore, err
|
||||||
}
|
}
|
||||||
@@ -100,22 +99,15 @@ func ConfigureDefaultTLSKeystores() (string, KeyStoreData, KeyStoreData, error)
|
|||||||
return keyLabel, tlsStore.Keystore, tlsStore.Truststore, err
|
return keyLabel, tlsStore.Keystore, tlsStore.Truststore, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ConfigureDefaultTLSKeystores configures the CMS Keystore & PKCS#12 Truststore
|
||||||
|
func ConfigureDefaultTLSKeystores() (string, KeyStoreData, KeyStoreData, error) {
|
||||||
|
return configureTLSKeystores(keystoreDirDefault, keyDirDefault, trustDirDefault, true)
|
||||||
|
}
|
||||||
|
|
||||||
// ConfigureHATLSKeystore configures the CMS Keystore & PKCS#12 Truststore
|
// ConfigureHATLSKeystore configures the CMS Keystore & PKCS#12 Truststore
|
||||||
func ConfigureHATLSKeystore() (string, KeyStoreData, error) {
|
func ConfigureHATLSKeystore() (string, KeyStoreData, KeyStoreData, error) {
|
||||||
|
// *.crt files mounted to the HA TLS dir keyDirHA will be processed as trusted in the CMS keystore
|
||||||
// Create a CMS Keystore only
|
return configureTLSKeystores(keystoreDirHA, keyDirHA, keyDirHA, false)
|
||||||
tlsStore, err := generateHAKeystore()
|
|
||||||
if err != nil {
|
|
||||||
return "", tlsStore.Keystore, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Process all keys - add them to the CMS KeyStore
|
|
||||||
keyLabel, err := processKeys(&tlsStore, keystoreDirHA, keyDirHA)
|
|
||||||
if err != nil {
|
|
||||||
return "", tlsStore.Keystore, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return keyLabel, tlsStore.Keystore, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConfigureTLS configures TLS for the queue manager
|
// ConfigureTLS configures TLS for the queue manager
|
||||||
@@ -166,8 +158,8 @@ func configureTLSDev(log *logger.Logger) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// generateAllDefaultKeystores creates the CMS Keystore & PKCS#12 Truststore
|
// generateAllKeystores creates the CMS Keystore & PKCS#12 Truststore (if required)
|
||||||
func generateAllDefaultKeystores() (TLSStore, error) {
|
func generateAllKeystores(keystoreDir string, p12TruststoreRequired bool) (TLSStore, error) {
|
||||||
|
|
||||||
var cmsKeystore, p12Truststore KeyStoreData
|
var cmsKeystore, p12Truststore KeyStoreData
|
||||||
|
|
||||||
@@ -178,52 +170,30 @@ func generateAllDefaultKeystores() (TLSStore, error) {
|
|||||||
|
|
||||||
// Create the Keystore directory - if it does not already exist
|
// Create the Keystore directory - if it does not already exist
|
||||||
// #nosec G301 - write group permissions are required
|
// #nosec G301 - write group permissions are required
|
||||||
err := os.MkdirAll(keystoreDirDefault, 0770)
|
err := os.MkdirAll(keystoreDir, 0770)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return TLSStore{cmsKeystore, p12Truststore}, fmt.Errorf("Failed to create Keystore directory: %v", err)
|
return TLSStore{cmsKeystore, p12Truststore}, fmt.Errorf("Failed to create Keystore directory: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the CMS Keystore
|
// Create the CMS Keystore
|
||||||
cmsKeystore.Keystore = keystore.NewCMSKeyStore(filepath.Join(keystoreDirDefault, cmsKeystoreName), cmsKeystore.Password)
|
cmsKeystore.Keystore = keystore.NewCMSKeyStore(filepath.Join(keystoreDir, cmsKeystoreName), cmsKeystore.Password)
|
||||||
err = cmsKeystore.Keystore.Create()
|
err = cmsKeystore.Keystore.Create()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return TLSStore{cmsKeystore, p12Truststore}, fmt.Errorf("Failed to create CMS Keystore: %v", err)
|
return TLSStore{cmsKeystore, p12Truststore}, fmt.Errorf("Failed to create CMS Keystore: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the PKCS#12 Truststore
|
// Create the PKCS#12 Truststore (if required)
|
||||||
p12Truststore.Keystore = keystore.NewPKCS12KeyStore(filepath.Join(keystoreDirDefault, p12TruststoreName), p12Truststore.Password)
|
if p12TruststoreRequired {
|
||||||
err = p12Truststore.Keystore.Create()
|
p12Truststore.Keystore = keystore.NewPKCS12KeyStore(filepath.Join(keystoreDir, p12TruststoreName), p12Truststore.Password)
|
||||||
if err != nil {
|
err = p12Truststore.Keystore.Create()
|
||||||
return TLSStore{cmsKeystore, p12Truststore}, fmt.Errorf("Failed to create PKCS#12 Truststore: %v", err)
|
if err != nil {
|
||||||
|
return TLSStore{cmsKeystore, p12Truststore}, fmt.Errorf("Failed to create PKCS#12 Truststore: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return TLSStore{cmsKeystore, p12Truststore}, nil
|
return TLSStore{cmsKeystore, p12Truststore}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// generateHAKeystore creates the CMS Keystore for Native HA replication
|
|
||||||
func generateHAKeystore() (TLSStore, error) {
|
|
||||||
var cmsKeystore KeyStoreData
|
|
||||||
|
|
||||||
// Generate a pasword for use with the CMS Keystore
|
|
||||||
pw := generateRandomPassword()
|
|
||||||
cmsKeystore.Password = pw
|
|
||||||
|
|
||||||
// Create the Keystore directory - if it does not already exist
|
|
||||||
// #nosec G301 - write group permissions are required
|
|
||||||
err := os.MkdirAll(keystoreDirHA, 0770)
|
|
||||||
if err != nil {
|
|
||||||
return TLSStore{Keystore: cmsKeystore}, fmt.Errorf("Failed to create HA Keystore directory: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the CMS Keystore
|
|
||||||
cmsKeystore.Keystore = keystore.NewCMSKeyStore(filepath.Join(keystoreDirHA, cmsKeystoreName), cmsKeystore.Password)
|
|
||||||
err = cmsKeystore.Keystore.Create()
|
|
||||||
if err != nil {
|
|
||||||
return TLSStore{Keystore: cmsKeystore}, fmt.Errorf("Failed to create CMS Keystore: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return TLSStore{Keystore: cmsKeystore}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// processKeys processes all keys - adding them to the CMS KeyStore
|
// processKeys processes all keys - adding them to the CMS KeyStore
|
||||||
func processKeys(tlsStore *TLSStore, keystoreDir string, keyDir string) (string, error) {
|
func processKeys(tlsStore *TLSStore, keystoreDir string, keyDir string) (string, error) {
|
||||||
|
|
||||||
@@ -273,7 +243,7 @@ func processKeys(tlsStore *TLSStore, keystoreDir string, keyDir string) (string,
|
|||||||
// Import the new PKCS#12 Keystore into the CMS Keystore
|
// Import the new PKCS#12 Keystore into the CMS Keystore
|
||||||
err = tlsStore.Keystore.Keystore.Import(filepath.Join(keystoreDir, keySet.Name()+".p12"), tlsStore.Keystore.Password)
|
err = tlsStore.Keystore.Keystore.Import(filepath.Join(keystoreDir, keySet.Name()+".p12"), tlsStore.Keystore.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("Failed tp import keys from %s into CMS Keystore: %v", filepath.Join(keystoreDir, keySet.Name()+".p12"), err)
|
return "", fmt.Errorf("Failed to import keys from %s into CMS Keystore: %v", filepath.Join(keystoreDir, keySet.Name()+".p12"), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Relabel the certificate in the CMS Keystore
|
// Relabel the certificate in the CMS Keystore
|
||||||
@@ -292,7 +262,7 @@ func processKeys(tlsStore *TLSStore, keystoreDir string, keyDir string) (string,
|
|||||||
return keyLabel, nil
|
return keyLabel, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// processTrustCertificates processes all trust certificates - adding them to the CMS KeyStore & PKCS#12 Truststore
|
// processTrustCertificates processes all trust certificates - adding them to the CMS KeyStore & PKCS#12 Truststore (if required)
|
||||||
func processTrustCertificates(tlsStore *TLSStore, trustDir string) error {
|
func processTrustCertificates(tlsStore *TLSStore, trustDir string) error {
|
||||||
|
|
||||||
// Process all trust certiifcates
|
// Process all trust certiifcates
|
||||||
@@ -324,10 +294,12 @@ func processTrustCertificates(tlsStore *TLSStore, trustDir string) error {
|
|||||||
return fmt.Errorf("Failed to add to know certificates for CMS Keystore")
|
return fmt.Errorf("Failed to add to know certificates for CMS Keystore")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add to known certificates for the PKCS#12 Truststore
|
if tlsStore.Truststore.Keystore != nil {
|
||||||
err = addToKnownCertificates(block, &tlsStore.Truststore, true)
|
// Add to known certificates for the PKCS#12 Truststore
|
||||||
if err != nil {
|
err = addToKnownCertificates(block, &tlsStore.Truststore, true)
|
||||||
return fmt.Errorf("Failed to add to know certificates for PKCS#12 Truststore")
|
if err != nil {
|
||||||
|
return fmt.Errorf("Failed to add to know certificates for PKCS#12 Truststore")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -335,8 +307,8 @@ func processTrustCertificates(tlsStore *TLSStore, trustDir string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add all trust certificates to PKCS#12 Truststore
|
// Add all trust certificates to PKCS#12 Truststore (if required)
|
||||||
if len(tlsStore.Truststore.TrustedCerts) > 0 {
|
if tlsStore.Truststore.Keystore != nil && len(tlsStore.Truststore.TrustedCerts) > 0 {
|
||||||
err = addCertificatesToTruststore(&tlsStore.Truststore)
|
err = addCertificatesToTruststore(&tlsStore.Truststore)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -438,7 +410,7 @@ func processCertificates(keyDir string, keySetName, keyPrefix string, keys []os.
|
|||||||
return nil, nil, fmt.Errorf("Failed to add to know certificates for CMS Keystore")
|
return nil, nil, fmt.Errorf("Failed to add to know certificates for CMS Keystore")
|
||||||
}
|
}
|
||||||
|
|
||||||
if p12Truststore != nil {
|
if p12Truststore.Keystore != nil {
|
||||||
// Add to known certificates for the PKCS#12 Truststore
|
// Add to known certificates for the PKCS#12 Truststore
|
||||||
err = addToKnownCertificates(block, p12Truststore, true)
|
err = addToKnownCertificates(block, p12Truststore, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -991,7 +991,7 @@ func TestMQIniMergeOnTheSameVolumeButTwoContainers(t *testing.T) {
|
|||||||
RUN chmod 0660 /etc/mqm/test1.ini
|
RUN chmod 0660 /etc/mqm/test1.ini
|
||||||
USER 1001`, imageName())},
|
USER 1001`, imageName())},
|
||||||
{"test1.ini",
|
{"test1.ini",
|
||||||
"Log:\n LogFilePages=5000"},
|
"Log:\n LogBufferPages=128"},
|
||||||
}
|
}
|
||||||
|
|
||||||
secondImage := createImage(t, cli, filesSecondContainer)
|
secondImage := createImage(t, cli, filesSecondContainer)
|
||||||
@@ -1011,7 +1011,7 @@ func TestMQIniMergeOnTheSameVolumeButTwoContainers(t *testing.T) {
|
|||||||
waitForReady(t, cli, ctr2.ID)
|
waitForReady(t, cli, ctr2.ID)
|
||||||
|
|
||||||
_, test2 := execContainer(t, cli, ctr2.ID, "", []string{"bash", "-c", catIniFileCommand})
|
_, test2 := execContainer(t, cli, ctr2.ID, "", []string{"bash", "-c", catIniFileCommand})
|
||||||
changedStanza := strings.Contains(test2, "LogFilePages=5000")
|
changedStanza := strings.Contains(test2, "LogBufferPages=128")
|
||||||
//check if stanza that was merged in the first container doesnt exist in this one.
|
//check if stanza that was merged in the first container doesnt exist in this one.
|
||||||
firstMergedStanza := strings.Contains(test2, "ApplicationTrace:\n ApplName=amqsact*\n Trace=OFF")
|
firstMergedStanza := strings.Contains(test2, "ApplicationTrace:\n ApplName=amqsact*\n Trace=OFF")
|
||||||
|
|
||||||
|
|||||||
@@ -826,12 +826,23 @@ func copyFromContainer(t *testing.T, cli *client.Client, id string, file string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getPort(t *testing.T, cli *client.Client, ID string, port int) string {
|
func getPort(t *testing.T, cli *client.Client, ID string, port int) string {
|
||||||
i, err := cli.ContainerInspect(context.Background(), ID)
|
var inspectInfo types.ContainerJSON
|
||||||
if err != nil {
|
var err error
|
||||||
t.Fatal(err)
|
for attemptsRemaining := 3; attemptsRemaining > 0; attemptsRemaining-- {
|
||||||
|
inspectInfo, err = cli.ContainerInspect(context.Background(), ID)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
portNat := nat.Port(fmt.Sprintf("%d/tcp", port))
|
||||||
|
if inspectInfo.NetworkSettings.Ports[portNat] == nil || len(inspectInfo.NetworkSettings.Ports[portNat]) == 0 {
|
||||||
|
t.Log("Container port not yet bound")
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
return inspectInfo.NetworkSettings.Ports[portNat][0].HostPort
|
||||||
}
|
}
|
||||||
portNat := nat.Port(fmt.Sprintf("%d/tcp", port))
|
t.Fatal("Failed to get port")
|
||||||
return i.NetworkSettings.Ports[portNat][0].HostPort
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func countLines(t *testing.T, r io.Reader) int {
|
func countLines(t *testing.T, r io.Reader) int {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
module github.com/ibm-messaging/mq-container/test/docker
|
module github.com/ibm-messaging/mq-container/test/docker
|
||||||
|
|
||||||
go 1.14
|
go 1.15
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect
|
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect
|
||||||
|
|||||||
@@ -15,23 +15,24 @@
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
# Application build environment (Maven)
|
# Application build environment (Maven)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
FROM docker.io/maven:3-ibmjava as builder
|
FROM registry.redhat.io/ubi8/openjdk-8 as builder
|
||||||
COPY pom.xml /usr/src/mymaven/
|
COPY pom.xml .
|
||||||
WORKDIR /usr/src/mymaven
|
#WORKDIR /usr/src/mymaven
|
||||||
# Download dependencies separately, so Docker caches them
|
# Download dependencies separately, so Docker caches them
|
||||||
RUN mvn dependency:go-offline install
|
RUN mvn dependency:go-offline install
|
||||||
# Copy source
|
# Copy source
|
||||||
COPY src /usr/src/mymaven/src
|
COPY src .
|
||||||
# Run the main build
|
# Run the main build
|
||||||
RUN mvn --offline install
|
RUN mvn --offline install
|
||||||
# Print a list of all the files (useful for debugging)
|
# Print a list of all the files (useful for debugging)
|
||||||
RUN find /usr/src/mymaven
|
RUN find .
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Application runtime (JRE only, no build environment)
|
# Application runtime (JRE only, no build environment)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
FROM docker.io/ibmjava:8-jre
|
# OpenJDK is not technically supported with the MQ client, but is good enough for these tests
|
||||||
COPY --from=builder /usr/src/mymaven/target/*.jar /opt/app/
|
FROM registry.redhat.io/ubi8/openjdk-8-runtime
|
||||||
COPY --from=builder /usr/src/mymaven/target/lib/*.jar /opt/app/
|
COPY --from=builder /home/jboss/target/*.jar /opt/app/
|
||||||
|
COPY --from=builder /home/jboss/target/lib/*.jar /opt/app/
|
||||||
USER 1001
|
USER 1001
|
||||||
ENTRYPOINT ["java", "-classpath", "/opt/app/*", "org.junit.platform.console.ConsoleLauncher", "-p", "com.ibm.mqcontainer.test", "--details", "verbose"]
|
ENTRYPOINT ["java", "-classpath", "/opt/app/*", "org.junit.platform.console.ConsoleLauncher", "-p", "com.ibm.mqcontainer.test", "--details", "verbose"]
|
||||||
|
|||||||
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash -ex
|
||||||
# -*- mode: sh -*-
|
# -*- mode: sh -*-
|
||||||
# © Copyright IBM Corporation 2018
|
# © Copyright IBM Corporation 2018, 2021
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
@@ -23,6 +23,7 @@ PASSWORD=passw0rd
|
|||||||
openssl req \
|
openssl req \
|
||||||
-newkey rsa:2048 -nodes -keyout ${KEY} \
|
-newkey rsa:2048 -nodes -keyout ${KEY} \
|
||||||
-subj "/CN=localhost" \
|
-subj "/CN=localhost" \
|
||||||
|
-addext "subjectAltName = DNS:localhost" \
|
||||||
-x509 -days 3650 -out ${CERT}
|
-x509 -days 3650 -out ${CERT}
|
||||||
|
|
||||||
# Add the key and certificate to a PKCS #12 key store, for the server to use
|
# Add the key and certificate to a PKCS #12 key store, for the server to use
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIICpDCCAYwCCQC6vpJFnfYO6TANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
|
MIICwzCCAaugAwIBAgIJAKnwG0VGiDelMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
|
||||||
b2NhbGhvc3QwHhcNMTkwMzIxMTYxMzUxWhcNMjkwMzE4MTYxMzUxWjAUMRIwEAYD
|
BAMMCWxvY2FsaG9zdDAeFw0yMTA5MDYxNTIyMDlaFw0zMTA5MDQxNTIyMDlaMBQx
|
||||||
VQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCu
|
EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||||
48qtIDwmihFqj2HY3dZjPfROA1MJ+D0c6aEA08ooOczthLB7XdZBQDapj8LFldyt
|
ggEBALLmDX3OB/4DlzJzKz/Edc5qVdjdIN/u8pApSQPevT0mAsSK1uw2MObeOo4C
|
||||||
4ZMbTkqtF5QtPXmJY0wi39foLYlcGXPL1b7y3mypaFou88BcSM3VmfILKXhNeAlt
|
DCBmabYeuvGzZ4t3SiejdsHK+qAYMFW51lxTbulv5kUPvTBOY2JCENkVDFjqcK8S
|
||||||
rXevnuT5kDU7sLVgKGhGwas20T1MU7d0I3bQ5z5c7egL76Hk9fYucjN6RkbwlrJ3
|
9ItI/UzTmnBolvZmUKzROHzA/pFb/jkhlzqJO+TqIBXKLF5gdFFTiHHcqfoUyVOV
|
||||||
TrCXrGIziofn3Zq1t51ygv21c80JD3XJ44YmuCrede4rhOS/4NpwRuZyiwpJ6tlv
|
n+49V8z6W2rokz4QIWa5Dlh6VS1B6VXdihJv5P9HV8P8FOtefhA85yaSVKlFS/AC
|
||||||
0L0QSDGCmt2JT3ty28UAsGznFzC5Qu9KyaR+9Gk4aftiyKxrYWZkgtJmMRU+C1X2
|
XRb5FmtmYHBnghLktHS71s/KcPeX27Q1NcKhmZMvHRH95hqEcP25S6SGu69eiCLk
|
||||||
kFLOHsucGmJswjwubSR7AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAEdlmXVGy86P
|
xpbJKqG3fntfooLUDfR2PHQUJ7UCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxo
|
||||||
XIX5a4ZmHQ5Ns4wm7rY8vzUxlymEQ86En1PN1zAO9gV94tLyNeMptjsFEEo/uJhC
|
b3N0MA0GCSqGSIb3DQEBCwUAA4IBAQBamIH23oDh1XxOeMPUEyPLHm5M8LM8FNhT
|
||||||
Yvg3l5TIr/WCiY2+2XsSHvnbXrlbF3S0fRHa9VaCMRKjzRT68uq2Y891906YGtUE
|
GEpf1ICy4TSLipSFhIs3hGzVt22zBBzU59apQ8rXUME5SK+9PLag/t/48rG1SfUA
|
||||||
m6fCjHqVzX8qaplDf79aVkPydYaYOIZ1a/mCfQcD9XMZ/v5zI9IUDhdoq97bgPhB
|
VyYvaeu/cA5NQMWwuyCLqZL1MWn+BLsdAiNtbNHANesnl0i+vUb0GPzSP8soe3PP
|
||||||
gBOzWLI+hkzyU8jxKAFw1Hwi9lD/P6RXL5arNb/+arOgA3vTW+xGWGevgjVK1Ay9
|
N7Fh8SO3Qq6e9zT3iE2tP2OFxzcpg538Xn3qoVPJwmLIfBtvsiK07zqAWdqBWtt6
|
||||||
81beWiQmn0KbeLZxj+WJ9Nntlf1M4EqPYgsSYs/IlJTYS8W1B0mDJEoovPdFTryY
|
cBXyagnmgKvOyv6sKAlTpwP9HqVem3XxZVrhm1KiPHs4Dnks6e79txmB8lqzvWu5
|
||||||
GyIuQEVcjUE=
|
tu4h2ePGJjqUy5JkkoDY0j6hALwEe3ZXBvJ6XUQDi9Hou2k+MaQd
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
-----BEGIN PRIVATE KEY-----
|
||||||
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
|
||||||
+fyiT2oSPZeHSjQE9iIW3OY=
|
1lq8cwizfwNgt8ldFFDDRvw=
|
||||||
-----END PRIVATE KEY-----
|
-----END PRIVATE KEY-----
|
||||||
|
|||||||
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# © Copyright IBM Corporation 2019, 2020
|
# © Copyright IBM Corporation 2019, 2021
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
@@ -32,11 +32,9 @@ function push_developer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function push_production {
|
function push_production {
|
||||||
if [[ "$ARCH" = "amd64" || "$ARCH" = "s390x" ]] ; then
|
echo 'Pushing Production image...' && echo -en 'travis_fold:start:push-advancedserver\\r'
|
||||||
echo 'Pushing Production image...' && echo -en 'travis_fold:start:push-advancedserver\\r'
|
make push-advancedserver
|
||||||
make push-advancedserver
|
echo -en 'travis_fold:end:push-advancedserver\\r'
|
||||||
echo -en 'travis_fold:end:push-advancedserver\\r'
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# call relevant push function
|
# call relevant push function
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ set -e
|
|||||||
|
|
||||||
if [ "$(uname -m)" = "x86_64" ] ; then export ARCH="amd64" ; else export ARCH=$(uname -m) ; fi
|
if [ "$(uname -m)" = "x86_64" ] ; then export ARCH="amd64" ; else export ARCH=$(uname -m) ; fi
|
||||||
|
|
||||||
|
# if DOCKER_USER is set, authenticate with docker.io to mitigate rate limit (https://www.docker.com/increase-rate-limits)
|
||||||
|
if [ -n "$DOCKER_USER" ] ; then echo 'Authenticating with docker.io...' && docker login -u $DOCKER_USER -p $DOCKER_PASS docker.io ; fi
|
||||||
|
|
||||||
if [ "$PUSH_MANIFEST_ONLY" = true ] ; then
|
if [ "$PUSH_MANIFEST_ONLY" = true ] ; then
|
||||||
echo 'Retrieving remote tagcache' && echo -en 'travis_fold:start:retrieve-tag-cache\\r'
|
echo 'Retrieving remote tagcache' && echo -en 'travis_fold:start:retrieve-tag-cache\\r'
|
||||||
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/${TAGCACHE_FILE} -l ./.tagcache --get
|
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/${TAGCACHE_FILE} -l ./.tagcache --get
|
||||||
|
|||||||
Reference in New Issue
Block a user