name: CI on: push: branches: - 'blackduck-image' # - $default-branch paths-ignore: - 'VERSION' - '.bumpversion.cfg' pull_request: branches: [ edi-foundation-integration ] workflow_dispatch: jobs: # Wokflow-Queue: # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v2 # - uses: ahmadnassri/action-workflow-queue@v1 # Init: # needs: [Wokflow-Queue] # runs-on: ubuntu-20.04 # outputs: # Version: ${{ steps.setVariables.outputs.version }} # steps: # - uses: actions/checkout@v2 # with: # token: ${{ secrets.ADMIN_TOKEN }} # - name: Extract branch name # uses: vazco/github-actions-branch-name@v1 # id: branch # - name: Bump version # if: github.ref == 'refs/heads/edi-foundation-integration' # id: setVariables # run: | # sudo apt update # sudo apt install bumpversion # bumpversion patch # new_version=`cat VERSION` # echo "New version is: $new_version" # echo "version=$new_version" >> $GITHUB_OUTPUT # git config --global user.name "CI Build" # git config --global user.email "ci.build@philips.com" # git commit -am "Bump version $new_version" # git push --force # unit-test: # needs: [Init] # env: # COVER: true # runs-on: ubuntu-20.04 # steps: # - name: Check out code # uses: actions/checkout@v2 # - name: Set up Go 1.16 # uses: actions/setup-go@v2 # with: # go-version: 1.16.x # id: go # - name: Get dependencies # run: | # curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.36.0 # curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter # chmod +x ./cc-test-reporter # - name: Verify Code Generation # run: | # make verify-generate # - name: Lint # run: | # make lint # - name: Build # run: | # make build # - name: Test # env: # CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} # run: | # ./.github/workflows/test.sh # Fortify: # needs: [Init] # runs-on: builder_blr_2 # steps: # - name: checkout # uses: actions/checkout@v2 # - name: Fortify scan # run: powershell -ExecutionPolicy RemoteSigned -NoExit -File ${{ github.workspace }}\build\ps\Invoke-FortifyScan.ps1 -PublishAuthToken ${{ secrets.FORTIFY_TOKEN }} # CodeAnalysis: # runs-on: builder_blr # needs: [Init] # steps: # - uses: actions/checkout@v2 # - name: Set up Go 1.16 # uses: actions/setup-go@v2 # with: # go-version: 1.16.x # id: go # - name: coverage # run: | # go test -coverprofile=${{ github.workspace }}\coverage.out # - name: sonar # run: | # D:\SonarQube\Sonar-Scanner\sonar-scanner-cli-4.4.0.2170-windows\sonar-scanner-4.4.0.2170-windows\bin\sonar-scanner.bat -D"sonar.projectKey=EDI-hds-oauth2-proxy" -D"sonar.sources=." -D"sonar.tests=." -D"sonar.go.coverage.reportPaths=${{ github.workspace }}\coverage.out" -D"sonar.host.url=https://sonarqube.ta.philips.com/" -D"sonar.login=${{ secrets.SONAR_TOKEN }}" Build: #needs: [Init] runs-on: ubuntu-20.04 outputs: oauth2proxyPRTag: ${{ steps.setVariables.outputs.prTag }} oauth2proxyCITag: ${{ steps.setVariables.outputs.betaTag }} steps: - uses: actions/checkout@v2 - name: Import Secrets id: secrets uses: hashicorp/vault-action@v2.3.1 with: url: ${{ secrets.VAULT_HOST }} method: approle roleId: ${{ secrets.VAULT_ROLE_ID }} secretId: ${{ secrets.VAULT_SECRET_ID }} exportEnv: true secrets: | devops/data/docker-repos/hsdp-edi endPoint | HSDP_DOCKER_REGISTRY ; devops/data/docker-repos/hsdp-edi user | HSDP_DOCKER_USER ; devops/data/docker-repos/hsdp-edi password | HSDP_DOCKER_PASSWORD ; devops/data/github/users/sal-devops token | GITHUB_TOKEN ; - name: Extract branch name uses: vazco/github-actions-branch-name@v1 id: branch - name: Set env variables run: | new_version=${{ needs.Init.outputs.Version }} pr_tag="PR-${{ github.run_id }}" beta_tag="${new_version}-beta" echo "New version is: $new_version" echo "VERSION=$new_version" >> "$GITHUB_ENV" echo "CI_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:${beta_tag}" >> "$GITHUB_ENV" echo "PR_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:${pr_tag}" >> "$GITHUB_ENV" echo "prTag=${pr_tag}" >> $GITHUB_OUTPUT echo "betaTag=${beta_tag}" >> $GITHUB_OUTPUT echo "${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:${pr_tag}" > /tmp/output.txt - name: Image tag run: | cat /tmp/output.txt # - name: Docker Build # run: | # make docker # - name: Docker login # run: | # docker login --username '${{ secrets.DOCKER_USER }}' --password '${{ secrets.DOCKER_PSWD }}' '${{ secrets.DOCKER_REPO }}' # - name: Docker tag # run: | # docker tag '${{ secrets.DOCKER_REPO }}'/oauth2-proxy:latest ${{ env.PR_IMAGE }} # - name: PR Image Docker Push # #if: github.event_name == 'pull_request' # run: | # docker push ${{ env.PR_IMAGE }} # - name: Docker Push # if: github.ref == 'refs/heads/edi-foundation-integration' # run: | # docker tag ${{ env.PR_IMAGE }} ${{ env.CI_IMAGE }} # docker push ${{ env.CI_IMAGE }} # - name: CI Image Artifact # if: github.ref == 'refs/heads/edi-foundation-integration' # uses: actions/upload-artifact@v2 # with: # name: Image tag # path: /tmp/output.txt # if-no-files-found: error # Blackduck: # needs: [Build] # runs-on: builder_blr # steps: # - name: checkout # uses: actions/checkout@v2 # - name: Set up JDK 11 # uses: actions/setup-java@v1 # with: # java-version: 11 # - name: Pull PR Docker Image # #if: github.event_name == 'pull_request' # run: | # docker login docker.na1.hsdp.io --username '${{ secrets.DOCKER_USER }}' --password '${{ secrets.DOCKER_PSWD }}' # docker pull docker.na1.hsdp.io/edi/edi-foundation-oauth2-proxy:${{ needs.Build.outputs.oauth2proxyPRTag }} # - name: PR Blackduck Image Scan # #if: github.event_name == 'pull_request' # run: | # java -jar D:\synopsys-detect-8.3.0.jar --detect.project.name=SA_edifoundation-oauth2proxy --detect.project.version.name=1.0 --blackduck.url=https://blackduck.philips.com/ --detect.go.path="C:\Program Files\Go\bin\go.exe" --blackduck.trust.cert=true --blackduck.api.token=NmNjYmM4ODgtZjc0Ni00NTIwLTk3NDQtMjdiNzU1ZmFiYmE0OjBjNGQyODU1LTU1MDctNDkwMC1hNzI1LTJiZDg3YWZhZjJmMQ== --blackduck.proxy.host=apac.zscaler.philips.com --blackduck.proxy.port=10015 --blackduck.proxy.ignored.hosts=blackduck.philips.com --detect.tools.excluded=BINARY_SCAN --detect.docker.image=docker.na1.hsdp.io/edi/edi-foundation-oauth2-proxy:${{ needs.Build.outputs.oauth2proxyPRTag }} --detect.blackduck.signature.scanner.local.path="C:\Users\ing07422\blackduck\tools\Black_Duck_Scan_Installation\scan.cli-2022.7.2" # - name: Pull CI Docker Image # if: github.ref == 'refs/heads/edi-foundation-integration' # run: | # docker login docker.na1.hsdp.io --username '${{ secrets.DOCKER_USER }}' --password '${{ secrets.DOCKER_PSWD }}' # docker pull docker.na1.hsdp.io/edi/edi-foundation-oauth2-proxy:${{ needs.Build.outputs.oauth2proxyCITag }} # - name: CI Blackduck Image Scan # if: github.ref == 'refs/heads/edi-foundation-integration' # run: | # java -jar D:\synopsys-detect-8.3.0.jar --detect.project.name=SA_edifoundation-oauth2proxy --detect.project.version.name=1.0 --blackduck.url=https://blackduck.philips.com/ --detect.go.path="C:\Program Files\Go\bin\go.exe" --blackduck.trust.cert=true --blackduck.api.token=NmNjYmM4ODgtZjc0Ni00NTIwLTk3NDQtMjdiNzU1ZmFiYmE0OjBjNGQyODU1LTU1MDctNDkwMC1hNzI1LTJiZDg3YWZhZjJmMQ== --blackduck.proxy.host=apac.zscaler.philips.com --blackduck.proxy.port=10015 --blackduck.proxy.ignored.hosts=blackduck.philips.com --detect.tools.excluded=BINARY_SCAN --detect.docker.image=docker.na1.hsdp.io/edi/edi-foundation-oauth2-proxy:${{ needs.Build.outputs.oauth2proxyCITag }} --detect.blackduck.signature.scanner.local.path="C:\Users\ing07422\blackduck\tools\Black_Duck_Scan_Installation\scan.cli-2022.7.2" # PR_Deploy_Test_HDS_AUTH_GATEWAY: # if: github.event_name == 'pull_request' # needs: [Build, Fortify, unit-test, CodeAnalysis] # uses: ./.github/workflows/deploy-hds-auth-gateway.yaml # with: # OAUTH2_PROXY_IMAGE: ${{ needs.Build.outputs.oauth2proxyPRTag }} # secrets: # VAULT_HOST: ${{ secrets.VAULT_HOST }} # VAULT_ROLE_ID: ${{ secrets.VAULT_ROLE_ID }} # VAULT_SECRET_ID: ${{ secrets.VAULT_SECRET_ID }} # CI_Deploy_Test_HDS_AUTH_GATEWAY: # if: github.ref == 'refs/heads/edi-foundation-integration' # needs: [Build, Fortify, unit-test, CodeAnalysis] # uses: ./.github/workflows/api-gw-integrated-test.yaml # with: # OAUTH2_PROXY_IMAGE: ${{ needs.Build.outputs.oauth2proxyCITag }} # secrets: # VAULT_HOST: ${{ secrets.VAULT_HOST }} # VAULT_ROLE_ID: ${{ secrets.VAULT_ROLE_ID }} # VAULT_SECRET_ID: ${{ secrets.VAULT_SECRET_ID }} # Promote_Version: # needs: [CI_Deploy_Test_HDS_AUTH_GATEWAY] # if: github.ref == 'refs/heads/edi-foundation-integration' # runs-on: ubuntu-20.04 # outputs: # versionTag: ${{ steps.setVariables.outputs.versionTag }} # steps: # - uses: actions/checkout@v2 # - name: Import Secrets # id: secrets # uses: hashicorp/vault-action@v2.3.1 # with: # url: ${{ secrets.VAULT_HOST }} # method: approle # roleId: ${{ secrets.VAULT_ROLE_ID }} # secretId: ${{ secrets.VAULT_SECRET_ID }} # exportEnv: true # secrets: | # devops/data/docker-repos/hsdp-edi endPoint | HSDP_DOCKER_REGISTRY ; # devops/data/docker-repos/hsdp-edi user | HSDP_DOCKER_USER ; # devops/data/docker-repos/hsdp-edi password | HSDP_DOCKER_PASSWORD ; # - name: Set env variables # id: setVariables # run: | # sudo apt update # sudo apt install bumpversion # bumpversion patch # new_version=`cat VERSION` # echo "New version is: $new_version" # echo "CI_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:${new_version}-beta" >> "$GITHUB_ENV" # echo "RC_IMAGE=docker.na1.hsdp.io/edisp-releases/edi-foundation-oauth2-proxy:${new_version}-rc" >> "$GITHUB_ENV" # echo "versionTag=${new_version}-rc" >> $GITHUB_OUTPUT # echo "${new_version}-rc" # - name: Docker login # run: | # docker login --username '${{ secrets.DOCKER_USER }}' --password '${{ secrets.DOCKER_PSWD }}' '${{ secrets.DOCKER_REPO }}' # - name: Docker Push # run: | # docker pull ${{ env.CI_IMAGE }} # docker tag ${{ env.CI_IMAGE }} ${{ env.RC_IMAGE }} # docker push ${{ env.RC_IMAGE }} # Replace_OAuth2_Proxy_Tag_in_Terraform_API_Gateway: # needs: [Promote_Version] # if: github.ref == 'refs/heads/edi-foundation-integration' # uses: ./.github/workflows/update-oauth2-proxy-version-at-api-gw.yaml # with: # OAUTH2_PROXY_IMAGE: ${{ needs.Promote_Version.outputs.versionTag }} # secrets: # VAULT_HOST: ${{ secrets.VAULT_HOST }} # VAULT_ROLE_ID: ${{ secrets.VAULT_ROLE_ID }} # VAULT_SECRET_ID: ${{ secrets.VAULT_SECRET_ID }}