on: push: tags: - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 name: Create prerelease w/ binaries and docker image jobs: build-push-porter: runs-on: ubuntu-latest steps: - name: Get tag name id: tag_name run: | tag=${GITHUB_TAG/refs\/tags\//} echo ::set-output name=tag::$tag env: GITHUB_TAG: ${{ github.ref }} - name: Checkout uses: actions/checkout@v2.3.4 - name: Setup docker uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Write Dashboard Environment Variables run: | cat >./dashboard/.env <./dashboard/.env <./dashboard/.env < ./porter.gon.json - name: Create a portersvr.gon.json file run: | echo " { \"source\": [\"./portersvr\"], \"bundle_id\": \"cli.portersvr\", \"apple_id\": { \"password\": \"@env:AC_PASSWORD\" }, \"sign\": { \"application_identity\": \"${{ secrets.AC_APPLICATION_IDENTITY }}\" }, \"zip\": { \"output_path\": \"./release/portersvr_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip\" } } " > ./portersvr.gon.json - name: Create a docker-credential-porter.gon.json file run: | echo " { \"source\": [\"./docker-credential-porter\"], \"bundle_id\": \"cli.docker-credential-porter\", \"apple_id\": { \"password\": \"@env:AC_PASSWORD\" }, \"sign\": { \"application_identity\": \"${{ secrets.AC_APPLICATION_IDENTITY }}\" }, \"zip\": { \"output_path\": \"./release/docker-credential-porter_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip\" } } " > ./docker-credential-porter.gon.json - name: Sign the mac binaries with Gon env: AC_USERNAME: ${{ secrets.AC_USERNAME }} AC_PASSWORD: ${{ secrets.AC_PASSWORD }} run: | gon ./porter.gon.json & gon ./portersvr.gon.json & gon ./docker-credential-porter.gon.json & wait - name: Upload binaries uses: actions/upload-artifact@v2 with: path: ./release name: mac-binaries retention-days: 1 release: name: Zip binaries, create release and upload assets runs-on: ubuntu-latest needs: - notarize - build-linux steps: - name: Get tag name id: tag_name run: | tag=${GITHUB_TAG/refs\/tags\//} echo ::set-output name=tag::$tag env: GITHUB_TAG: ${{ github.ref }} - name: Download binaries uses: actions/download-artifact@v2 with: name: linux-binaries path: release/linux - name: Download binaries uses: actions/download-artifact@v2 with: name: static-binaries path: release/static - name: Download binaries uses: actions/download-artifact@v2 with: name: mac-binaries path: release/darwin - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} draft: false prerelease: true - name: Upload Linux CLI Release Asset id: upload-linux-cli-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TAG: ${{ github.ref }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./release/linux/porter_${{steps.tag_name.outputs.tag}}_Linux_x86_64.zip asset_name: porter_${{steps.tag_name.outputs.tag}}_Linux_x86_64.zip asset_content_type: application/zip - name: Upload Linux Server Release Asset id: upload-linux-server-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TAG: ${{ github.ref }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./release/linux/portersvr_${{steps.tag_name.outputs.tag}}_Linux_x86_64.zip asset_name: portersvr_${{steps.tag_name.outputs.tag}}_Linux_x86_64.zip asset_content_type: application/zip - name: Upload Linux Docker Credential Release Asset id: upload-linux-docker-cred-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TAG: ${{ github.ref }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./release/linux/docker-credential-porter_${{steps.tag_name.outputs.tag}}_Linux_x86_64.zip asset_name: docker-credential-porter_${{steps.tag_name.outputs.tag}}_Linux_x86_64.zip asset_content_type: application/zip - name: Upload Darwin CLI Release Asset id: upload-darwin-cli-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TAG: ${{ github.ref }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./release/darwin/porter_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip asset_name: porter_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip asset_content_type: application/zip - name: Upload Darwin Server Release Asset id: upload-darwin-server-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TAG: ${{ github.ref }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./release/darwin/portersvr_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip asset_name: portersvr_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip asset_content_type: application/zip - name: Upload Darwin Docker Credential Release Asset id: upload-darwin-docker-cred-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TAG: ${{ github.ref }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./release/darwin/docker-credential-porter_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip asset_name: docker-credential-porter_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip asset_content_type: application/zip - name: Upload Static Release Asset id: upload-static-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TAG: ${{ github.ref }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./release/static/static_${{steps.tag_name.outputs.tag}}.zip asset_name: static_${{steps.tag_name.outputs.tag}}.zip asset_content_type: application/zip build-push-docker-cli: name: Build a new porter-cli docker image runs-on: ubuntu-latest needs: release steps: - name: Get tag name id: tag_name run: | tag=${GITHUB_TAG/refs\/tags\//} echo ::set-output name=tag::$tag env: GITHUB_TAG: ${{ github.ref }} - name: Checkout uses: actions/checkout@v2.3.4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.ECR_AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.ECR_AWS_SECRET_ACCESS_KEY }} aws-region: us-east-2 - name: Login to ECR public id: login-ecr run: | aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/o1j4x7p4 - name: Build run: | docker build ./services/porter_cli_container \ -t public.ecr.aws/o1j4x7p4/porter-cli:${{steps.tag_name.outputs.tag}} \ -f ./services/porter_cli_container/Dockerfile \ --build-arg VERSION=${{steps.tag_name.outputs.tag}} \ --build-arg SENTRY_DSN=${{secrets.SENTRY_DSN}} - name: Push run: | docker push public.ecr.aws/o1j4x7p4/porter-cli:${{steps.tag_name.outputs.tag}} update-porter-update-action: name: Update porter-update-action runs-on: ubuntu-latest needs: build-push-docker-cli steps: - name: Get tag name id: tag_name run: | tag=${GITHUB_TAG/refs\/tags\//} echo ::set-output name=tag::$tag env: GITHUB_TAG: ${{ github.ref }} - name: Push new branch with updated CLI run: | cd $GITHUB_WORKSPACE git clone https://portersupport:${{ secrets.PORTER_DEV_GITHUB_TOKEN }}@github.com/porter-dev/porter-update-action cd porter-update-action git checkout -B "${{steps.tag_name.outputs.tag}}" cat >Dockerfile <Dockerfile <